在编写MT4 EA或脚本时,我们经常遇到止损、止盈设置小于平台最小止损值而导致下单失败的情况。以fp markets澳福外汇平台为例,解决思路是弹出一个提示框供用户选择,若选择“是”,则自动调整止损、止盈参数至合规值。
以下是相关代码:
double 冻结点位=MathMax(MarketInfo(Symbol(),MODE_FREEZELEVEL),MarketInfo(Symbol(),MODE_STOPLEVEL));//获取当前平台的最小止损限制值。
if(止损点数<冻结点位 || 止盈点数<冻结点位 || 移动点数<冻结点位 || 平保点数<冻结点位 )
{
if(MessageBox("是否将各项参数统一设为最小止损值?","提示:止损、止盈、移损、平保均需大于最小止损限制。",MB_YESNO|MB_ICONQUESTION)==IDYES) //若选择“是”,则执行下方赋值操作。
{
止损点数 = 冻结点位;
止盈点数 = 冻结点位;
移动点数=冻结点位; //移动止损点数
平保点数= 冻结点位;
}
}