Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Хорошо торгуешь? Стань поставщиком сигналов и заработай еще больше!
Nefedov Kirill
2889
Nefedov Kirill 2009.08.11 18:20 

Разработчики, вопрос к Вам.


Имею минутную историю с 1999 года по EURUSD. Из M1 получены все остальные таймфремы. Взял для тестирования штатный эксперт Moving Average и немного его изменив пытаюсь протестировать на M15 c 1999 года.


Сначала оптимизировал параметры эксперта на всем участке с 1999.01.01 по 2009.08.02, метод по открытым барам. Подставил параметры и решил на этом же промежутке протестировать в потиковом моделировании. В результате в папке истории тестера был создан файл ветом более 6Gb и началось тестирование с заданного времени. Тест резко оборвался на 2001.12.11 17:45, вывелся отчёт. В логах тестера никаких ошибок.

Тестирование проводил на 220 билде, как наиболее стабильном. отчёт прилагаю.

подумалось может глюк билда, протестировал на 225 билде, результат тот же. отчёт прилагаю.


Код эксперта:

//+------------------------------------------------------------------+
//|                                               Moving Average.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#define MAGICMA  20050610

extern double MovingPeriod       = 12;
extern double MovingShift        = 6;
extern int    Price              = 0;

//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol){
   int buys=0,sells=0;
      for(int i=0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){
               if(OrderType()==OP_BUY)  buys++;
               if(OrderType()==OP_SELL) sells++;
            }
         }
//---- return orders volume
      if(buys>0) return(buys);
      else       return(-sells);
      }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen(){
   double ma;
   int    res;
   if(Volume[0]>1) return;
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,Price,0);
   if(Open[1]>ma && Close[1]<ma){ res=OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"",MAGICMA,0,Red); return;  }
   if(Open[1]<ma && Close[1]>ma){ res=OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"",MAGICMA,0,Blue); return;  }
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose(){
   double ma;
   if(Volume[0]>1) return;
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,Price,0);
   for(int i=0;i<OrdersTotal();i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      if(OrderType()==OP_BUY){  if(Open[1]>ma && Close[1]<ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White); break; }
      if(OrderType()==OP_SELL){ if(Open[1]<ma && Close[1]>ma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White); break; }
     }
  }
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start(){
   if(Bars<100 || IsTradeAllowed()==false) return;
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose();
  }

Подумал, а может история глюкнула в том месте, потому как использовал одну и ту же историю и в 220 и 225 билдах. Решил повторить процедуру на других валютных парах USDCHF, GBPUSD, USDJPY результат одинаковый, оптимизация проходит нормально, тест по барам проходит нормально, а вот по тикам максимум за 2 года можно протестировать только.


Что за ограничение и как с ним бороться.

Файлы:
Nefedov Kirill
2889
Nefedov Kirill 2009.08.11 18:55  

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

Файлы:
Илья
2546
Илья 2009.08.11 19:03  
Да и момент интересен касаемо отображения минуток. У меня почему-то они отображаются только до определённой давности. История закачана-перезакачана. И скрипт, использующий минутную историю, не хочет отображаться. Например по фунту на данный момент по 06.08
Nefedov Kirill
2889
Nefedov Kirill 2009.08.11 19:26  
sayfuji >>:
Да и момент интересен касаемо отображения минуток. У меня почему-то они отображаются только до определённой давности. История закачана-перезакачана. И скрипт, использующий минутную историю, не хочет отображаться. Например по фунту на данный момент по 06.08

Тут 2 варианта. 1-й количество баров в окне задаётся в настройках терминала. 2-й неправильно написан скрипт, идет прямое обращение к видимым барам, а не к тайм серии например.

Илья
2546
Илья 2009.08.11 19:49  
Вот это ценная инфа. Спс.
Игорь
157
Игорь 2009.08.11 20:00  
HIDDEN >>:

Разработчики, вопрос к Вам.


Имею минутную историю с 1999 года по EURUSD. Из M1 получены все остальные таймфремы. Взял для тестирования штатный эксперт Moving Average и немного его изменив пытаюсь протестировать на M15 c 1999 года.


Сначала оптимизировал параметры эксперта на всем участке с 1999.01.01 по 2009.08.02, метод по открытым барам. Подставил параметры и решил на этом же промежутке протестировать в потиковом моделировании. В результате в папке истории тестера был создан файл ветом более 6Gb и началось тестирование с заданного времени. Тест резко оборвался на 2001.12.11 17:45, вывелся отчёт. В логах тестера никаких ошибок.

Тестирование проводил на 220 билде, как наиболее стабильном. отчёт прилагаю.

подумалось может глюк билда, протестировал на 225 билде, результат тот же. отчёт прилагаю.


Код эксперта:

Подумал, а может история глюкнула в том месте, потому как использовал одну и ту же историю и в 220 и 225 билдах. Решил повторить процедуру на других валютных парах USDCHF, GBPUSD, USDJPY результат одинаковый, оптимизация проходит нормально, тест по барам проходит нормально, а вот по тикам максимум за 2 года можно протестировать только.


Что за ограничение и как с ним бороться.

Попробуйте сдвинуться во времени, например, начать с 2002.01.01. Если тормознет на 2005 году, то можно предположить, что разработчики МТ работают с позицией файла как с long, отсюда и предел в 2ГБ. Если так, пишите им.

Nefedov Kirill
2889
Nefedov Kirill 2009.08.11 20:27  
OneDepo >>:

Попробуйте сдвинуться во времени, например, начать с 2002.01.01. Если тормознет на 2005 году, то можно предположить, что разработчики МТ работают с позицией файла как с long, отсюда и предел в 2ГБ. Если так, пишите им.

Сдвиг проверил. Начал тест с 2001.12.12 дотянули до начала 2005 года.

Раньше такой проблемы не замечал. Посмотрим что завтра ответит Рошид или другие из компании....


Теряется смысл иметь историю такого объёма, если нельзя по всей по ней провести тест.

Boris
503
Boris 2009.08.12 00:54  
HIDDEN >>:

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


У вас в двух архивах стоят разные параметры

в StrategyTester_220f225.zip Parameters MovingPeriod=94; MovingShift=99; Price=2

в StrategyTester.zip Parameters MovingPeriod=59; MovingShift=89; Price=2

Nefedov Kirill
2889
Nefedov Kirill 2009.08.12 09:47  
Рошид, ответь пожалуйста как быть в моей ситуации?
Rashid Umarov
Админ
11682
Rashid Umarov 2009.08.12 09:50  
Рашид не знает, так как не может объять необъятное. Я не вникал, не было времени пока, к сожалению.
Nefedov Kirill
2889
Nefedov Kirill 2009.08.12 09:54  
Rosh >>:
Рашид не знает, так как не может объять необъятное. Я не вникал, не было времени пока, к сожалению.

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


Причем в сети видел и отчёты и скрины тестирования именно с 1999 года по 2008 за один проход. Вот и насторожил момент, а чего у меня то не работает.

/ /12345
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий