发送的订单失败,错误#130

时间:2014-10-13 00:08:53

标签: mql4

我尝试在 takeprofit 功能中插入stoplossSendOrder()参数,但我收到以下错误消息:

Order Sent Failed with Error #130

这是我的代码:

extern double takeprofit = 30.0;
extern double stoploss   = 20.0;

stoploss   = NormalizeDouble( stoploss,   5 );                  // SET stop loss
Print( "stoploss", stoploss );

takeprofit = NormalizeDouble( takeprofit, 5 );                  // SET take profit

ticket     = OrderSend( Symbol(),
                        OP_SELL,
                        lotsize,
                        Ask,
                        100,
                        stoploss,
                        takeprofit,
                        0,
                        0,
                        0,
                        CLR_NONE
                        );
if (  ticket < 0 ) {
      Print( "Order send failed with error #", GetLastError() );
   }
else  Print( "Order send sucesso!!" );

我已经检查过函数 NormalizeDouble() 的文档,但我仍然收到错误。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

A)完全符合MQL4 OrderSend()语法要求

int    anOrderTKT;                                // DECLARE int
double anOrderLotSIZE;                            // DECLARE double
string anOrderCommentSTRING;                      // DECLARE string

anOrderTKT = OrderSend( _Symbol,                  // CPU-glitch, is faster than calling Symbol(),
                        OP_SELL,                  // XTO.Type
                        anOrderLotSIZE,           // XTO.Size       [LT]s
                        Bid,                      // XTO.EntryPRICE { OP_BUY: Ask | OP_SELL: Bid }
                        100,                      // XTO.SLIPPAGE   [PT]s
                        0,                        // XTO.SL_PRICE
                        0,                        // XTO.TP_PRICE,
                        anOrderCommentSTRING,     // XTO.Comment
                        0,                        // XTO.MagNUM#
                        0,                        // XTO.PendingOrderEXPIRE
                        CLR_NONE                  // GUI.MarkerCOLOR
                        );                        // ==> { EMPTY | aTkt# }

您的代码无法设置正确的SHORT交易入场价格,因为它应该是 Bid ,而不是Ask(此错误被隐藏,因为它被有效屏蔽 - 距离上述价格可容忍的滑点距离相当于100点的宇宙距离。)

您的代码在指定int0)时失败,预计会string

B)错误130:==“无效停止”

您应与您的经纪人核实一些细节:

  1. 他们的条款&amp;条件允许 OrderSend() 一站式指令,包括TP&amp; SL,或者经纪人T&amp; C是否需要首先开设交易头寸&amp;只有在那之后才允许 OrderModify() 指令设置TP&amp; SL价格水平?
  2. 在任何一种情况下,请检查您的经纪人T&amp; C设置 STOPLEVEL &amp; FREEZELEVEL 距离,经纪商拒绝任何TP&amp; SL设置或其修改。

  3. C)一个好的做法是不要分配到extern迭代器变量

    虽然这不是导致您遇到问题的根本原因,但请务必使用行业最佳做法,其中一种做法是不为已声明的 extern 分配任何值。而是宣布你自己的变量,你控制范围&amp;分配,但从代码方面不接触extern(s)。