MQL5 невозможно открыть ордер со стопом

 

Добрый день!

Никак не удается открыть ордер с установленными стопом и профитом. Перепробовал несколько способов - ни один не работает (например этот https://www.mql5.com/ru/articles/639). Ордера открываются но стоп и профит не выставляются. Подскажите пожалуйста, как открыть ордер со стопом и профитом для тестирования? 

#include<Trade\Trade.mqh>

CTrade  trade;


int OnInit()

  {

//--- зададим MagicNumber для идентификации своих ордеров

   int MagicNumber=123456;

   trade.SetExpertMagicNumber(MagicNumber);

//--- установим допустимое проскальзывание в пунктах при совершении покупки/продажи

   int deviation=10;

   trade.SetDeviationInPoints(deviation);

//--- режим заполнения ордера, нужно использовать тот режим, который разрешается сервером

   trade.SetTypeFilling(ORDER_FILLING_RETURN);

//--- режим логирования: лучше не вызывать этот метод вообще, класс сам выставит оптимальный режим

   trade.LogLevel(1); 

//--- какую функцию использовать для торговли: true - OrderSendAsync(), false - OrderSend()

   trade.SetAsyncMode(true);

   return(0);

  }

 

void OnTick()

  {

if(!PositionSelect(_Symbol)){

 double volume=0.1;         // укажем объем торговой операции

   string symbol=_Symbol;    // укажем символ, на котором проводится операция

   int    digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // количество знаков после запятой

   double point=SymbolInfoDouble(symbol,SYMBOL_POINT);         // пункт

   double bid=SymbolInfoDouble(symbol,SYMBOL_BID);             // текущая цена для закрытия LONG

   double SL=bid-50*point;                                   // ненормализованное значение SL

   SL=NormalizeDouble(SL,digits);                              // нормализуем Stop Loss

   double TP=bid+100*point;                                   // ненормализованное значение TP

   TP=NormalizeDouble(TP,digits);         

 double open_price=SymbolInfoDouble(symbol,SYMBOL_ASK);

   string comment=StringFormat("Buy %s %G lots at %s, SL=%s TP=%s",

                               symbol,volume,

                               DoubleToString(open_price,digits),

                               DoubleToString(SL,digits),

                               DoubleToString(TP,digits));

   if(!trade.Buy(volume,symbol,open_price,SL,TP,comment))

     {

      //--- сообщим о неудаче

      Print("Метод Buy() потерпел неудачу. Код возврата=",trade.ResultRetcode(),

            ". Описание кода: ",trade.ResultRetcodeDescription());

     }

   else

     {

      Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(),

            " (",trade.ResultRetcodeDescription(),")");

     }}}

Рецепты MQL5 - Как получить свойства позиции?
Рецепты MQL5 - Как получить свойства позиции?
  • 2013.02.26
  • Anatoli Kazharski
  • www.mql5.com
В этой статье мы создадим скрипт, который получает все свойства позиции и показывает их пользователю в диалоговом окне. При запуске скрипта во внешних параметрах можно будет выбрать из выпадающего списка один из двух режимов: показать свойства позиции только на текущем символе или просмотреть свойства позиций на всех символах.
 
crowly:

Никак не удается открыть ордер с установленными стопом и профитом.

вероятно вы работаете на брокере с Маркет исполнением.

проверьте - можете ли вы открывать ордера со стопами в самом терминале. F9 - открыть рыночный ордер.

Если у вас таки маркет исполнение, и терминал это подтверждает, то нельзя открывать ордера со стопами. Их можно выставлять только у уже открытых ордеров.

 
sergeev:

вероятно вы работаете на брокере с Маркет исполнением.

проверьте - можете ли вы открывать ордера со стопами в самом терминале. F9 - открыть рыночный ордер.

Если у вас таки маркет исполнение, и терминал это подтверждает, то нельзя открывать ордера со стопами. Их можно выставлять только у уже открытых ордеров.

Да, так и есть. Спасибо! Буду переделывать.
Причина обращения: