[英]Interactions between Expert Advisor and Indicators on MQL4
是否可以通過專家顧問讀取預建指標的變化(例如:其價值變化),當然 - 根據這些讀取自動進行交易?
負責執行此操作的功能是什么?
我試圖在谷歌上查找這個,但似乎我只能做跟蹤對象創建或刪除之類的事情......稱為 圖表事件......也許我錯過了什么?
MetaTrader4 終端是一個軟件平台,允許您啟動
1x
soloist Expert Advisor - 作為每個MT4.Graph的事件驅動代碼執行算法Nx
並發自定義指標- 每個MT4.Graph 的事件驅動受限代碼庫1x
soloist Script異步代碼執行單元這個清單很重要,因為除了這個之外,您沒有其他方法可以自動執行復雜的交易算法。
技術指標在一個公共線程下執行,這對實時魯棒性造成了限制,另外一些限制適用於可能在指標中編碼/編譯/執行的允許/禁止操作(所有這些都旨在避免任何和所有可能的阻塞情況(參考) . 所有人的單線程... ) )
這就是說,您可能已經注意到, Expert Advisor
和Technical Indicator
-s 都是外部同步的(暫時忘記非並行共享線程執行,由於資源/代碼執行調度具有主要的納秒級異步性)和綁定從外部發出anFxMarketEVENT
在到達的信號的形式(一次價格波動, MT4.Server
發送QUOTE
下行消息到MT4.Terminal
,也叫做蜱),其一旦接收(IF),觸發器MQL4
上代碼執行設施localhost
:
OnTick(){ ...}
# in case of Expert Advisor
OnCalculate(){...}
# in case of Custom Technical Indicator
直接地? 沒有任何。
間接? 您構建並負責注冊/監控此類值的變化(無論是在MQL4
域內部還是通過分布式處理模型在外部,包括GPU
集群,用於更苛刻的處理,其中內部共享線程執行無法滿足時間限制):
bool hasAnIndicatorChanged( double aTol = 0.00001 ){ // DERIVATION
static double prevVALUE = EMPTY_VALUE; // .DEF
double aNewVALUE = iBWMFI( _Symbol, // .SYM
PERIOD_CURRENT, // .PERIOD
0 // .HOT[0]
); // .STO "current"
if ( MathAbs( aNewVALUE - prevVALUE ) <= aTol ){
prevVALUE = aNewVALUE;
return( False ); // JIT/RET --> --> --> --> --> non-MISRA-C JIT/RET
}
else {
prevVALUE = aNewVALUE;
return( True ); // JIT/RET --> --> --> --> --> non-MISRA-C JIT/RET
}
}
一個可產生類似或瑣碎稍微復雜PID監視器和從詢問Expert Advisor
每次一個OnTick()
被調用(因此在不增加成本對准代碼執行與所述內部事件處理程序)。
void OnTick(){
if ( hasAnIndicatorChanged() ){
...
}
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.