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

 
Aleksey Vyazmikin:

Это как понимать - тестирую по OHLC на M1, при закрытии по SL получаю вменяемую прибыль/убыток (33606-33608=-2), а вот при закрытии по тейк профиту - ересь (33591-33506=29), да я вижу, что цена "33562" но откуда такая цена взялась то? Минутный бар меньше!

Если кто знает причину, и сие не баг, то прошу Вас озвучить!

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

Приведите лог момента закрытия и реальные тики (CTRL+U) вокруг этого события.

 
Ошибка при компиляции
class A {
    static int i;
} a; //Error: unresolved static variable 'A::i'
int A::i;
а так:
class A {
    static A i;
} a;
A A::i;
нормально. А какая разница?
 

весь форум перерыл, не нашел (((

вот у меня класс:

class Myclass
  {
public:
                     Myclass();
                    ~Myclass();
   void              OnInit();
   void              OnDeinit();
   void              OnTick();
   void              OnTester();
   void              OnTimer();
  };

хочу в стандартных функциях обработки событий вызывать обработчики событий в классе

как сделать макроподстановку? (или шаблон функции..., что то что автоматом расставит для экземпляров класса обработчики )

 
Igor Makanu:

весь форум перерыл, не нашел (((

вот у меня класс:

хочу в стандартных функциях обработки событий вызывать обработчики событий в классе

как сделать макроподстановку? (или шаблон функции..., что то что автоматом расставит для экземпляров класса обработчики )

Пример можете посмотреть здесь.

Init_Sync
Init_Sync
  • www.mql5.com
Если в MT изменить таймфрейм или имя символа чарта, то все индикаторы на чарте выгрузятся с чарта и загрузятся на него снова. При этом, в отличие от MT4, в MT5 последовательность выгрузиться/загрузиться не определена из-за особенности внутренней архитектуры. Данное обстоятельство иногда вызывает не сразу очевидные проблемы, связанные с тем, что...
 
fxsaber:

Пример можете посмотреть здесь.

увы, я все Ваши примеры за последний час изучил, не получается у меня быть повелителем дефайнов )))

вот из Вашего ответа, сделал себе по аналогии, да компилируется, все работает, но я могу так один экземпляр класса "обернуть" в макроподстановку

class Myclass
  {
public:
                     Myclass(){};
                    ~Myclass(){};
   void              OnInit(){Print(__FUNCSIG__," выполнен");};
   void              OnDeinit();
   void              OnTick();
   void              OnTester();
   void              OnTimer(){Print(__FUNCSIG__," выполнен");};
  } m_class;
//+------------------------------------------------------------------+
#define CHECK_INIT_TIMER m_class.OnTimer();
void OnTimer( void )
{
  CHECK_INIT_TIMER;
  ::OldOnTimer();
}
#define OnTimer OldOnTimer
//+------------------------------------------------------------------+

#define CHECK_INIT_INIT m_class.OnInit();
void OnInit( void )
{
  CHECK_INIT_INIT;
  ::OldOnInit();
}
#define OnInit OldOnInit

а если у меня будет 3-5 экземпляров класса, как это  обернуть в макроподстановки?

 
fxsaber:

Приведите лог момента закрытия и реальные тики (CTRL+U) вокруг этого события.

Глянул - тиков нет, при попытке запросить повисло два терминала - запрашивал всего за день... но по трафику будто за всё время закачивается (качаю фьючерс а не склейку).

Поэтому, пусть тиков условно нет, тогда что?

 
Aleksey Vyazmikin:

Поэтому, пусть тиков условно нет, тогда что?

Что угодно. По ластам или аску мог закрыться. Спред на баре мог быть любой и т.д. Гадание, в общем.

 
Igor Makanu:

а если у меня будет 3-5 экземпляров класса, как это  обернуть в макроподстановки?

Пока не понял задачу.

 
fxsaber:

Пока не понял задачу.

я хочу в коде эксперта написать лишь #include <fileclass.mqh>

и затем обьявить в коде эксперта 3 экземпляра класса: Myclass m_class1, m_class2, m_class3

и хочу получить макроподстановки в стандартных функциях обработки событий 

ЗЫ: для одного экземпляра класса, Вы помогли, подсказали куда смотреть - все работает, но для 3-х как сделать ума не приложу (((

 
fxsaber:

Что угодно. По ластам или аску мог закрыться. Спред на баре мог быть любой и т.д. Гадание, в общем.

Из докуметации

Разница между ценами Bid и Ask называется спредом. При тестировании спред не моделируется, а берется из исторических данных. Если в исторических данных спред меньше или равен нулю, то используется последний известный на момент генерации спред.

Раз тиков нет, то спред одинаковый на всем промежутке тестирования, а он маленький.
Причина обращения: