Несоответствие цены IClose и открытие ордера на основе Iclose предыдущей свечи

 
Пишу код при котором будет открываться ордер при условии что 2 индикатора пересекаются, пересечение индикаторов работает нормально но вот установка цены для ордера некорректно, вот код:

   double price = iClose(_Symbol,PERIOD_CURRENT,1);
   double takeProfit = price * (1 + TakeProfitPercent / 100);
   double stopLoss = price * (1 - StopLossPercent / 100);



   if(EnableBuy &&
      (myMovingAverageArray1[0] > myMovingAverageArray2[0]) &&
      (myMovingAverageArray1[1] < myMovingAverageArray2[1]))
     {
      Comment("Time - ", iTime(_Symbol,PERIOD_CURRENT,1), " Price - ", iClose(_Symbol,PERIOD_CURRENT,1));
      Alert("BUY Signal");
      if(trade.PositionOpen(_Symbol, ORDER_TYPE_BUY, LotSize, iClose(_Symbol,PERIOD_CURRENT,1), stopLoss, takeProfit))
        {
         tradeOpened = true;
         lastTradeBar = currentBar; 
        }
     }

   if(EnableSell &&
      (myMovingAverageArray1[0] < myMovingAverageArray2[0]) &&
      (myMovingAverageArray1[1] > myMovingAverageArray2[1]))
     {
       Comment("Time - ", iTime(_Symbol,PERIOD_CURRENT,1), " Price - ", iClose(_Symbol,PERIOD_CURRENT,1));
      Alert("SELL Signal");
      if(trade.PositionOpen(_Symbol, ORDER_TYPE_BUY, LotSize, iClose(_Symbol,PERIOD_CURRENT,1), stopLoss, takeProfit))
        {
         tradeOpened = true;
         lastTradeBar = currentBar; // Запоминаем номер бара
        }
     }
  }

самое ироничное Comment выводится корректно, а вот ордер нет, хоть там и там используется, для наглядности прикрепил файл
Расчёт интегральных характеристик излучений индикаторов
Расчёт интегральных характеристик излучений индикаторов
  • www.mql5.com
Излучения индикаторов - это малоизученное направление исследования рынка. В первую очередь из-за трудности анализа, которая вызвана обработкой очень больших массивов изменяющихся во времени данных. Существующий графический анализ слишком ресурсоёмкий и поэтому был разработан экономный алгоритм с использованием таймсерий излучений. В статье предлагается заменить визуальный (интуитивно-образный) анализ исследованием интегральных характеристик излучения. Статья будет интересна как трейдерам, так и разработчикам механических торговых систем.
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

пожалуйста помогите мне нужно чтобы каждый новый бар открывалась сделка мне нужно чтобы если Предыдущий бар был верх то buy если вниз то sell

Sergey Golubev, 2020.03.23 16:08

Вставляйте правильно код -

----------------‌

MQL5.community - Памятка пользователя 

Кнопка  Исходный кодпредназначена для вставки исходного кода в текст сообщения. При нажатии появляется пустое окно, в которое необходимо вставить код и далее нажать кнопку Вставить. Для отмены вставки кода необходимо нажать кнопку Отмена.


 
Так ведь приказ ORDER_TYPE_BUY не приводит к открытию ордера, которому можно назначить цену, он приводит к открытию позиции. У Вас в коде даже метод так называется - OpenPosition. А позицию можно открыть только по текущей цене (для Buy это Ask). Если хотите открыть ордер, то использовать нужно метод OpenOrder.