оформление рыночного ордера

 
доброго времени суток . устал кликать мышкой sell || buy и решил автоматизировать торговлю . возникла проблема в нехватке знаний в этой области . вроде задача простая сделать первую сделку  sell || buy , потом просто переворот ( проверяя что раньше было ). может у кого есть примеры или ссылки на статьи ? Нашел https://www.mql5.com/ru/articles/481 и есть не понятные моменты 
//--- 3. пример покупки по указанному символу символу с заданными SL и TP
   double volume=0.1;         // укажем объем торговой операции
   string symbol="GBPUSD";    // укажем символ, на котором проводится операция
   int    digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // количество знаков после запятой
   double point=SymbolInfoDouble(symbol,SYMBOL_POINT);         // пункт
   double bid=SymbolInfoDouble(symbol,SYMBOL_BID);             // текущая цена для закрытия LONG
   double SL=bid-1000*point;                                   // ненормализованное значение SL
   SL=NormalizeDouble(SL,digits);                              // нормализуем Stop Loss
   double TP=bid+1000*point;                                   // ненормализованное значение TP
   TP=NormalizeDouble(TP,digits);                              // нормализуем Take Profit
//--- получим текущую цену открытия для LONG позиций
   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(),")");
     }

не нормализованное значение TP и Stop Loss , нормализованное значение TP и Stop Loss , количество знаков после запятой . для чего это все ?
Торговые операции на MQL5 - это просто
Торговые операции на MQL5 - это просто
  • 2012.08.21
  • MetaQuotes Software Corp.
  • www.mql5.com
Почти все трейдеры приходят на рынок для того, чтобы заработать денег, хотя есть и доля тех, кому важен не сам торговый результат, а участие в процессе, драйв. Впрочем, получить удовольствие от процесса можно не только торгуя вручную, но и занимаясь разработкой автоматических торговых систем. Ведь создание торгового робота может быть таким же интересным занятием, как и чтение хорошего детектива.
 
dimka8:
доброго времени суток . устал кликать мышкой sell || buy и решил автоматизировать торговлю . возникла проблема в нехватке знаний в этой области . вроде задача простая сделать первую сделку  sell || buy , потом просто переворот ( проверяя что раньше было ). может у кого есть примеры или ссылки на статьи ? Нашел https://www.mql5.com/ru/articles/481 и есть не понятные моменты 
не нормализованное значение TP и Stop Loss , нормализованное значение TP и Stop Loss , количество знаков после запятой . для чего это все ?
Для того что бы не получать ошибку от торгового сервера неправильные стопы, так как при расчете тп и сл может получиться число с количеством знаков после запятой больше чем у торгуемого инструмента, по этому необходимо их значение нормализовать.
 
Sergey Gritsay:
Для того что бы не получать ошибку от торгового сервера неправильные стопы, так как при расчете тп и сл может получиться число с количеством знаков после запятой больше чем у торгуемого инструмента, по этому необходимо их значение нормализовать.
если я правильно понял ,то на фючерсах где идет цена без дробной части все эти нормализации можно не делать ?
 
dimka8:
если я правильно понял ,то на фючерсах где идет цена без дробной части все эти нормализации можно не делать ?

На фьючерсах надо еще учитывать шаг цены, иначе тоже будет ошибка не верные стопы. Вот пример функции нормализации для фондового рынка

double Normalize_Stop(string symbol,double value)
  {
   double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE);
   int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); 

   value=NormalizeDouble(value/ts,0)*ts;

   return(NormalizeDouble(value,digits));
  }

 

 промер использования 

double TP=Normalize_Stop(_Symbol,bid+1000*point);  
Причина обращения: