d9e5a92d

Leprecon Review - Системостроение и автоматизация

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

Торговая платформа МТ4 снабжена удобным языком программирования MQL4, в котором можно программировать советники - автоматизированные воплощения Ваших торговых систем. Ниже представлен код торговой системы, которую мы начали строить в предыдущем выпуске. Напомним:

• Инструмент и таймфрейм: USD/CAD H1;

• Вход/Выход:

о сигнал: пересечение ценой индикатора MA; о фильтр: RSI;

o выход: по стоп-лоссу или тейк-профиту;

• Сопровождение: трейлинг-стоп;

• Управление капиталом: постоянный лот, без докупок/фиксаций.

//+—







//|





Example 1

//|





Copyright © 2011, RSQForex

//|







//+—







#property copyright "Copyright <

© 2011, RSQForex"

#property link

"

.RSQForex.com"

extern

double

TradeVolume = 0

.5;

extern

int

LVLMaxLoss

= 4 00;

extern

int

LVLProfit

= 500;

extern

int

LVLTrailing

= 200;

extern

int

MA_period

= 14;

extern

int

MA_shift

= 8;

extern

int

MA method

= MODE SMMA;

extern

int

MA_appl_price =

PRICE MEDIAN;

extern

int

RSI period

= 14;

extern

int

RSI appl price

= PRICE MEDIAN;

extern

int

RSI high

= 70;

extern

int

RSI low

= 30;

//+------------------------------------------------------------------+

//| Expert Initialization Function |

66

l_R

//+------------------------------------------------------------------+

int init()

{

return(0);

}







int deinit()

{

return(0);

}







int start()

{

static int OrderNumber = 0; if(OrderNumber!=0)

{

if(!OrderSelect(OrderNumber, SELECT_BY_TICKET))

OrderNumber = 0; else if(OrderCloseTime()!=0)

OrderNumber = 0;

}

if(OrderNumber==0)

{

if(iMA(Symbol(), NULL, MA_period, MA_shift, MA_method, MA_appl_price, 1)

> Close[1] && iMA(Symbol(), NULL, MA_period, MA_shift, MA_method, MA_appl_price, 0) <= Close[0] && iRSI(Symbol(), NULL, RSI_period, RSI_appl_price, 0) < RSI_low)

{

OrderNumber = OrderSend(Symbol(), OP_BUY, TradeVolume, Ask, 5,

Bid-LVLMaxLoss*Point, Bid+LVLProfit*Point, NULL, 0, 0, Blue);

БИРЖЕВОЙ ЛИКБЕЗ

}

else if(iMA(Symbol(), NULL, MA_period, MA_shift, MA_method, MA_appl_price, 1)

<Close[1] && iMA(Symbol(), NULL, MA_period, MA_shift, MA_method, MA_appl_price, 0) >=Close[0] && iRSI(Symbol(), NULL, RSI_period, RSI_appl_price, 0) > RSI_high)

{

OrderNumber = OrderSend(Symbol(), OP_SELL, TradeVolume, Bid, 5,

Ask+LVLMaxLoss*Point, Ask-LVLProfit*Point, NULL, 0, 0, Red);

}

}

if(OrderNumber!=0)

{

if(OrderSelect(OrderNumber, SELECT_BY_TICKET))

{

if(OrderType() == OP_BUY)

if(Bid - OrderStopLoss() > LVLTrailing*Point)

OrderModify(OrderTicket(), 0, Bid - LVLTrailing*Point, OrderTakeProfit(), 0);

if(OrderType() == OP_SELL)

if(OrderStopLoss() - Ask > LVLTrailing*Point)

OrderModify(OrderTicket(), 0, Ask + LVLTrailing*Point, OrderTakeProfit(), 0);

l-R

}

}

return(0);

}

Как видите, стратегия довольно простая, и программа получилась маленькая. Мы не будем вдаваться в подробности написания торговых роботов (для этого есть соответствующие ресурсы), а лишь рассмотрим, как они могут помочь при системостроении.

Давайте запустим оптимизацию данного советника на временном интервале: 2011.09.01 -2011.12.01 (три месяца). Один из наиболее оптимальных сетов, который тестер стратегий МТ4 выдаст нам, будет показывать следующий результат:



А теперь посмотрим, какой результат дадут эти же параметры при тестировании на временном интервале: 2011.06.01 - 2011.12.01 (шесть месяцев). Желтым выделена часть, представленная на предыдущем рисунке.



Рис. 2. Результат 2011.06.01 - 2011.12.01

Как видим, результат за период 2011.06.01 - 2011.09.01 заметно хуже результата, показанного в период 2011.09.01 - 2011.12.01. Многие скажут, что это проблема «подгонки», которая возникает из-за того, что мы подбирали параметры исключительно для трехмесячного периода - с сентября по декабрь. Мы не будем вдаваться в подробности и причины такого поведения советника - не в этом суть. Данным примером мы хотим продемонстрировать, что тестер стратегий может помочь выявить недостатки Вашей торговой системы. Поясним:

Допустим, Вы три месяца разрабатывали торговую систему: следили за рынком, подбирали сигнальный индикатор и фильтр, выбирали систему управления капиталом и прочее. И вот, наконец, 1-го декабря Ваша система готова, все правила и критерии выписаны на листе бумаги, и Вы начинаете торговать. Теперь спросите себя - достаточно ли продолжительным был Ваш

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

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





Содержание раздела