Ошибки, баги, вопросы - страница 3286

 
fxsaber #:
Все три вопроса возникли по мере решения такой задачи.

Нужно написать один раз New и больше не править. При этом можно добавлять B101, B102, ....

Вариант решения.

input string inStr = "B2";

class A {};

class B1 : public A {};
class B2 : public A {};
// .....
class B100 : public A {};

void OnStart()
{
  A* a = New2(inStr); // создает объект, который прописан в inStr.
}

// Решение.
template <typename T>
A* New( const string &ClassName ) { return((typename(T) == ClassName) ? new T : NULL); }

typedef A* (*TNew)( const string& );
static const TNew FuncNew[] = {New<B1>, New<B2>, /*....,*/ New<B100>};

A* New2( string ClassName )
{  
  A* Res = NULL;
  
  ClassName = "class " + ClassName;
  
  for (int i = ArraySize(FuncNew) - 1; !Res && (i >= 0); i--)
    Res = FuncNew[i](ClassName);  
    
  return(Res);
}
 

здравствуйте.

вопрос такой. подписался на сигнал. все открывается и работают все валютные пары кроме пары xau-usd .в чем причина подскажите?

 
sergeyorlov13 #:

здравствуйте.

вопрос такой. подписался на сигнал. все открывается и работают все валютные пары кроме пары xau-usd .в чем причина подскажите?

Это - маппинг, то есть -

  • у вас более одного символа для gold,
  • или расчет маржи по XAUUSD символу - не форекс.

Подробнее (где в Метатрейдере смотреть "тип расчета маржи по символу" и так далее:
см пост   и пост

 

да у меня тоже как то неустойчиво работает может вернуть -1 а может правильный бар

begDayBar= iBarShift(_Symbol,_Period,begDayTime,false)  по документации  функция возвращает, в зависимости от exact параметра, -1 или ближайшее смещение бара.

а сегодня почему-то если begDayTime=2023.01.26 00:00:00 возвращает  -1хотя такие бары есть и они не последние

2023.02.15 15:19:23.254    !indDAY_WSOWROhLine (EURRUB_TOM,M15)    begDayTime=2023.01.26 00:00:00 endDayTime=2023.01.27 00:00:00 begDayBar=-2 endDayBar=-1 indATR=0 Q5days=0

билд 3550

можно конечно выеживаться

if (begDayBar<0) {           k=0; do {k++;} while(begDayTime<time[k] && !IsStopped());      begDayBar=k;  }  для гарантии если явно неправильно возвращает

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

Всем привет.

Почему компилятор ругается на OnInit? И ещё несколько ошибок

   //+------------------------------------------------------------------+

   //|                                                         Copy.mq4 |

   //|                                                       nickolay2i |

   //|                                             https://www.mql5.com |

   //+------------------------------------------------------------------+

   extern double Tick               = 0.002;

   extern double Volumesize         = 0.01;

   extern int StopLoss              = 50;

   extern int TakeProfit            = 50;

   extern int Slippage              = 3;

   extern int Magic                 = 0701

   

   

   

   #property copyright "nickolay2i"

   #property link      "https://www.mql5.com"

   #property version   "1.00"

   #property strict

   //+------------------------------------------------------------------+

   //| Expert initialization function                                   |

   //+------------------------------------------------------------------+

   int OnInit();

     {

   

      return(INIT_SUCCEEDED);

     }

   //+------------------------------------------------------------------+

   //| Expert deinitialization function                                 |

   //+------------------------------------------------------------------+

   void OnDeinit(const int reason)

     {

   //---

      

     }

   //+------------------------------------------------------------------+

   //| Expert tick function                                             |

   //+------------------------------------------------------------------+

   void OnTick()

   {

      double   SL = NormalizeDouble(Bid - StopLoss*Point, 5);

      double   TP = NormalizeDouble(Bid + TakeProfit*Point, 5);

     

         

         

        {

         if(MODE_TICKVALUE > Tick)

         OrderSend(Symbol(),OP_BUY, Volumesize,Bid,Slippage,SL,TP,"", Magic, 0, Blue);

        }

      

    } 

   //+------------------------------------------------------------------+


Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2023.02.16
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
Nikolay Grigoryev #:

Всем привет.

Почему компилятор ругается на OnInit? И ещё несколько ошибок

   //+------------------------------------------------------------------+

   //|                                                         Copy.mq4 |

   //|                                                       nickolay2i |

   //|                                             https://www.mql5.com |

   //+------------------------------------------------------------------+

   extern double Tick               = 0.002;

   extern double Volumesize         = 0.01;

   extern int StopLoss              = 50;

   extern int TakeProfit            = 50;

   extern int Slippage              = 3;

   extern int Magic                 = 0701

   

   

   

   #property copyright "nickolay2i"

   #property link      "https://www.mql5.com"

   #property version   "1.00"

   #property strict

   //+------------------------------------------------------------------+

   //| Expert initialization function                                   |

   //+------------------------------------------------------------------+

   int OnInit();

     {

   

      return(INIT_SUCCEEDED);

     }

   //+------------------------------------------------------------------+

   //| Expert deinitialization function                                 |

   //+------------------------------------------------------------------+

   void OnDeinit(const int reason)

     {

   //---

      

     }

   //+------------------------------------------------------------------+

   //| Expert tick function                                             |

   //+------------------------------------------------------------------+

   void OnTick()

   {

      double   SL = NormalizeDouble(Bid - StopLoss*Point, 5);

      double   TP = NormalizeDouble(Bid + TakeProfit*Point, 5);

     

         

         

        {

         if(MODE_TICKVALUE > Tick)

         OrderSend(Symbol(),OP_BUY, Volumesize,Bid,Slippage,SL,TP,"", Magic, 0, Blue);

        }

      

    } 

   //+------------------------------------------------------------------+


Точку с запятой на забываем


 

Небольшой лайф-хак в GUI.

Если нужно узнать путь к советнику/индикатору из окна Навигатор, просто перетащите его мышкой в Тестер. Там сразу будет виден путь.

 
fxsaber #:

Небольшой лайф-хак в GUI.

Если нужно узнать путь к советнику/индикатору из окна Навигатор, просто перетащите его мышкой в Тестер. Там сразу будет виден путь.

@fxsaber не проходи, пожалуйста, мимо. прошу обратить твое внимание. нужно оч экспертное мнение

input параметр изменяется при форвард тестировании (2) - Общее обсуждение - Форум алго-трейдеров MQL5

input параметр изменяется при форвард тестировании (2)
input параметр изменяется при форвард тестировании (2)
  • 2023.02.16
  • www.mql5.com
Баг или фича.. или может кривые руки. Но прошу помочь разобраться с ситуацией...
 
Nikita Chernyshov #:

Точку с запятой на забываем


Спасибо! Теперь на скобки ругается

//+------------------------------------------------------------------+

//|                                                       Expert.mq4 |

//|                                                       nickolay2i |

//|                                                                  |

//+------------------------------------------------------------------+

#property copyright "nickolay2i"

#property link      ""

#property version   "1.00"

#property strict


extern double Tick               = 0.002;

      extern double Volumesize         = 0.01;

      extern int StopLoss              = 50;

      extern int TakeProfit            = 50;

      extern int Slippage              = 3;

      extern int Magic                 = 0701;

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit();

  {

//---

   

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick();

  

         double   SL = NormalizeDouble(Bid - StopLoss, 5);

         double   TP = NormalizeDouble(Bid + TakeProfit, 5);

        

            

            

           {

            if(MODE_TICKVALUE > Tick);

          

            OrderSend(Symbol(),OP_BUY, Volumesize,Bid,Slippage,SL,TP,"", Magic, 0, Blue);

           }

  

//+------------------------------------------------------------------+

 
Nikolay Grigoryev #:

Спасибо! Теперь на скобки ругается

//+------------------------------------------------------------------+

//|                                                       Expert.mq4 |

//|                                                       nickolay2i |

//|                                                                  |

//+------------------------------------------------------------------+

#property copyright "nickolay2i"

#property link      ""

#property version   "1.00"

#property strict


extern double Tick               = 0.002;

      extern double Volumesize         = 0.01;

      extern int StopLoss              = 50;

      extern int TakeProfit            = 50;

      extern int Slippage              = 3;

      extern int Magic                 = 0701;

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit();

  {

//---

   

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick();

  

         double   SL = NormalizeDouble(Bid - StopLoss, 5);

         double   TP = NormalizeDouble(Bid + TakeProfit, 5);

        

            

            

           {

            if(MODE_TICKVALUE > Tick);

          

            OrderSend(Symbol(),OP_BUY, Volumesize,Bid,Slippage,SL,TP,"", Magic, 0, Blue);

           }

  

//+------------------------------------------------------------------+

Честно говоря, у вас много проблем в коде. Там одно тянет другое.

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