Lir*_*anC 1 trading algorithmic-trading forex metatrader4 mql4
是否可以通过专家顾问读取预建指标的变化(例如:其价值变化),当然 - 根据这些读取自动进行交易?
负责执行此操作的功能是什么?
我试图在谷歌上查找这个,但似乎我只能做跟踪对象创建或删除之类的事情......称为图表事件......也许我错过了什么?
MetaTrader4 Terminal 是一个软件平台,允许您启动
1xsoloist Expert Advisor- 作为每个事件驱动的代码执行算法MT4.GraphNx并发Custom Indicator-s 每个事件驱动的受限代码库MT4.Graph1xScript每个单独的异步代码执行单元MT4.Graph这个清单很重要,因为除了这个之外,您没有其他方法可以自动执行复杂的交易算法。
技术指标在一个公共线程下执行,这对实时鲁棒性造成了限制,另外一些限制适用于可能在指标中编码/编译/执行的允许/禁止操作(所有这些都旨在避免任何和所有可能的阻塞情况(参考) . 所有人的单线程... ) )
这就是说,你可能已经注意到,这两个Expert Advisor和Technical Indicator-s在外部同步(忘了有关非平行的时刻,异步的,由于资源/代码执行调度主要纳秒范围内共享线程执行),并绑定到发行在外anFxMarketEVENT的到达信号的一种形式(一旦价格移动,MT4.Server就会向 发送QUOTE下游消息MT4.Terminal,也就是Tick),一旦(如果)收到,就会触发 上的MQL4代码执行设施localhost:
OnTick(){ ...} # in case of Expert AdvisorOnCalculate(){...} # in case of Custom Technical Indicator直接地?没有任何。
间接?您构建并负责注册/监视此类值的更改的那个(无论是在MQL4域内部还是通过分布式处理模型在外部,包括GPU-cluster 一个用于更苛刻的处理,其中内部共享线程执行无法满足时序要求约束):
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
}
}
Run Code Online (Sandbox Code Playgroud)
可以创建一个类似的微不足道或更复杂的 PID 监视器,并在Expert Advisor每次OnTick()调用an 时进行询问(从而使代码执行与内部事件处理程序保持一致,无需额外成本)。
void OnTick(){
if ( hasAnIndicatorChanged() ){
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2282 次 |
| 最近记录: |