是否可以通过专家顾问读取预建指标的变化(例如:其价值变化),当然 - 根据这些读数自动化交易?
负责这项工作的功能是什么?
我试图在Google上查看此内容,但似乎我只能执行跟踪对象创建或删除等操作...称为Chart Events ....也许我错过了什么?< / p>
答案 0 :(得分:4)
MetaTrader4终端是一个软件平台,可让您启动
1x
独奏 专家顾问 - 作为每个 的事件驱动的代码执行算法MT4.Graph 强> Nx
并发 自定义指标 -s事件驱动的受限制的代码库每 MT4 .Graph 强> 1x
soloist 脚本 每个 MT4.Graph 这个库存很重要,因为除了这个,你没有其他方法可以自动化复杂的交易算法化。
技术指标在一个共同线程下执行,这对实时稳健性提出了限制,并且一些限制适用于可能在指标中编码/编译/执行的允许/禁止操作(所有这些都旨在避免任何和所有可能的阻塞情况(参考所有人的solo-thread ...))
这说,您可能已经注意到,Expert Advisor
和Technical Indicator
- s都是外部同步的(暂时忘记非并行,共享线程执行与主要纳秒级别的异步性,因为资源/代码执行计划)并以到达信号的形式绑定到外部发布的 anFxMarketEVENT
(一旦价格移动,MT4.Server
发送 {{1} 1>}的下游邮件,即 勾选 ),一旦(如果)收到,则会触发 QUOTE
MT4.Terminal
上的代码执行工具:
MQL4
localhost
OnTick(){ ...}
# in case of Expert Advisor
直接?无。
间接?您构建并负责注册/监控此类值的更改(在OnCalculate(){...}
域内部或外部通过分布式处理模型,包括{{} 1}} - 集群1用于更苛刻的处理,其中内部共享线程执行无法满足时序约束):
# in case of Custom Technical Indicator
可以创建一个类似的平凡或更复杂的PID监视器,并在每次调用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
}
}
答案 1 :(得分:1)
好的我找到了。
为了在专家顾问中使用自定义指标作为买卖交易决策的工具,该功能为iCustom()