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