【问题标题】:MQL4: OrderModify() always gets 130 responseMQL4:OrderModify() 总是得到 130 响应
【发布时间】:2017-10-03 09:23:36
【问题描述】:

我希望我的 EA 自动修改订单,将止损设置一次处于盈利状态,但为什么总是出错?

我也已经达到了最低点,但这并没有给我带来任何运气。

这是变量

        double _stopLevelTimes = 1.5;
        int     StopLevel      = (int) ( miStopLevel + miSpread );

我想要的是将止损水平设置为比最低止损点水平高 1.5 倍,并且我已经添加了点差。

这些变量是由代理自动填充的。

        if (  OrderType()      == 0
           && OrderOpenPrice() >  OrderStopLoss()
              ){
              _stopLoss   = NormalizeDouble( OrderOpenPrice()
                                           + ( Point() * (  StopLevel
                                                         * _stopLevelTimes
                                                           )
                                               ),
                                             miDigits
                                             );
              _clr        = clrBlue;
              RefreshRates();
              modified    = OrderModify( OrderTicket(),
                                         OrderOpenPrice(),
                                         _stopLoss,
                                         OrderTakeProfit(), 0, _clr );
        }
        else
        if (  OrderType()      == 1
           && OrderOpenPrice() <  OrderStopLoss()
              ){  
              _stopLoss   = NormalizeDouble( OrderOpenPrice()
                                           - ( Point() * (  StopLevel
                                                         * _stopLevelTimes
                                                           )
                                               ),
                                             miDigits
                                             );
              _clr        = clrRed;
              RefreshRates();
              modified    = OrderModify( OrderTicket(),
                                         OrderOpenPrice(),
                                         _stopLoss,
                                         OrderTakeProfit(), 0, _clr );
        }

【问题讨论】:

    标签: mql4 metatrader4 mt4


    【解决方案1】:

    即使(Forex Falcon 的 IT 经理) 也应该知道一些确凿的事实:

    • 每个 MQL4 代码都已将多项职责转移给代码设计人员,在任何 db.Pool 操作之前提交强制性 OrderSelect()。不是因为OrderModify() 中的 db.Pool-SELECT-free 操作模式,而是因为您的代码比较 db.Pool-record-values (并且此类记录必须首先显式 SELECT-ed )

      李>
    • 除了SpreadStopLevel 之外,还有更多值需要监控。 Error_130 可能还有第三个原因,一旦您的代码请求 MT4-Server 端修改订单,幸运的是该订单仍位于 FreezeLevel 区域内,由设置您的经纪人的[条款和条件]。请务必重新阅读它们,因为它们统治着您所有的 XTO/非 XTO。

    • 1234563 ,但表明实际上没有可使用的值,而是标记浮动(未知)值

    最好的下一步?

    在所有情况下,将实际值和请求的新值记录到文件中并检查它们是否符合 [条款和条件] 中经纪人发布的规则。

    如果不是,请与经纪人代表和您当地的 FSA 当局核对任何此类记录在案的不符合项。

    【讨论】:

    • 是的,我已经将 Orderselect 放在了我提供的代码之外,但重要的是 OrderModify。好吧,这是我第一次制作 EA。啊,我明白了,谢谢你的信息!它给了我一些东西,我想我现在知道该怎么做了
    【解决方案2】:

    您只需检查在多头的情况下,您的止损低于OrderOpenPrice(),并计算新的止损。但是你不知道现在的价格离现在的价格是否足够远。可能是您当前的平仓价格(OrderClosePrice(), Bid 长期)低于新的止损,在这种情况下无法修改。之后,确保您允许STOP_LEVEL * Point 从当前价格到新止损的距离。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2013-01-15
      • 2021-05-25
      • 2016-08-29
      • 1970-01-01
      相关资源
      最近更新 更多