тел.: 8 800 200 86 47|+7 (812) 336 61 11Заказать звонок
Admiral Markets UK Admiral Markets UK Choose your country

MQLabs: Утренний флэт. Часть 2. Утренний прорыв.

Индикатор MorningBreakout

Советник MorningBreakout_Expert

Файлы стратегии для AutoGraf 4.0

Развернутые результаты тестирования эксперта

 

    Мысли о возвращении к стратегии, которая была популярна в 2009 году, появились благодаря названию системы (утренний брэкаут), описанной одним из участников форума MQLabs. Непосредственно описание стратегии очень далеко от методик "утреннего флэта". Установить четкую взаимосвязь между торговыми тактиками удалось вследствие более детального рассмотрения и сопоставления условий.

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

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

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

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

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

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

Рис. 1. Графическое представление системы "Утренний прорыв".

    На Рис. 1 представлен типичный для Forex случай. Цена быстро пробивает нижнюю границу канала, но дальнейшее движение вниз затормаживается. Благодаря наличию отступа от нижней границы канала, короткая сделка так и не была открыта. Происходит разворот ценового движения и можно наблюдать пробитие верхней границы канала. После нескольких попыток преодолевается отступ вверх, что приводит к открытию длинной сделки. В течение следующих 30-ти минут цена достигает уровня цели и сделка закрывается в прибыль.

    Коэффициент для уровней открытия в рассматриваемом случае составил 50%, а коэффициент для уровней целей - 200%.

    Кроме расчета уровня закрытия сделки в прибыль (Take Profit) всегда стоит производить расчет уровня закрытия сделки в убыток (Stop Loss), т. к. нельзя быть на 100% уверенным в положительном исходе сделки. В случае стратегии "Утренний прорыв" ответ на вопрос о размещении уровня стоп-приказа очевиден - это уровень открытия противоположной сделки. То есть для сделки BUY, исходя из Рис. 1, Take Profit = 1.6204, Stop Loss = 1.6043. Для сделки Sell уровни такие: Take Profit = 1.5965 (не показан на Рис. 1), Stop Loss = 1.6162 + спрэд.

    Показанные на Рис. 1 разноцветные уровни являются плодом деятельности индикатора MorningBreakout. Он располагает пятью настраиваемыми параметрами, значения которых подобраны для валютной пары GBPUSD.

    Первые два - StartHour и StartMinute - задают время начала торговли в часах и минутах соответственно. По умолчанию это 10:00.

    Следующий параметр LevelOpen. Это коэффициент для формирования уровней открытия сделок. Указывается в процентах и по умолчанию равен 110. Подобный параметру LevelOpen параметр TargetLevel. Это коэффициент для расчета цели сделки. Указывается в процентах от ширины соответствующей части канала (восходящей или нисходящей). По умолчанию равен 700.

    Пятый параметр - MinProfit. Он нужен для тех случаев, когда ширина одной из частей канала оказывается мала (в некоторых случаях может быть равна нулю). В результате отступ от границы канала, формирующий цену открытия сделки, также оказывается бесконечно мал (а вместе с ним и уровень цели оказывается очень близко), что приводит к нивелированию основного преимущества стратегии - фильтрация ложных пробитий. Для определения минимального значения отступа в пунктах и используется этот параметр. Если пользователь случайно или намерено укажет MinProfit равным нулю (или близким к нему), то  индикатор будет использовать другое значение - уровень стопов, принятый брокером для данной валютной пары. То есть всегда будет выбираться наибольшее из двух значений. В итоге, если разница между уровнем открытия сделки и границей канала окажется меньше минимального значения, уровень рассчитан не будет, а значит, пути для открытия сделки в данную сторону также не будет.  По умолчанию MinProfit = 10.

    На основании описания стратегии, а также работы индикатора, разработан советник MorningBreakout, имеющий такие же настроечные параметры, как и индикатор.  Его важнейшие функции - расчет уровней (GetLevels) и осуществление торговли (Trade). По традиции первой будет рассмотрена функция GetLevels:

 
//+-------------------------------------------------------------------------------------+
//| Расчет уровней открытия сделок и их целей (профитов)                                |
//+-------------------------------------------------------------------------------------+
void GetLevels()
{
// - 1 - ===================== Возвращение значений уровней к начальным =================
 OpenD = 0;                                       // Нулевое значение для всех переменных
 OpenU = 0;                                       // означает, что уровень не определен и
 LowV = 0;                                        // использовать его нельзя
 HighV = 0;
// - 1 - =============================== Окончание блока ================================
 
// - 2 - ===================== Определение окончания утреннего флэта ====================
 if (TimeHour(Time[0]) > StartHour ||                   // Текущий час больше часа старта
    // или текущий час равен часу старта, а текущая минута больше или равна минуте старта
     (TimeMinute(Time[0]) >= StartMinute && TimeHour(Time[0]) == StartHour))
   {  
// - 2 - =============================== Окончание блока ================================
   
// - 3 - ================ Нахождение свечей начала и окончания утреннего флэта ==========
    int StartBar = iBarShift(NULL, 0, CurDay);// Бар текущего таймфрейма, соответствующий
                                              // началу суток
    int FinishBar = iBarShift(NULL, 0,        // Бар текущего таймфрейма, соответствующий
                              CurDay+StartHour*3600+StartMinute*60)+1; // последнему бару
                                              // "утреннего флэта"
// - 3 - =============================== Окончание блока ================================
 
// - 4 - ======================== Нахождение границ утреннего флэта =====================
    double POpen = Open[StartBar];                                 // Цена открытия суток
    LowV = Low[iLowest(Symbol(), 0, MODE_LOW, StartBar-FinishBar+1,     // Нижняя граница
                       FinishBar)];                                  
    HighV = High[iHighest(Symbol(), 0, MODE_HIGH, StartBar-FinishBar+1,// Верхняя граница
                          FinishBar)];                         
// - 4 - =============================== Окончание блока ================================

// - 5 - ======================== Расчет верхних уровней входа и цели ===================
    OpenU = (HighV - POpen)*LevelOpen/100 + HighV;            // Верхний уровень открытия
    TargetU = (HighV - POpen)*TargetLevel/100 + HighV;           // Верхняя цель (профит)
    if (OpenU - HighV <= MathMin(StopLevel + Spread, MinProfit*Point))   // Расстояние от
      OpenU = 0;      // верхней границы флэта до точки входа должно быть достаточным для
                      // комфортной установки ордера BuyStop. Иначе уровень отменяется
// - 5 - =============================== Окончание блока ================================
            
// - 6 - ======================== Расчет нижних уровней входа и цели ====================
    OpenD = LowV - (POpen - LowV)*LevelOpen/100;               // Нижний уровень открытия
    TargetD = LowV - (POpen - LowV)*TargetLevel/100;              // Нижняя цель (профит)
    if (LowV - OpenD <= MathMin(StopLevel + Spread, MinProfit*Point))    // Расстояние от
      OpenD = 0;      // верхней границы флэта до точки входа должно быть достаточным для
                      // комфортной установки ордера BuyStop. Иначе уровень отменяется
// - 6 - =============================== Окончание блока ================================

    LastDay = CurDay;                               // Уровни для текущего дня рассчитаны
   }       
 
 return;                                             
}

    Результатом выполнения функции является расчет значений переменных HighV (верхняя граница канала), OpenU (уровень открытия длинной сделки), LowV (нижняя граница канала), OpenD (уровень открытия короткой сделки), TargetU (профит длинной сделки) и TargetD (профит короткой сделки). В процессе работы первые четыре уровня могут быть не рассчитаны. Поэтому при каждом вызове функции их значения обнуляются. Обнуление TargetU и TargetD не требуется, т. к. они используются совместно с OpenU и OpenD, то есть при обнаружении нулевого значения OpenU или OpenD не используется соответствующая цель.

    Расчет уровней возможен лишь при достижении времени StartHour часов и StartMinute минут (время начала торговли и окончания формирования канала). Это условие проверяется в блоке 2 и при его выполнении совершается переход ко всем остальным блокам функции.

    Третий блок рассчитывает номера баров текущего таймфрейма, соответствующие времени начала текущих суток и времени окончания "утреннего флэта". Вспомогательной переменной при этом выступает CurDay, в которой всегда хранится время начала текущего торгового дня. Результаты записываются в переменные StartBar и FinishBar.

    В четвертом блоке формируются границы канала. Для этого на участке от StartBar до FinishBar находятся максимальное и минимальное значения цены. Они записываются соответственно в переменные HighV и LowV. Дополнительно формируется цена открытия дня, значение которой сохраняется в переменной POpen.

    Пятый и шестой блоки схожи по своей структуре. В них рассчитываются уровни открытия и целей сделок. Уровни могут остаться невостребованными, если цена открытия находится слишком близко к соответствующей границе канала. Степень близости регулируется значением входного параметра эксперта MinProfit. Пятый блок вычисляет значения OpenU и TargetU, а шестой - OpenD и TargetD.

    В конце функции переменная LastDay принимает значение CurDay. При постоянной работе эксперта такое решение позволит выполнять функцию GetLevels один раз в сутки.

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

 
// - 4 - ================== Поиск последней сделки эксперта в истории счета =============
   BuyTime = 0; SellTime = 0;
   for (int i = 0; i < OrdersHistoryTotal(); i++)
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
       if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol())
         if (MathMod(OrderType(), 2) == 0)
           BuyTime = MathMax(OrderOpenTime(), BuyTime);
          else
           SellTime = MathMax(OrderOpenTime(), SellTime); 
// - 4 - =========================== Окончание блока ====================================

    Это дополнение необходимо для правильного ориентирования эксперта при постоянном включении/выключении. Допустим, был рассчитан лишь один уровень для открытия сделки, который в течение дня успешно отработал, принеся трейдеру прибыль. Зная, что до конца дня стратегия не совершит новых операций, трейдер выключает компьютер на несколько часов, а затем, незадолго до начала нового дня, включает. Без приведенного выше блока эксперт снова установит отложенный ордер, так как "не знает", что подобная сделка сегодня уже имела место. Конечно, такое положение дел никого не устроит. Поэтому при каждом включении эксперт будет проверять историю счета в поиске последних совершенных им сделок. Время открытия таких сделок сохранится в переменных BuyTime и SellTime, которые будут использованы в функции Trade.

    Следующее дополнение касается функции FindOrders, которая производит мониторинг существующих сделок. В нее добавлено обновление значений BuyTime и SellTime в соответствующих блоках.

    Третье дополнение введено в функции открытия ордеров OpenOrderCorrect. Внесен параметр Exp, отвечающий за время истечения отложенных ордеров. Добавление времени истечения позволит автоматически удалять отложенные ордера, которые так и не сработали, в начале следующих суток.

    Вот теперь можно рассмотреть, как использует описанные нововведения функция Trade:

 
//+-------------------------------------------------------------------------------------+
//| Открытие и модификация рыночных ордеров                                             |
//+-------------------------------------------------------------------------------------+
bool Trade()
{
// - 1 - =============== Закрытие сделок, открытых до начала текущих суток ==============
 if (BuyType == 0 && BuyTime < CurDay)                 // Существует BUY "вчерашнего" дня
   if (HighV != 0)     // сформирован новый канал и требуется установка следующих ордеров
     if (!CloseOrder(BuyTicket))                                  // Попытка закрытия BUY
       return(False);                                               // Попытка не удалась

 if (SellType == 1 && SellTime < CurDay)              // Существует SELL "вчерашнего" дня
   if (HighV != 0)     // сформирован новый канал и требуется установка следующих ордеров
     if (!CloseOrder(SellTicket))                                // Попытка закрытия SELL
       return(False);                                               // Попытка не удалась
// - 1 - =============================== Окончание блока ================================

// - 2 - ============================= Установка ордера BuyStop =========================
 if (BuyTime <= CurDay && OpenU > 0)//В течение текущего дня ордер BuyStop или BUY не был 
                                    // установлен, а уровень открытия сделки определен
   if (BuyType < 0)       // Ордер Buy или BuyStop не существует (избыточная проверка для
     {                    // повышения надежности советника)
      if (OpenD != 0)                 // Если определен уровень открытия короткой сделки,
        double SL = NP(OpenD);        // то стоп-приказ устанавливается именно туда
       else                        // Если уровень открытия короткой сделки не определен,
        SL = NP(LowV - StopLevel); // то стоп-приказ ставится за нижний уровень флэта
      datetime Ex = CurDay + 86400;    // Время истечения ордера - начало следующих суток
      if (Ex - TimeCurrent() <= 600)    // Если до начала следующих суток осталось меньше
        return(True);                   // 10 минут, то ордер устанавливать не нужно
      if (OpenOrderCorrect(OP_BUYSTOP, Lots, NP(OpenU+Spread), SL, NP(TargetU), Ex) != 0)
        return(False);                    
     }
// - 2 - =============================== Окончание блока ================================
           
// - 3 - =========================== Установка ордера SellStop ==========================
 if (SellTime <= CurDay && OpenD > 0)// В течение текущего дня ордер SellStop или SELL не
                                     //был установлен и уровень открытия сделки определен
   if (SellType < 0)    // Ордер Sell или SellStop не существует (избыточная проверка для
     {                  // повышения надежности советника)
      if (OpenU != 0)                  // Если определен уровень открытия длинной сделки,
        SL = NP(OpenU + Spread);       // то стоп-приказ устанавливается именно туда
       else                         // Если уровень открытия длинной сделки не определен,
        SL = NP(HighV + StopLevel); // то стоп-приказ ставится за верхний уровень флэта
      Ex = CurDay + 86400;             // Время истечения ордера - начало следующих суток
      if (Ex - TimeCurrent() <= 600)    // Если до начала следующих суток осталось меньше
        return(True);                   // 10 минут, то ордер устанавливать не нужно
      if (OpenOrderCorrect(OP_SELLSTOP, Lots, NP(OpenD), SL, NP(TargetD+Spread),Ex) != 0)
        return(False);                    
     }
// - 3 - =============================== Окончание блока ================================
 
 return(True);    
}

     Наиболее часто функция делится на два блока - для ордеров BUY и для ордеров SELL. В нынешнем виде функция располагает еще одним блоком, который отслеживает необходимость закрытия "вчерашних" сделок. Это такие сделки, которые открылись в течение предыдущего дня, но к моменту формирования нового канала не успели достичь уровня стопа или уровня профита. Действия по закрытию сделок совершаются в блоке 1. Сначала проверяется факт существования длинной сделки (BuyType == 0), которая имеет время открытия ранее времени открытия текущего дня (BuyTime < CurDay). Затем необходимо убедиться, что пришло время для установки новых отложенных ордеров, то есть текущее время больше или равно времени началу торговли. Это можно было бы сделать стандартным способом (сравнение текущего часа и минут с заданными пользователем значениями), но в программировании нужно стремиться к экономии процессорного времени, что подразумевает нестандартные ходы.

    Нестандартность заключается в использовании особенностей алгоритма программы, в котором перед функцией Trade происходит вызов функции GetLevels. Если наступило время начала торговли, функция GetLevels сформирует значения верхней и нижней границ канала HighV и LowV. В противном случае их значения будут равны нулю. Это свойство как раз используется для определения момента закрытия "вчерашней" сделки. При значении HighV, не равном нулю, закрывается любая (длинная или короткая) сделка.

    Второй и третий блоки подобны. Оба производят установку отложенного ордера. Различие заключается лишь в типе устанавливаемого ордера. Блоки исполняются, если определен соответствующий уровень открытия (OpenU или OpenD) и время открытия последнего ордера (BuyTime или SellTime) меньше времени открытия текущего дня (другими словами - в течение сегодняшнего дня ордера еще не были установлены). После такой проверки следует еще одна проверка - на существование рыночного ордера (Buy или Sell). Такая проверка является избыточной, так как в случае существования ордера соответствующее значение должно быть в BuyTime или SellTime, что не даст исполнению дойти до второго условия. Но, как показывает практика, с определением времени открытия ордеров иногда возникают непонятные проблемы. Поэтому подобная страховка является уместной.

    После проверки всех условий и выяснения необходимости установки отложенного ордера следует определение цены стоп-приказа. В описании стратегии было указано, что стоп-приказ должен располагаться на уровне открытия противоположного ордера (для SellStop это OpenU, для BuyStop - OpenD). Но что делать, если противоположный уровень открытия не определен? В этом случае полезно вспомнить, по какой причине уровень может быть не определен. Причина одна - близость к границе канала. Значит, достаточно произвести отступ не более минимального уровня стопов (StopLevel) от противоположной границы канала, чтобы смоделировать определение нужного уровня. Так и происходит в коде: если уровень (OpenU или OpenD) не равен нулю, то стоп-приказ (SL) становится равным указанному значению, а если OpenU или OpenD равно нулю, то стоп-приказ рассчитывается из значения противоположной границы канала, из которой вычтено (прибавлено) значение минимального уровня стопов.

    Вслед за расчетом стоп-приказа следует расчет времени истечения ордера, которое должно указывать на начало следующих суток. С этой целью к времени начала текущих суток (CurDay) прибавляется количество секунд в одних сутках (86400). В MT4 существует неявное ограничение минимального времени истечения ордера - 10 минут (меньше время истечения быть не может). Поэтому перед установкой ордера проверяется разница между текущим временем и временем истечения (Exp).

    Последний шаг - установка отложенного ордера при помощи функции OpenOrderCorrect.

 

Тестирование стратегии

    Благодаря привязке стратегии ко времени, а не к барам, тестирование можно производить на любом таймфрейме без получения существенных различий в результатах. То есть в данном случае имеются предпосылки для ухода от привычного периода графика Н1, на котором производилось большинство тестов проекта MQLabs. В итоге был выбран таймфрейм М15 (просто выбран, никакого логического обоснования для этого нет). Достаточное количество сделок для проведения анализа удалось получить лишь на участке истории в два с половиной года - с 01.01.2008 до 01.08.2010. Для каждой валютной пары были подобраны индивидуальные значения стартового часа (StartHour), уровня открытия в процентах (LevelOpen) и уровня цели в процентах (TargetLevel). Остальные параметры эксперта использовались по умолчанию. Результаты тестирования приведены на Рис. 2 - 5.

   

              Рис. 2. График кривой баланса, полученный при тестировании советника на валютной паре EURUSD.

    EURUSD. Значение начального времени StartHour равно 13. Как видно, в данном случае прорыв скорее обеденный, чем утренний... Значение LevelOpen = 30 (достаточно близко к границе канала), а TargetLevel = 630. Отдаленность цели не способствует ее частому достижению, но в случае выбора правильного направления позволяет взять максимум от тренда. Это утверждение подтверждается видом кривой баланса - при наличии тренда резкий рост, а при его отсутствии - потери, но меньшие по модулю, чем прибыль при тренде. Чистая прибыль 2923 доллара против максимальной просадки 1196 долларов (ФВ = 2.44).

    Спокойное использование системы в реальной торговле вряд ли выйдет, так как стратегия не показывает на EURUSD ровного роста прибыли. Ожидание нужного тренда может затянуться и привести к большим просадкам.

               Рис. 3. График кривой баланса, полученный при тестировании советника на валютной паре USDCHF.

    USDCHF. Значения изменяемых параметров для франка очень близки к значениям, выбранным для EURUSD, что лишний раз подтверждает родство этих двух инструментов. StartHour = 12, LevelOpen = 40, TargetLevel = 630. Вид кривой баланса более стабилен, чем в предыдущем случае, и рост более равномерен, но все же не настолько, чтобы заявить о повторении полученных результатов в реальной торговле. Чистая прибыль 2694 доллара, максимальная просадка 795 долларов (ФВ = 3.39, очень неплохой результат для франка).

   

               Рис. 4. График кривой баланса, полученный при тестировании советника на валютной паре GBPUSD.

    GBPUSD. Утренним получился прорыв для фунта - значение StartHour = 10. Также стоит отметить большое значение отступа для подтверждения прорыва: LevelOpen = 110. Видимо, это дань высокой волатильности пары. Не отстает и размер цели: TargetLevel = 700. Если закрыть глаза на первые 95 сделок теста, то получится достаточно стабильная кривая баланса с уверенным ростом прибыли. Но так как "из песни слов не выкинешь", то придется мириться с такой реальностью, констатировав не очень хорошие шансы стратегии для GBPUSD в реальной торговле. Чистая прибыль 3488 доллара против максимальной просадки 1084 доллара (ФВ = 3.21, для фунта это копейки).

      

                Рис. 5.. График кривой баланса, полученный при тестировании советника на валютной паре USDJPY.

    USDJPY. Значения параметров: StartHour = 10, LevelOpen = 30, TargetLevel = 570. Вид кривой баланса очень близок к идеалу. Стабильность кривой высокая, не менее стабильно и уверенно смотрится ее рост. Поэтому для использования в реальной торговле имеются все предпосылки. Это подтверждает даже значение максимальной просадки, которое за два с половиной года не смогло преодолеть отметку 1000 долларов - 817 долларов. При этом чистая прибыль смогла отметиться значением 4750 долларов (ФВ = 5.81, очень хорошо).

    Из значения максимальной просадки можно рассчитать минимальный депозит для торговли объемом 0.1 лота. Это 817 х 3 = 2451 или 2500 долларов. Среднегодовая доходность стратегии в долларах составляет 4750 / 31 x 12 = 1839 долларов. То есть в пересчете на вложения годовая доходность будет порядка 75%.

 

Доработка стратегии для использования в AutoGraf 4.0

    Для поклонников AutoGraf по традиции произведем некоторые изменения в эксперте, чтобы он смог работать в качестве стратегии AG 4. В советнике присутствует пять наиболее важных параметров - время начала торговли (2 параметра), уровень открытия сделок и уровень цели сделок. Все они должны быть перенесены в раздел настроек AG. Этот раздел являет собой часть входных параметров AutoGraf. Называются параметры AT_1, AT_2, AT_3 и т. д. до AT_20. В данном случае достаточно первых пяти. Параметру StartHour будет соответствовать AT_1, параметру StartMinute - AT_2, параметру LevelOpen - AT_3, параметру TargetLevel - AT_4 и параметру MinProfit - AT_5.

    Для запуска стратегии AutoGraf 4.0 потребуется проделать следующие шаги:

  • Воспользоваться ссылкой Файлы стратегии для AutoGraf 4.0. Полученный архив распаковать в папку MT4\experts\libraries.

  •  Запустить AutoGraf и во входных параметрах AT_1 - AT_5 указать необходимые значения. Например, для валютной пары USDJPY необходимо указать такие параметры: AT_1 = 10, AT_2 = 0, AT_3 = 30, AT_4 = 570, AT_5 = 10.

  •  Для получения похожих с тестами результатов работы выставить объем открываемой позиции (Lot) 0.1 (настраивается в процессе работы AG с помощью панели настроек, находящейся в нижней части графика).

  • Выбрать стратегию №5. Для этого передвинуть вверх значок So и среди названий стратегий найти S5

  • Запустить функцию автоматической торговли, передвинув значок AT в верхнее положение.

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

Игорь Герасько

Август 2010

Специально для компании Admiral Markets

3.18182
 
 
X
Loading