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

 
Sergey Basov:
Сам не проверял, может это и шутка от модераторов.

Теперь понятно )) Скорее всего не шутка.
Возможно не все модераторы об этом в курсе ))
По этому получаются не понятки с этой кнопкой в вопросах.

 
Sergey Basov:
Сам не проверял, может это и шутка от модераторов.

У вас там тапочки не пропали?

 

Вопрос к разработчикам

OHLC на M1
В данном режиме генерируются только тики OHLC минутных баров. Если тиковый объем свечи больше 4, 
то всегда генерируются только цены Open, High, Low и Close. Если тиковый объем меньше 4, то 
применяются правила генерации, описанные выше.

Выбор данного режима не означает что тестирование/оптимизация будет проводиться именно на периоде М1. 
Например, при выборе периода Н1 в режиме "OHLC на M1" цены будут генерироваться на каждом минутном 
баре для значений Open, High, Low и Close. При этом событие OnTick() эксперта будет также запускаться 
четыре раза в минуту — на открытии, закрытии, минимуме и максимуме каждого минутного бара, хотя 
тестирование ведется на H1.

Фактически, цены OHLC присутствуют в исторических данных. Таким образом, при тестировании генерируется 
лишь время прихода тиков Open, High, Low и Close, значения же цен берутся из истории.

А именно

При этом событие OnTick() эксперта будет также запускаться 
четыре раза в минуту — на открытии, закрытии, минимуме и максимуме

Это не опечатка? Именно в такой последовательности подача (O->C->L->H)?

Почему тогда принты в тестере выдают последовательность O->H->L->C

 
erotin:

Вопрос к разработчикам

А именно

Это не опечатка? Именно в такой последовательности подача (O->C->L->H)?

Почему тогда принты в тестере выдают последовательность O->H->L->C

Это не опечатка, а простое перечисление

Принты в тестере могут давать и другие последовательности. O->L->H->C; O->L->C; O->H->C; O->C; C

 
Slava:

Это не опечатка, а простое перечисление

Принты в тестере могут давать и другие последовательности. O->L->H->C; O->L->C; O->H->C; O->C; C

А как мне тогда получить эти последовательности с предыдущего бара m1?

На данный момент получаю значения так

   double   open=iOpen(Symbol(),Period(),1);
   double   high=iHigh(Symbol(),Period(),1);
   double   low=iLow(Symbol(),Period(),1);
   double   close=iClose(Symbol(),Period(),1);

Но проблема в том что мне не известна какая была последовательность подачи в тот момент

Принты в тестере могут давать и другие последовательности. O->L->H->C; O->L->C; O->H->C; O->C; C
Может подскажите как проще узнать что за последовательность была выдана тестером на предыдущем баре в режиме ohcl на м1?
 
Добрый день. Такая ситуация. ОООчень нужно чтобы советник/скрипт/индикатор/ещеКакаяНибудьШтука написана мною на mql4 не привязывалась именно к окну с графиком, нужно чтобы к программе.. ну типа, я напишу полезную мне штуку и не хочу включать ее постоянно к новым открытым графикам, хочу чтобы она оставалась. Что-то типа сервиса(из MT5), но нужно именно на МТ4. 
 

могу конечно ошибаться, но кажется 2 месяца назад мой шаблон работал, а теперь при вызове деструктора CList  в памяти остаются не уничтоженные объекты, код:

#property strict
#include <Arrays\List.mqh>
//+------------------------------------------------------------------+
class CData : public CObject
  {
public:
   int               x;
   double            y;
                     CData(){};
                     CData(int ival,double dval){x=ival;y=dval;}
  };
//+------------------------------------------------------------------+
template<typename T>class CDataBase
  {
private:
   CList            *mlist;
   T                *Tptr;
public:
   void CDataBase()           { mlist=new CList;                                    }
   void ~CDataBase(void)      { delete mlist;                                       }
   int ArraySize(void)        { return(mlist.Total());                              }
   T *operator[](int index)   { return(mlist.GetNodeAtIndex(index));                }
   void  AddValue (T &value)  { Tptr = new T; Tptr  = value; mlist.Add(Tptr);       }
   string TypeName()          { return(typename(T));                                }
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   CDataBase<CData>*data=new CDataBase<CData>;
   int i;
   for(i=0; i<5; i++)
     {
      data.AddValue(new CData(i,i*2.0));
     }

   for(i=0; i<data.ArraySize(); i++)
     {
      Print(i," : ",data[i].x," , ",data[i].y);
     }
   Print(data.TypeName());
   delete data;
  }
//+------------------------------------------------------------------+

2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 0 : 0 , 0.0

2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 1 : 1 , 2.0

2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 2 : 2 , 4.0

2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 3 : 3 , 6.0

2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 4 : 4 , 8.0

2019.06.21 07:19:45.926 tstlist (EURUSD,H1) CData

2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 5 undeleted objects left

2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 5 objects of type CData left

2019.06.21 07:19:45.926 tstlist (EURUSD,H1) 280 bytes of leaked memory

МТ5 билд 2085
 
Igor Makanu:

могу конечно ошибаться, но кажется 2 месяца назад мой шаблон работал, а теперь при вызове деструктора CList  в памяти остаются не уничтоженные объекты, код:

#property strict
#include <Arrays\List.mqh>
//+------------------------------------------------------------------+
class CData : public CObject
  {
public:
   int               x;
   double            y;
                     CData(){};
                     CData(int ival,double dval){x=ival;y=dval;}
  };
//+------------------------------------------------------------------+
template<typename T>class CDataBase
  {
private:
   CList            *mlist;
   T                Tptr;
public:
   void CDataBase()           { mlist=new CList;                                    }
   void ~CDataBase(void)      { delete mlist;                                       }
   int ArraySize(void)        { return(mlist.Total());                              }
   T operator[](int index)   { return(mlist.GetNodeAtIndex(index));                }
   void  AddValue (T &value)  { Tptr  = value; mlist.Add(Tptr);      }
   string TypeName()          { return(typename(T));                                }
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   CDataBase<CData*>* data=new CDataBase<CData*>;
   int i;
   for(i=0; i<5; i++)
     {
      CData* Tmp = new CData(i,i*2.0);
      data.AddValue(Tmp);
     }

   for(i=0; i<data.ArraySize(); i++)
     {
      Print(i," : ",data[i].x," , ",data[i].y);
     }
   Print(data.TypeName());
   delete data;
  }
//+------------------------------------------------------------------+
 
fxsaber:

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

Спасибо!

 
Вероника Сорокина:
Добрый день. Такая ситуация. ОООчень нужно чтобы советник/скрипт/индикатор/ещеКакаяНибудьШтука написана мною на mql4 не привязывалась именно к окну с графиком, нужно чтобы к программе.. ну типа, я напишу полезную мне штуку и не хочу включать ее постоянно к новым открытым графикам, хочу чтобы она оставалась. Что-то типа сервиса(из MT5), но нужно именно на МТ4. 

Используйте сервисы