创建购买限制会产生无效的价格错误

时间:2018-12-25 11:36:37

标签: mql5

我正在尝试使用MQL5编写一个EA交易,该交易基于某些EMA值启动购买限制。这是我在OnTick()函数中编写的代码。

        MqlRates priceData[]; //create a price array

       //sort the array from the current candle downwards
       ArraySetAsSeries(priceData, true);

       //copy candle prices for 5 candles into array
       CopyRates(_Symbol, _Period, 0,5, priceData);

       //EMA Based Trading

       int ema8 = iMA(_Symbol, _Period, 8, 0, MODE_EMA, PRICE_CLOSE);
       int ema21 = iMA(_Symbol, _Period, 21, 0, MODE_EMA, PRICE_CLOSE);

       //Arrays to store EMAs
       double ema8Array[], ema21Array[];


       //Sorting EMAs fot the current candle downwards 
       ArraySetAsSeries(ema8Array, true);
       ArraySetAsSeries(ema21Array, true);

       //Defined EMA8, one line, current candle, 5 candles, store result
       CopyBuffer(ema8,0,0,5,ema8Array);

       //Defined EMA21, one line, current candle, 5 candles, store result
       CopyBuffer(ema21,0,0,5,ema21Array);

       if(ema8Array[0] > ema21Array[0])
       {

          if(
          (ema8Array[0] >= priceData[1].close) 
          && 
          (priceData[1].close < ema21Array[0]))
          {
            Print("Chance To Buy"); 

            double closePrices[5];

            closePrices[0]=priceData[1].close;
            closePrices[1]=priceData[2].close;
            closePrices[2]=priceData[3].close;
            closePrices[3]=priceData[4].close;

            if((OrdersTotal() == 0) && (PositionsTotal() == 0))
            {
             int maxValue=ArrayMaximum(closePrices,0,WHOLE_ARRAY);
             double buyStop=closePrices[maxValue]+0.00003;
             double stopLoss=priceData[1].close-0.00004;
             double takeProfit=buyStop+(buyStop-stopLoss);

             trade.BuyLimit(0.01,buyStop,_Symbol,0,0,ORDER_TIME_GTC,0,"Limit Added");
            }
          }


   }

当我在H1时间轴上使用EURUSD对​​其进行策略测试时,大多数时候会出现以下错误:

2018.12.25 14:27:47.117 2017.01.02 09:00:09   failed buy limit 0.01 EURUSD at 1.05342 [Invalid price]
2018.12.25 14:27:47.117 2017.01.02 09:00:09   CTrade::OrderSend: buy limit 0.01 EURUSD at 1.05342 [invalid price]

您能告诉我我可能做错了什么吗?

0 个答案:

没有答案