Скачать MetaTrader 5

Какие изменения были сделаны в тестере стратегий в билде 188?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114269
Forex Trader  
После обновления с 186 на 188 билд тестер стратегий начал показывать ПРИНЦИПИАЛЬНО ДРУГИЕ результаты (естественно в худшую сторону)!!! Могли бы разработчики MetaTrader4 объяснить с чем это может быть связано? Какие изменения были сделаны в тестере стратегий в билде 188? Как эти изменения могли повлиять на результаты тестирования так что эксперт из вполне даже успешного превратился в жутко убыточный? И каким результатам теперь нужно верить? Тем из 186 билда или же новым из 188 билда?
MetaQuotes Software Corp.
Модератор
182646
MetaQuotes Software Corp.  
Изменения только те, о которых мы написали.
Выложите полный код эксперта в тегах code, пожалуйста.
Мы протестируем на обоих версиях и более точно ответим.
Forex Trader
114269
Forex Trader  
А могли бы Вы подсказать есть ли возможность отключения обновления у Metatrader?
То есть пока я буду выяснять отличия работы моего эксперта в обоих версиях тестера Metatrader могу ли я убрать постоянно появляющееся приглашение на обновление? Возможно, что мой эксперт не учитывает каких-то особенностей работы разных тестеров и думаю, что мне удастся их заметить и выложить их здесь для Вашего анализа.
Forex Trader
114269
Forex Trader  
Вот выкладываю тестовую версию эксперта.
Тестировался на демке версиях 186 и 188 от брокера InterbakFX, так как к сожалению демка версии 186 от Альпари была нечаянно проапгрейжена до 188 без бэкапа:o(. Остался только бэкап от InterbankFX.
EURUSD, период тестирования M5, все тики, выбрать дату 01.12.2005-31.12.2005, начальный депозит 1000USD.
На старой версии 186 имеем в результате за месяц чистую прибыль +803 (график депозита плавно растёт)
На новой версии 188 имеем в результате за месяц убыток -240 (график депозита плавно уменьшается)
Объясните в чём отличия? Или что мне нужно дописать в эксперте, чтобы результаты на обоих версиях отличались в пределах разумного, а не принципиально как сейчас?

//+------------------------------------------------------------------+
//|                                             Pivots_expert_D1.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <stdlib.mqh>

extern double v=1;

//тестовая система по H4
extern double tkH4=0.25;
extern double tstH4=1;
extern double tslH4=1.31;
extern bool tH4R2_ON  = true;
extern bool tH4S2_ON  = true;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
  //   iBars(NULL,PERIOD_D1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
       
//начало тестовой системы по H4
   double tH4yesterday_high,tH4yesterday_low,tH4yesterday_close,tH4yesterday_open,tdeltaH4;
   double tH4P,tH4R2,tH4S2,tH4M0,tH4M5,tprofit_H4R2,tprofit_H4S2;
   int i,ticket,metka=0,tcount_H4S2,tcount_H4R2;

   tH4yesterday_high = iHigh(Symbol(),240,1);
   tH4yesterday_low = iLow(Symbol(),240,1);
   tH4yesterday_close = iClose(Symbol(),240,1);
   tH4yesterday_open = iOpen(Symbol(),240,1);
   
  // Print(tH4yesterday_high," ",tH4yesterday_low," ",tH4yesterday_close," ",tH4yesterday_open);

   tH4P = ((tH4yesterday_high + tH4yesterday_low + tH4yesterday_close + tH4yesterday_open)/4);
   
   tdeltaH4 = tH4yesterday_high - tH4yesterday_low;
   
   tH4R2 = tH4P + tstH4*tdeltaH4;
   tH4S2 = tH4P - tstH4*tdeltaH4;
   tH4M0 = tH4P - tslH4*tdeltaH4;
   tH4M5 = tH4P + tslH4*tdeltaH4;
   tprofit_H4R2 = tH4P + tkH4*tdeltaH4;
   tprofit_H4S2 = tH4P - tkH4*tdeltaH4;
   
   //Округление результатов до поинтов для EURUSD
   tH4R2=MathRound(10000*tH4R2)/10000;
   tH4S2=MathRound(10000*tH4S2)/10000;
   tH4M0=MathRound(10000*tH4M0)/10000;
   tH4M5=MathRound(10000*tH4M5)/10000;
   tprofit_H4R2=MathRound(10000*tprofit_H4R2)/10000;
   tprofit_H4S2=MathRound(10000*tprofit_H4S2)/10000;
   
//Конец тестовой системы H4
 

 

{//начало for
for(ticket=0;ticket<OrdersTotal();ticket++)
     if (OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)==false) break;
     else
   {//начало else
         
      tcount_H4S2=proverka_buy(tH4S2,"tH4S2",tH4M0,tprofit_H4S2,tcount_H4S2,tH4S2_ON,0,0);
      tcount_H4R2=proverka_sell(tH4R2,"tH4R2",tH4M5,tprofit_H4R2,tcount_H4R2,tH4R2_ON,0,0);
        
    }//конец else
    metka=1; 
       
}//конец for    
     
    
if(metka==1) 
{
      OrderSet_buy(tH4S2,"tH4S2",tH4M0,tprofit_H4S2,tcount_H4S2,tH4S2_ON,v,0,0);    
      OrderSet_sell(tH4R2,"tH4R2",tH4M5,tprofit_H4R2,tcount_H4R2,tH4R2_ON,v,0,0);  
}
  
  
   return(0);
  }
//+------------------------------------------------------------------+


//Функции работы с отложенными ордерами
int proverka_buy(double znachenie, string name, double sl, double profit, int schetchik, bool permission, int start_punkt, int sl_punkt) 
{  
  if (OrderComment()==name){
      schetchik++;
      if ((OrderOpenPrice()-(znachenie+(start_punkt*Point))>0.99*Point || OrderOpenPrice()-(znachenie+(start_punkt*Point))<-0.99*Point) && OrderType()!=OP_BUY && 10000*(profit-(znachenie+(start_punkt*Point)))>4.9 && 10000*(znachenie+(start_punkt*Point)-(sl-(sl_punkt*Point)))>4.9)
      OrderModify(OrderTicket(),znachenie+(start_punkt*Point),sl-(sl_punkt*Point),profit,0);
      if ((!permission && OrderType()!=OP_BUY) || schetchik>1 || (OrderType()==OP_BUYLIMIT && OrderOpenPrice()>Ask+5*Point)) OrderDelete(OrderTicket());
               }  
  return(schetchik);     
}

int proverka_sell(double znachenie, string name, double sl, double profit, int schetchik, bool permission, int start_punkt, int sl_punkt) 
{  
  if (OrderComment()==name){
      schetchik++;
      if ((OrderOpenPrice()-(znachenie-(start_punkt*Point))>0.99*Point || OrderOpenPrice()-(znachenie-(start_punkt*Point))<-0.99*Point) && OrderType()!=OP_SELL && 10000*(znachenie-(start_punkt*Point)-profit)>4.9 && 10000*(sl+(sl_punkt*Point)-(znachenie-(start_punkt*Point)))>4.9)
      OrderModify(OrderTicket(),znachenie-(start_punkt*Point),sl+(sl_punkt*Point),profit,0);
      if ((!permission && OrderType()!=OP_SELL) || schetchik>1 || (OrderType()==OP_SELLLIMIT && OrderOpenPrice()<Bid-5*Point)) OrderDelete(OrderTicket());
               }  
  return(schetchik);     
}


//Функции установки отложенных ордеров
int OrderSet_buy(double znachenie, string name, double sl, double profit, int schetchik, bool permission, double obiem, int start_punkt, int sl_punkt) 
{
   if (schetchik==0 && permission && Ask>(znachenie+(4*Point)) && 10000*(profit-(znachenie+(start_punkt*Point)))>4.9 && 10000*(znachenie+(start_punkt*Point)-(sl-(sl_punkt*Point)))>4.9)  OrderSend(Symbol(),OP_BUYLIMIT,obiem,znachenie+(start_punkt*Point),0,sl-(sl_punkt*Point),profit,name,16385,0);
   if (schetchik==0 && permission && Ask<(znachenie-(2*Point)) && 10000*(profit-(znachenie+(start_punkt*Point)))>4.9 && 10000*(znachenie+(start_punkt*Point)-(sl-(sl_punkt*Point)))>4.9)  OrderSend(Symbol(),OP_BUYSTOP,obiem,znachenie+(start_punkt*Point),0,sl-(sl_punkt*Point),profit,name,16485,0);
  
   return(0);
}


int OrderSet_sell(double znachenie, string name, double sl, double profit, int schetchik, bool permission, double obiem, int start_punkt, int sl_punkt) 
{
   if (schetchik==0 && permission && Bid<(znachenie-(4*Point)) && 10000*(znachenie-(start_punkt*Point)-profit)>4.9 && 10000*(sl+(sl_punkt*Point)-(znachenie-(start_punkt*Point)))>4.9)  OrderSend(Symbol(),OP_SELLLIMIT,obiem,znachenie-(start_punkt*Point),0,sl+(sl_punkt*Point),profit,name,16388,0);
   if (schetchik==0 && permission && Bid>(znachenie+(2*Point)) && 10000*(znachenie-(start_punkt*Point)-profit)>4.9 && 10000*(sl+(sl_punkt*Point)-(znachenie-(start_punkt*Point)))>4.9)  OrderSend(Symbol(),OP_SELLSTOP,obiem,znachenie-(start_punkt*Point),0,sl+(sl_punkt*Point),profit,name,16488,0);
   return(0);
}
MetaQuotes Software Corp.
Модератор
182646
MetaQuotes Software Corp.  
Объясните в чём отличия?

Для начала хочу спросить: а Вы проверяли точки входа в том и этой версиях? Графики со всеми операциями ведь доступны. Проведите, пожалуйста, первичную проверку самостоятельно.

Наверняка тесты гонялись на разных брокерах (разных базах котировок)?
Посмотрите обсуждение вопроса "какова может быть разница в тестах из-за расхождений в истории"
"Новый билд MetaTrader 4. Build 177."
Forex Trader
114269
Forex Trader  
Объясните в чём отличия?

Для начала хочу спросить: а Вы проверяли точки входа в том и этой версиях? Графики со всеми операциями ведь доступны. Проведите, пожалуйста, первичную проверку самостоятельно.

Наверняка тесты гонялись на разных брокерах (разных базах котировок)?
Посмотрите обсуждение вопроса "какова может быть разница в тестах из-за расхождений в истории"
"Новый билд MetaTrader 4. Build 177."


Нет. Я гонял разные версии на программы на одном и том же брокере InterbankFX.
У разных брокеров разумеется будет масса расхождений во ВСЁМ.
При анализе результатов и графиков удалось заметить такую вещь, что на тестере старого билда 186 иногда происходит случайное срабатывание отложенных ордеров даже если цена находится в другом месте. Приведу пример:

15 2005.12.01 13:43 buy stop 5 1.00 1.1748 1.1739 1.1768
16 2005.12.01 16:00 modify 5 1.00 1.1663 1.1640 1.1719
17 2005.12.01 16:00 buy 5 1.00 1.1663 1.1640 1.1719
18 2005.12.01 16:00 modify 2 1.00 1.1813 1.1836 1.1757
19 2005.12.01 18:35 t/p 5 1.00 1.1719 1.1640 1.1719 56.00 1029.00

согласно отчёта 01.12.2005 16:00 сработал отложенный ордер 5 1.00 1.1663 1.1640 1.1719
Только вот на графике цена в этот момент находилась значительно выше на 1.1711.
В новом билде 188 в этом месте никакого срабатывания ордера не было.
Это вообще свойство старого билда или что?
Forex Trader
114269
Forex Trader  
При анализе результатов и графиков удалось заметить такую вещь, что на тестере старого билда 186 иногда происходит случайное срабатывание отложенных ордеров даже если цена находится в другом месте.

Это - одна из исправленных ошибок тестера.
MetaQuotes Software Corp.
Модератор
182646
MetaQuotes Software Corp.  
При анализе результатов и графиков удалось заметить такую вещь, что на тестере старого билда 186 иногда происходит случайное срабатывание отложенных ордеров даже если цена находится в другом месте.

Это - одна из исправленных ошибок тестера.

Вот они:
26. Tester: исправлена ошибка установки неверных SL и TP в отложенных ордерах;
27. Tester: исправлена ошибка модификации цены отложенного ордера;
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий