MQL4 - automated forex trading   /  

Статьи

Вход | Регистрация | Language: ru cn en
Обновись до 735 билда MetaTrader 4 и протестируй VPS бесплатно

Cтатьи  Тестер  Тестирование и оптимизация советников Авторизуйтесь или зарегистрируйтесь , чтобы добавить новую статью


Автоматический трейдинг в новом MetaTrader 5
и торгуй мобильно!
и торгуй мобильно!

Эта статья о возможностях
MetaTrader 4

и торгуй мобильно!

и торгуй мобильно!

Тестирование и оптимизация советников [ en ]

Введение

В статье подробно описан процесс тестирования и оптимизации советников в тестере торговой платформы MetaTrader 4. Необходимость и востребованность такого рода материала назрела давно. Многие начинающие пользователи торговой платформы MetaTrader 4 плохо представляют себе суть и последовательность действий при работе с экспертами.

Почти каждый день (без преувеличения) на форуме поднимаются вопросы начинающих пользователей - как установить советник в терминал, как запустить советник в работу, что такое оптимизация и как ее реализовать в тестере MetaTrader 4, что такое форвард-тест и т.п.

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


Тестирование и оптимизация советников

Рассмотрим последовательность действий при работе с советником с самого начала. Для примера, возьмем простой модифицированный нами советник Moving Average. В отличие от встроенной в торговую платформу MetaTrader 4 изначальной версии, наша версия реализует открытие позиций при пересечении ценой одной линии Moving Average, а закрытие позиций - при обратном пересечении ценой другой линии Moving Average с другим периодом. В нашу версию также добавлена функция открытия позиций в условиях рыночного исполнения торговых заявок Market Execution, поскольку такая программная модификация сильно востребована в последнее время. Вот код советника:

//+------------------------------------------------------------------+
//|                                      Moving Average_Мodified.mq4 |
//|                      Copyright © 2013, MetaQuotes Software Corp. |
//|                                      Modified by BARS            |
//+------------------------------------------------------------------+
#define MAGICMA  20050610
//-----------------------------------------
extern int     StopLoss           = 500;
extern int     TakeProfit         = 500;
extern double  Lots               = 0.1;
extern double  MaximumRisk        = 0.02;
extern double  DecreaseFactor     = 3;
extern int     MovingPeriod_Open  = 12;
extern int     MovingPeriod_Close = 21;
extern int     MovingShift        = 1;
extern color   BuyColor           = clrCornflowerBlue;
extern color   SellColor          = clrSalmon;
//---
double SL=0,TP=0;
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start()
  {
//--- Если на графике более 100 баров и торговый поток свободен
   if(Bars<100 || IsTradeAllowed()==false)
      return;
//--- Если расчитанный размер лота соответствует текущему размеру депозита
   if(CalculateCurrentOrders(Symbol())==0)
      CheckForOpen();   // начинаем работу
   else
      CheckForClose();  // в противном случае закрываем позиции
  }
//+------------------------------------------------------------------+
//| Определяет наличие открытых позиций                              |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Рассчитывает оптимальный размер лота                             |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal(); // history orders total
   int    losses=0;              // number of loss orders without a break
//---- select lot size
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//---- calcuulate number of loss orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
           {
            Print("Error in history!");
            break;
           }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)
            continue;
         //----
         if(OrderProfit()>0)
            break;
         if(OrderProfit()<0)
            losses++;
        }
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//---- return lot size
   if(lot<0.1)
      lot=0.1;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Функция открытия позиций                                         |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1)
      return;
//---- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod_Open,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>ma && Close[1]<ma)
     {
      if(StopLoss>0)
         SL=Bid+Point*StopLoss;
      if(TakeProfit>0)
         TP=Bid-Point*TakeProfit;
      res=WHCOrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,SL,TP,"Moving Average",MAGICMA,0,SellColor);
      if(res<0)
        {
         Print("Ошибка открытия ордера SELL #",GetLastError());
         Sleep(10000);
         return;
        }
     }
//---- buy conditions
   if(Open[1]<ma && Close[1]>ma)
     {
      SL=0;TP=0;
      if(StopLoss>0)
         SL=Ask-Point*StopLoss;
      if(TakeProfit>0)
         TP=Ask+Point*TakeProfit;
      res=WHCOrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,SL,TP,"Moving Average",MAGICMA,0,BuyColor);
      if(res<0)
        {
         Print("Ошибка открытия ордера BUY #",GetLastError());
         Sleep(10000);
         return;
        }
     }
//----
  }
//+------------------------------------------------------------------+
//| Функция закрытия позиций                                         |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//---- go trading only for first tiks of new bar
//(с первым тиком нового бара начинаем работу)
   if(Volume[0]>1) return;
//---- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod_Close,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //---- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Open[1]>ma && Close[1]<ma)
            OrderClose(OrderTicket(),OrderLots(),Bid,3,BuyColor);     break;
        }
      if(OrderType()==OP_SELL)
        {
         if(Open[1]<ma && Close[1]>ma)
            OrderClose(OrderTicket(),OrderLots(),Ask,3,SellColor);     break;
        }
     }
  }
//+-------------------------------------------------------------------+
//| Открывает позиции в условиях рыночного исполнения торговых заявок |
//+-------------------------------------------------------------------+
int WHCOrderSend(string    symbol,
                 int       cmd,
                 double    volume,
                 double    price,
                 int       slippage,
                 double    stoploss,
                 double    takeprofit,
                 string    comment,
                 int       magic,
                 datetime  expiration,
                 color     arrow_color)
  {
   int ticket=OrderSend(symbol,cmd,volume,price,slippage,0,0,comment,magic,expiration,arrow_color);
   int check=-1;
   if(ticket>0 && (stoploss!=0 || takeprofit!=0))
     {
      if(!OrderModify(ticket,price,stoploss,takeprofit,expiration,arrow_color))
        {
         check=GetLastError();
         if(check!=ERR_NO_MQLERROR)
            Print("OrderModify error: ",ErrorDescription(check));
        }
     }
   else
     {
      check=GetLastError();
      if(check!=ERR_NO_ERROR)
         Print("OrderSend error: ",ErrorDescription(check));
     }
   return(ticket);
  }
//+------------------------------------------------------------------+

Скачиваем прилагаемый файл советника Moving Average_Мodified.mq4. Файл советника нужно поместить в папку \MQL4\experts\ торгового терминала MetaTrader 4. Например, если у Вас торговый терминал установлен в папку C:\Program Files\MetaTrader 4\, то советник Вы должны будете поместить в папку C:\Program Files\MetaTrader 4\MQL4\experts\. После чего запускаем (перезапускаем) терминал.

Слева, в окне Навигатор->Советники, должен появиться файл нашего советника с названием Moving Average_Мodified.

Запускаем Тестер стратегий из меню (Ctrl+R) торгового терминала MetaTrader 4. Далее последовательность действий будет такая (см. рисунок):


  • Из выпадающего списка "Советник" выбираем наш эксперт Moving Average_Мodify;
  • Из списка "Символ" выбираем валютную пару для наших экспериментов, например EURUSD;
  • Из списка "Период" выбираем таймфрейм для работы, например H1;
  • Ставим галочку "Использовать дату" и задаем временной период тестирования и оптимизации. Например, с 1 августа 2008 по 1 мая 2009. Почему именно по 1 мая, а не по сегодняшний день (08 июня)? Это вам будет ясно чуть позже.
  • Из списка "Модель" выбираем режим "По ценам открытия".

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

Начнем тестирование. Пока используем в СВОЙСТВАХ ЭКСПЕРТА параметры по умолчанию. Нажимаем на кнопку "Старт" в правом нижнем углу тестера и, после того как зеленая полоска внизу пробежит справа налево, мы можем посмотреть результат теста. Для этого нужно открыть окно "Отчет" тестера. Либо открыть график баланса полученного тестерного прогона - окно "График" (см. рис. выше).

Увы, картину здесь мы увидим удручающую. Наш начальный депозит уверенно стремится к нулю... Обобщенные статистические результаты этого тестерного прогона мы можем посмотреть в окне "Отчет". При этом для пользователей-новичков полезно будет заглянуть в статью "Что означают цифры в отчете тестирования эксперта".


Вывод: При тех параметрах, что были заданы в СВОЙСТВАХ ЭКСПЕРТА по умолчанию, наш советник не способен профитно работать на заданном таймфрейме по заданному инструменту. Нужно подобрать иные параметры, при которых работа советника будет прибыльной!

Иначе говоря, "под оптимизацией можно понимать нахождение таких параметров выбранной торговой системы, которые позволяют получить наилучшие результаты" (статья "Как не попасть в ловушки оптимизации?").

В режиме оптимизации советник автоматически прогоняется неоднократно, меняя внешние переменные по заданной нами схеме в СВОЙСТВАХ эксперта: начальное значение-шаг-конечное значение. Тестер МТ4 позволяет оптимизировать несколько параметров одновременно. Нам следует задать параметры оптимизации. Для этого в тестере нажимаем кнопку (справа вверху) и раскрываем окно СВОЙСТВА ЭКСПЕРТА:


Ставим галочки справа в окошечках тех параметров, которые мы будем оптимизировать, и зададим начальные значения, шаги и конечные значения этих параметров в колонках "Старт", "Шаг" и "Стоп", соответственно. Из рисунка видно, что оптимизироваться (подбираться) будут параметры:

  • StopLoss - стоплосс (старт=400 пунктов, шаг=10 пунктов, стоп=1500 пунктов);
  • TakeProfit - тейкпрофит;
  • MovingPeriod_Open - период МА для открытия позиций;
  • MovingPeriod_Close - период МА для закрытия позиций.

Начальные и конечные значения для оптимизации выбираем, исходя из позиции здравого смысла. Для валютной пары EURUSD и таймфрейма Н1 нам представляется разумным задать такие значения, которые вы видите на рисунке выше. Напомним, что котировки у нас в MetaTrader 4 в данном случае пятизначные.

В режиме "По ценам открытия" оптимизация идет быстро. Поэтому мы можем позволить себе оптимизировать все выбранные нами четыре параметра одновременно. Закрываем окно "Свойства эксперта" нажатием кнопки OK и ставим галочку в окошечко "Оптимизация" справа в тестере. После чего нажимаем кнопку "Старт" в правом нижнем углу тестера. Оптимизация началась.

Сам процесс оптимизации можно визуально контролировать в окнах тестера "Результаты оптимизации" или "График оптимизации". Если вместо графика оптимизации вы наблюдаете зеленые поля, то для лучшей наглядности рекомендуем, щелкнув правой мышкой, убрать в появившемся окне галочку с опции "Двухмерная поверхность".

После окончания оптимизации (когда зеленая полоска внизу пробежит всю свою дорожку) раскроем окно тестера "Результаты оптимизации" и поднимем вверх его верхнюю границу. После чего, щелкнем по второй колонке "Прибыль", чтобы результаты прогонов выстроились в порядке убывания. Картину мы увидим вот такую:


Как видно из рисунка, при некоторых комбинациях параметров советника достигается максимальная прибыль $4658. Однако не стоит торопиться загружать в наш советник эти параметры. Слишком уж велика просадка при такой прибыли! Нам же для начала желательно выбрать из предложенных вариантов подходящее сочетание максимальной прибыли и разумной просадки. Поэтому мы возьмем проход 2406 с прибылью $2715 и минимальной относительной просадкой 19,83%.

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

  • Начальный депозит 1000.00
  • Чистая прибыль 2705.40
  • Общая прибыль 7520.57
  • Общий убыток -4815.17
  • Прибыльность 1.56
  • Матожидание выигрыша 15.37
  • Максимальная просадка 413.08 (11.48%)
  • Относительная просадка 19.88% (399.50)
  • Всего сделок 176
  • Короткие позиции (% выигравших) 80 (41.25%)
  • Длинные позиции (% выигравших) 96 (32.29%)
  • Самая большая прибыльная сделка 142.10
  • Самая большая убыточная сделка -87.10
  • Средняя прибыльная сделка 117.51
  • Средняя убыточная сделка -42.99
  • Максимальное количество непрерывных выигрышей (прибыль) 4 (567.62)
  • Максимальное количество непрерывных проигрышей (убыток) 8 (-310.27)
  • StopLoss=870; TakeProfit=1420; Lots=0.1; MaximumRisk=0.02; DecreaseFactor=3; MovingPeriod_Open=37; MovingPeriod_Close=54; MovingShift=1;


Насколько стабилен этот результат? И будет ли советник в реальном времени работать так же, как отработал у нас при прогоне в тестере? Ответы на эти вопросы в какой-то мере может дать так называемый форвард-тест!

Напомню, что мы задали дату тестирования и оптимизации с 1 августа 2008 по 1 мая 2009. Мы умышленно не стали оптимизировать советник с августа 2008 по сегодняшний день - 8 июня 2009. Мы как бы обучали советник на заданном нами интервале времени! А теперь пришла пора "строго спросить" с него, с советника - принять экзамен.

Т.е. протестировать советник с этими же параметрами вне периода оптимизации - со 2 мая по 8 июня 2009! Именно такой прогон с и принято называть "форвард-тестом". В отличие от предыдущего - бэк-теста.

По результатам форвард-теста мы уже более уверенно и объективно сможем судить о перспективах работы нашего советника в реальном времени. Не будем более вас мучить лукавым ожиданием и сделаем, наконец, описанный выше форвард-тест! Для этого зададим дату в окне тестера с 2 мая 2009 по "сегодня"(8 июня). И нажмем кнопку "Старт"! Вот результат:

  • Начальный депозит 1000.00
  • Чистая прибыль 348.44
  • Общая прибыль 1049.34
  • Общий убыток -700.90
  • Прибыльность 1.50
  • Матожидание выигрыша 8.93
  • Максимальная просадка 287.60 (20.82%)
  • Относительная просадка 20.82% (287.60)
  • Всего сделок 39
  • Короткие позиции (% выигравших) 22 (59.09%)
  • Длинные позиции (% выигравших) 17 (70.59%)
  • Самая большая прибыльная сделка 42.00
  • Самая большая убыточная сделка -89.00
  • Средняя прибыльная сделка 41.97
  • Средняя убыточная сделка -50.06
  • Максимальное количество непрерывных выигрышей (прибыль) 6 (251.90)
  • Максимальное количество непрерывных проигрышей (убыток) 3 (-267.00)


Неожиданный результат! Нечасто так бывает с первого раза, и мы сами такого не ожидали. Форвард-тест дал неплохую прибыль! Хотя и просадка тоже имеет место. В идеале следует отследить на графике в визуальном режиме работы тестера участок с убыточными сделками, которые дали максимальную просадку, и выяснить причины этой просадки, а также продумать приемы и методы ее устранения. Любой читатель данной статьи может повторить описанные процедуры (в MetaTrader 4 Альпари) и убедиться в совершенной справедливости всех полученных результатов. Добавим, что аналогичный форвард-тест с более прибыльными параметрами оптимизации и большей просадкой (3061 и 771.95) дал гораздо худший результат.

Впрочем, обольщаться рано. Для более обьективной оценки советника следует сделать на истории несколько таких форвард-тестов. Порядок действий подобных процедур и общая оценка результата очень хорошо и толково описаны в статьях из серии Эксперты на основе популярных торговых систем и алхимия оптимизации торгового робота.

Мы же здесь ставим своей целью познакомить пользователей с начальными основами и самыми элементарными, первичными действиями по работе с советниками. Вернемся, однако, к той немалой просадке, которую мы получили при прогоне форвард-теста. Из графика видно, что просадка имела место после 18 мая 2009 года, сделки №18-20. Попробуем отследить ситуацию в визуальном режиме тестера. Для этого поставим галочку в окошечке "Визуализация" тестера, а режим работы тестера в окошечке "Модель" переведем в режим "По всем тикам" для наглядности. Движком визуализации мы сможем регулировать скорость истечения времени (т.е. скорость поступления котировок). Задаем дату с 18 мая 2009 и нажимаем кнопку "Старт".

Вот такая ситуация обнаружилась на этом убыточном участке истории:

Три подряд убыточные сделки SELL дали нам эту существенную просадку. Причем, сделки происходили против тренда, что сразу проясняет главный недостаток нашего советника - слишком примитивный алгоритм работы. Необходимо добавить хотя бы простейший трендовый фильтр и/или разделить механизм входа длинных и коротких сделок на самостоятельную, независимую работу. Примерно так, как это предлагается в статье Нестандартная автоматическая торговля, либо воспользоваться любым другим подходящим приемом. Однако данные вопросы уже выходят за пределы нашей темы.


Заключение

Нами были описаны простейшие приемы работы по тестированию и оптимизации советника в тестере. Для дальнейшего понимания и приобретения опыта в подобных экспериментах можно заглянуть в статьи "Как реализовать свой критерий оптимизации" и "Оптимизация и Тестирование вне выборки".

В заключение, рассмотрим некоторые самые частые вопросы, возникающие у начинающих пользователей при работе с тестированием советников.

1. Почему результаты одноименных тестов разные в разных ДЦ?

Разные результаты тестов в разных ДЦ объясняются разными котировками. Каждый брокер имеет своих поставщиков котировок. Отсюда и возникает ценовая разница и, как следствие, отображается на результатах теста.

2. Почему в одном и том же ДЦ разные результаты при одноименных тестах?

Разные результаты в одном и том же ДЦ могут носить несколько причин, самая распространенная:
Плавающий спред, - оказывает довольно большое влияние на результат, особенно, при тестировании на малых таймфреймах и ПО ВСЕМ ТИКАМ. Тестер терминала MetaTrader 4 запоминает последнее значение спреда. При следующем прогоне спред может измениться, соответственно изменится и результат теста.

3. Почему разные результаты при тестированиях на тиках и по ценам открытия?

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

4. Почему эксперт не открывает позиции?

В первую очередь необходимо открыть журнал тестера стратегий. Он покажет код возможной ошибки. Расшифровку номера ошибки можно посмотреть в разделе Коды ошибок.

Мы надеемся, что в нашей статье начинающие пользователи торговой платформы MetaTrader 4 нашли для себя ответы на многие вопросы. Понятно, что настоящее понимание приходит с опытом, и самостоятельно проделав (повторив) описанные в статье действия, новички получат небольшую крупицу такого опыта. Также будет приобретен необходимый навык для дальнейших экспериментов!

При подготовке статьи были использованы материалы, ссылки на которые приведены в тексте, а также материалы со странички Как запустить советник? сайта И.Кима.

Прикрепленные файлы:
Moving Average_Modified.mq4 (7.0 Kb)
Создана: 23.06.2009  Автор: Irbis
Предупреждение: все права на данные материалы принадлежат MetaQuotes Software Corp. Полная или частичная перепечатка запрещена.
Тестирование экспертов на нестандартных таймфреймах
Тестирование экспертов на нестандартных таймфреймах

Оказывается не просто, а очень просто...

Техника оптимизации (тестирования) и некоторые критерии выбора рабочих параметров эксперта
Техника оптимизации (тестирования) и некоторые критерии выбора рабочих параметров эксперта

Тестерный "Грааль" получить очень легко и просто, а вот избавиться от этого - гораздо сложнее. В статье рассмотрен вариант выбора рабочих параметров эксперта с автоматизированной групповой обработкой результатов оптимизации и тестирования, с максимальным использованием возможностей терминала и минимальной нагрузкой на конечного пользователя.

19 комментариев: 1 2   Авторизуйтесь или зарегистрируйтесь

Всем доброго дня! Я новичок. Скачав Moving Average_Modified.mq4, решил его протестировать и оптимизировать на терминале Alpari. Тест прошел, а оптимизация не хочет проходить- зеленый индикатор на тестере внизу проскакивает мгновенно и не выдает ни графика оптимизации ни результатов оптимизации. Поэтому неоткуда брать оптимизированные данные для советника. И такое повторяется на других терминалах (у меня их 4 шт.). Пробовал разные дипозиты и пары- один и тот же результат

Кто может помочь, помогите.

08.03.2014 10:01 borer47

в "навигаторе" советник светится серым. Соответственно не работает в тестере (выбрать можно, но прогон не работает и свойства самого советника не работают).

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

Не подскажите в чем может быть причина?

14.01.2014 10:33 forex2013forex
Подскажите пожалуйста как изменить размер лота в советнике : Moving Average_Мodify. в коде везде размер лота поменял, а он всеравно по 0.1 считает. Кстати при хорошей оптимизации неплохая прибыль получается.
26.11.2010 00:47 Chved
marketeer писал(а):
BARS писал(а):

marketeer, Эквити, на графике показываются в тестере ( рисунки в статье № 2.5.6 - зелёный график - эквити), что касаемое анализа оптимизации.

1. "Как не попасть в ловушки оптимизации?"

2. Это очень большая тема, главное что и описать толком не выйдет т.к. очень много нюансов, зависимость от кода и т.п.

Я в курсе, что эквити должно показываться на графике ;-), но происходит это не всегда. Вроде бы очевидно, что график эквити просто совпадает в таком случае с балансом и перекрыт им, но в результате мы возвращаемся к той же самой проблеме: если баланс при некоторых условиях равен эквити, то почему просадка не совпадает с тем, что видно на графике? Прикладываю результат теста вырожденного случая со всеми прибыльными сделками. Объясните, пожалуйста, откуда взялась просадка в $128.40. Она достаточна большая - так что я могу ожидать, что график эквити должен сильно отличаться от прямолинейного баланса и быть видимым.

Выложи советника по котору делал тестер
09.08.2009 14:39 Ermak
kenguru1111 писал(а):

Я тестировала ваш советник в тестере МТ4 без оптимизации тем же самым методом и у меня получилась прибыль, а не убыток

Валютная пара и временной период тот же (с 01.08.2008 по 01.05.2009). Почему?

Ольга, сделок у вас получилось слишком много, в отличии от первого прохода в тестере, где то у вас ошибка.
22.07.2009 16:00 BARS

Я тестировала ваш советник в тестере МТ4 без оптимизации тем же самым методом и у меня получилась прибыль, а не убыток

Валютная пара и временной период тот же (с 01.08.2008 по 01.05.2009). Почему?

19.07.2009 21:46 kenguru1111
140563 писал(а):
подскажите новичку,плз..почему не проходит оптимизация.Все результаты оптимизации по советнику Moving Average Modify пустые.Может из-за рублёвого депозита?Да и тест выдаёт совсем другой график...Пользуюсь платформой МТ 4 Альпари..

1. После неудачного запуска оптимизации, откройте журнал. Там будет запись... 

2. Пользуйтесь поиском - ( справа вверху), если вы там не нашли свой ответ, то,  обратитесь  в ветку "Любой вопрос новичка, чтоб не захломлять форум. Профи не проходите мимо. Без вас никуда."    не забудьте, детальнее описать все Ваши действия. 

30.06.2009 13:20 BARS

На случай, если у кого-то возникнет аналогичный вопрос, подведу итог обсуждению просадки и отображения эквити в тестере, которое я сам тут затеял. Итак, как было уже сказано, просадка считается по эквити. Цифрам верить. Что же касается ситуации, что график эквити (средств) не всегда отрисовывается в тестере, то для того существует следующее объяснение. График в тестре выводится дискретно, по закрытию сделок. Если в каждый момент в рынке только одна позиции, то при её закрытии эквити становится равным балансу. В промежутке между открытием и закрытием позиции эквити "гуляет" вверх вниз в зависимости от движений цены, но на графике тестера это не отображается - "бай дизайн", так сказать, как раз из-за дискретизации по фактам закрытия сделок. Если бы график мог выводиться по барам а-ля индикатор, то мы бы увидели линию эквити. При текущей реализации, чтобы проверить просадку, указанную тестером, пришлось воспользоваться индикатором (в частности, подойдет Equity_v7, v8 и пр.). Если в момент закрытия позиции, есть еще хотя бы одна открытая позиция, то график эквити в данной точке, скорее всего, отклонится от баланса и станет видимым (уж насколько заметно будет отклонение, зависит от хода цен).

28.06.2009 21:24 marketeer
nkv6 писал(а):

Здравствуйте! Мне как новичку статья очень понравилась -более или менее прояснилось... Что меня смутило, так это абсолютно другие результаты по тестированию Модифицированного мувинга.

Возможно, вы проводили тестирование советника не в мт4 Альпари. Самые распростанёные отличия - указаны в заключении статьи .
Кроме того. Проверьте, чтобы по тестируемому имструменту имелась вся история котировок. На том отрезке времени, на котором вы тестируете советник. В противном случае, подкачайте историю, открыв график и нажав (и держа не отпуская) кл. HOME на клавиатуре. 
27.06.2009 16:41 BARS

Здравствуйте! Мне как новичку статья очень понравилась -более или менее прояснилось... Что меня смутило, так это абсолютно другие результаты по тестированию Модифицированного мувинга.

27.06.2009 08:57 nkv6
19 комментариев: 1 2