MetaEditor build 1470 - страница 4

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Подскажите с кодом.

Vladimir Karputov, 2016.11.13 15:01

В тестере

      datetime time_create=(datetime)ObjectGetInteger(0,name,OBJPROP_CREATETIME);


возвращает дату создания линии из реальной жизни, то есть "D'2016.11.13 15:57:29'".

 

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

2016.11.13 16:11:23.146 Terminal        MetaTrader 5 x64 build 1470 started (MetaQuotes Software Corp.)
2016.11.13 16:11:23.147 Terminal        Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i3-3120M  @ 2.50GHz, RAM: 4983 / 8077 Mb, HDD: 390693 / 476372 Mb, GMT+02:00
2016.11.13 16:11:23.148 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

Проверку поводить в режиме тестирование на истории, контролировать переменную "time_create" в функции "DeleteAllTimeout()":

//+------------------------------------------------------------------+
//|                                                       TestEA.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
CTrade         m_trade;                      // trading object
CPositionInfo  m_position;                   // trade position object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(60*60);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   VLineCreate();
   DeleteAllTimeout();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DeleteAllTimeout()
  {
   int total=ObjectsTotal(0,-1,-1);

   for(int i=total-1; i>=0; i--)
     {
      string name=ObjectName(0,i);
      datetime time_create=(datetime)ObjectGetInteger(0,name,OBJPROP_CREATETIME);
      datetime time_current=TimeCurrent();
      if(TimeCurrent()>=time_create+24*60*60*2)
        {
         ObjectDelete(0,name);
        }
     }
   ChartRedraw(0);
  }
//+------------------------------------------------------------------+
//| Создает вертикальную линию                                       |
//+------------------------------------------------------------------+
bool VLineCreate(const long            chart_ID=0,        // ID графика
                 const string          name="VLine",      // имя линии
                 const int             sub_window=0,      // номер подокна
                 datetime              time=0) // время линии
  {
//--- если время линии не задано, то проводим ее через последний бар
   if(!time)
      time=TimeCurrent();
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим вертикальную линию
   if(!ObjectCreate(chart_ID,name+IntegerToString(GetTickCount()),OBJ_VLINE,sub_window,time,0))
     {
      Print(__FUNCTION__,
            ": не удалось создать вертикальную линию! Код ошибки = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
Файлы:
TestEA.mq5  7 kb
 

Что бы это значило:

error

Получено в ответ на попытку зафиксировать изменение в Хранилище. 

 
Vladimir Karputov:

Что бы это значило:


Получено в ответ на попытку зафиксировать изменение в Хранилище. 

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

Насколько помню, ранее при добавлении в Хранилище папки с файлами было видно, что за файлы добавляются, это было удобно. Сейчас не видно. Какой смысл писать 25-30 строк со словом "Added"?


 
Vasiliy Pushkaryov:

Насколько помню, ранее при добавлении в Хранилище папки с файлами было видно, что за файлы добавляются, это было удобно. Сейчас не видно. Какой смысл писать 25-30 строк со словом "Added"?


У Вас точно 1470?
 
Vasiliy Pushkaryov:

Насколько помню, ранее при добавлении в Хранилище папки с файлами было видно, что за файлы добавляются, это было удобно. Сейчас не видно. Какой смысл писать 25-30 строк со словом "Added"?

А-а, вот увидел, при фиксации привычный вид. Было бы хорошо, чтобы при добавлении файлов тоже выводился список добавляемого


 
Vladimir Karputov:
У Вас точно 1470?
Да - 1470
 

В тестере

      datetime time_create=(datetime)ObjectGetInteger(0,name,OBJPROP_CREATETIME);


возвращает дату создания линии из реальной жизни, то есть "D'2016.11.13 15:57:29'".

Данное поведение будет исправлено в ближайшем билде.
 

Несколько билдов назад заметил, такую оказию: в тестере выбран эксперт, в МЕ делаются правки, но как только происходит компиляция в тестере выбирается уже другой эксперт..... Уже несколько раз получалось так, что я запускал оптимизацию не того эксперта которого нужно, доламал вот оставшуюся с прошлого раза 60% клавиатуры, завтра пойду за новой...

2016.11.14 18:56:52.568 Terminal MetaTrader 5 x64 build 1470 started (MetaQuotes Software Corp.) 

 
Andrey Dik:

Несколько билдов назад заметил, такую оказию: в тестере выбран эксперт, в МЕ делаются правки, но как только происходит компиляция в тестере выбирается уже другой эксперт..... Уже несколько раз получалось так, что я запускал оптимизацию не того эксперта которого нужно, доламал вот оставшуюся с прошлого раза 60% клавиатуры, завтра пойду за новой...

2016.11.14 18:56:52.568 Terminal MetaTrader 5 x64 build 1470 started (MetaQuotes Software Corp.) 

Сталкивался с таким. Жутко раздражало. Добавлю оптимизма - через некоторое время прекратилось.