Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1814

 
Alexander Avksentyev #:

Пофиксил, теперь работает. Конечно не правильно, но работает

Выставляет стопы не правильно, как побороть? 

OrderOpenPrice()*Point
OrderStopLoss()* Point

1,12500*Point=0.0000112500

 
Tretyakov Rostyslav #:

1,12500*Point=0.0000112500

Print(/*((*/NormalizeDouble((Bid - OrderOpenPrice()*Point),Digits) 

2021.12.15 00:26:55.086 2021.01.04 00:00:00  test1 EURUSD,M1: 1.22373


Но если посчитать отдельно 
Print(/*((NormalizeDouble((Bid - */OrderOpenPrice()*Point/*),Digits)/*

2021.12.15 00:30:09.557 2021.01.04 00:00:00  test1 EURUSD,M1: 1.2238e-05

Print(/*((NormalizeDouble((*/Bid - OrderOpenPrice()*Point/*
2021.12.15 00:34:05.979 2021.01.04 00:00:00  test1 EURUSD,M1: 1.223727762

 
secret #:
В mql4 OrderSend() сразу возвращала результат обработки ордера торговым сервером.
В mql5 такую функцию надо писать самому?

OnTradeTransaction 

Документация по MQL5: Обработка событий / OnTradeTransaction
Документация по MQL5: Обработка событий / OnTradeTransaction
  • www.mql5.com
OnTradeTransaction - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexander Avksentyev #:

2021.12.15 00:26:55.086 2021.01.04 00:00:00  test1 EURUSD,M1: 1.22373


Но если посчитать отдельно 

2021.12.15 00:30:09.557 2021.01.04 00:00:00  test1 EURUSD,M1: 1.2238e-05

2021.12.15 00:34:05.979 2021.01.04 00:00:00  test1 EURUSD,M1: 1.223727762

Почитайте 3-4 сообщения

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.12.14
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Vitaly Muzichenko #:

OnTradeTransaction 

Спасибо. Просто ад) Как же мне жаль алготрейдеров на МТ5.
 
secret #:
Спасибо. Просто ад) Как же мне жаль алготрейдеров на МТ5.

Оно того стОит, в мт5 приказы обрабатываются в разы быстрее. Да и тестирование более правдоподобно, тестерных граалей почти не получается.

 
Vitaly Muzichenko #:

Почитайте 3-4 сообщения

Да, почитал. Понял теперь.

Спасибо, думал, что ошибка, оказалось это норма.
 
Tretyakov Rostyslav #:

1,12500*Point=0.0000112500

Всё исправил, результат не поменялся. 

Может дело в логике?

НУ как то он открывает ТСЛ но как стоп

 
Alexander Avksentyev #:

Всё исправил, результат не поменялся. 

Может дело в логике?

НУ как то он открывает ТСЛ но как стоп

Твоя функция выгляди так:

NormalizeDouble((Bid - OrderOpenPrice()*Point),Digits)

NormalizeDouble((1,12700 - 1,12500/100000),5)

Тебе необходимо понять что делает  "Point"

Сделай принт

Print(DoubleToString(NormalizeDouble(Point,Digits),Digits));
 
Tretyakov Rostyslav #:

Твоя функция выгляди так:

NormalizeDouble((1,12700 - 1,12500/100000),5)

Тебе необходимо понять что делает  "Point"

Сделай принт

до

void TrailSL()
{
 if(iTrailStart <= 0.0)return; 
 double tp,sl_lev;
 for(int i=OrdersTotal()-1; i>=0; i--)
    {
     if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
       {
        if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
          {
           if(OrderType() == OP_BUY) 
             {
              if(iTrailTakeProfit > 0.0)
                {
                tp=OrderTakeProfit() + NormalizeDouble(iTrailTakeProfit * Point(),_Digits);
                if(NormalizeDouble(((tp - OrderTakeProfit())) < 0.0,Digits))return;
                tp = OrderTakeProfit();
                }else tp = 0.0;
                if (NormalizeDouble(Bid - OrderOpenPrice(),Digits) <= iTrailStart * MarketInfo(Symbol(),MODE_POINT) );//true
                   {
                    if(OrderStopLoss() < OrderOpenPrice() || OrderStopLoss() == 0 && NormalizeDouble(Bid - OrderStopLoss(),Digits) <= iTrailDist * MarketInfo(Symbol(),MODE_POINT));//true
                      {
                      if(iTrailStep > 0.0 && OrderStopLoss() != 0.0 && NormalizeDouble((Bid - OrderStopLoss()) - iTrailDist * MarketInfo(Symbol(),MODE_POINT),Digits) < iTrailStep * MarketInfo(Symbol(),MODE_POINT));//true
                        {
                         sl_lev = Bid - iTrailDist * MarketInfo(Symbol(),MODE_POINT);
                         if(NormalizeDouble(Bid - sl_lev,Digits) < MarketInfo(Symbol(),MODE_STOPLEVEL));//false
                           {
                            if(!OrderModify(Forder,OrderOpenPrice(),sl_lev,tp,0,Red))return;
                            Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
                           }
                        }
                      }
                   }
                }
             }

после

void TrailSL()
{
   if (iTrailStart <= 0.0 || iTrailStep <= 0.0)
      return; 
      
   double sl_lev;
         
   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if(!OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
         continue;
      
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic)
         continue;  
         
      if(OrderType() == OP_BUY) 
      {
         if (NormalizeDouble(Bid - OrderOpenPrice(),Digits) < iTrailStart * MarketInfo(Symbol(),MODE_POINT) )
            continue;

         if (OrderStopLoss() >= OrderOpenPrice() || NormalizeDouble(Bid - OrderStopLoss(), Digits()) < iTrailDist * MarketInfo(Symbol(),MODE_POINT))
            continue;

         if (OrderStopLoss() == 0.0 || NormalizeDouble((Bid - OrderStopLoss()) - iTrailDist * MarketInfo(Symbol(),MODE_POINT),Digits) < iTrailStep * MarketInfo(Symbol(),MODE_POINT))
            continue;

         sl_lev = Bid - iTrailDist * MarketInfo(Symbol(),MODE_POINT);
         if (NormalizeDouble(Bid - sl_lev,Digits) < MarketInfo(Symbol(),MODE_STOPLEVEL))
            continue;
            
         if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl_lev, OrderTakeProfit(), 0, clrRed))
            Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
      }}}

Но теперь вообще не xочет включаться.

Ошибок нет не в компиляторе не в терминале, просто не включается.

Что за проблема такая магическая?

Подскажи а?

Извини за назойливость.

Причина обращения: