Форум о заработке, инвестициях и криптовалюте - Показать сообщение отдельно - Советник MA_TrendLine_01
Показать сообщение отдельно
Старый 05.12.2012, 08:54   #1
Jago
Интересующийся
 
Аватар для Jago
 
Регистрация: 05.12.2012
Сообщений: 6
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

Советник оптимизирован на пару EURUSD тайм-фрейм М15.



Как известно, основной недостаток МА – это запаздывание. Если, например, сдвинуть МА назад, то текущие бары останутся без МА и принимать решение становится невозможным. Для устранения этого недостатка, на хвост МА вешаем Трендовую Линию (ТЛ) – как возможное продолжение МА и по ней торгуем.



http://codebase.mql4.com/c/codebase/2012/11/7.gif



Советник работает на пробой ТЛ.

Алгоритм пробоя вверх:

1. Если первый бар выше ТЛ, а второй коснулся или ниже ТЛ, то это пробой вверх. Выше High первого бара с отступом Otstup_pr_prob устанавливаем BuyStop, SL ордера устанавливаем ниже Low первого бара с отступом Otstup_SL_prob.

2. Если появилось условие для открытия противоположного ордера, закрываем текущий.

(аналогично - пробой вниз)

------------------

Если ордер стал прибыльным используем трейлинг-стоп по волнам.



Описание внешних переменных:

extern double Lot_Osn = 0; // 0 - для расчета лота исп. Risk



extern double Risk = 10; //проценты от баланса для расчета нач. лота

extern bool Risk_from_Balance = false; //true - считаем риск от баланса, false - от своб.средств

// можно в ручную задавать направление открытия ордеров:

extern bool Trend_UP = true; // будут открываться только Buy

extern bool Trend_DW = true; // будут открываться только Sell



extern int TP_prob = 100; // Тейк-профит

extern int Otstup_pr_prob = 7; // для формирования отложенного ордера отступ от High первого бара

extern int Otstup_SL_prob = 10; // отступ от 1 бара для SL



extern bool On_Begin_Torg = true; // использовать время для начало торговли

extern int Begin_Torg = 480; // время начала торговли (отступ от 00:00 в минутах)

extern bool On_End_Torg = false; // использовать время для окончания торговли

extern int End_Torg = 30; // время закрытие всех ордеров (отступ от конца дня в минутах)



extern bool comm = true; // выводить комментарии

extern bool sound = true; // озвучивать открытие ордеров

extern int TF_Torg = 15; // тайм-фрейм торговли

extern int MagicNumber = 335580;

extern int Slippage = 5;

//.................................................. ..

extern int Fractal_Bars = 3; // переменная для формирования фракталов, чем больше тем реже фракталы

extern int Na4_Bar_Fract = 1; // номер бара, с которого начинается поиск фрактала

extern bool Out_Grafic = true; // выводить зиг-заг на экран

extern int IndNumb = 10; // префикс для линий зиг-зага

extern int kol_voln = 20; // кол. волн выводимых на экран

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

extern bool Open_Del_Otl = true; // удалять встречный отложенный при открытии рыночного ордера

extern bool On_Vstr_Otl = false; // открывать встречные отложенные ордера

extern bool Trail_Stop = true; // использовать трейлинг-стоп по волнам зиг-зага

extern int Volna_Trail_Stop = 1; // по какой волне двигать трейлинг-стоп

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

extern bool Out_MA = true; // выводить MA

extern int Kol_Bar_MA = 100; // сколько баров МА показывать

extern bool Out_Trend_Line = true; // выводить Трендовую Линию

extern string Name_Trend_Line = "TL_1";// имя трендовой линии



extern int Proc_obraz_zwezd = 10; // процент между (Open-Close)/(High-Low) для принятия бара в качестве "звезды"

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

extern double Min_Tangens_TL_prob = 0.27; // тангенс угла наклона ТЛ, если он меньше этого значения, то не торгуем

extern double Min_Tangens_TL_clos = 0.13;

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

extern int BackSteps = 4; // номер бара второй коорд. для форм. ТЛ, первая коорд. - это первый бар МА

extern int MA_Period = 40; // параметры МА: период

extern int MA_Shift = -8; // сдвиг

extern int MA_Method = 0;

extern int MA_Applied_Price = 0;

//-------------------------------

//MA_Method: MODE_SMA 0 Простое скользящее среднее

// MODE_EMA 1 Экспоненциальное скользящее среднее

// MODE_SMMA 2 Сглаженное скользящее среднее

// MODE_LWMA 3 Линейно-взвешенное скользящее среднее

//-------------------------------

//MA_Applied_Price: PRICE_CLOSE 0 Цена закрытия

// PRICE_OPEN 1 Цена открытия

// PRICE_HIGH 2 Максимальная цена

// PRICE_LOW 3 Минимальная цена

// PRICE_MEDIAN 4 Средняя цена, (high+low)/2

// PRICE_TYPICAL 5 Типичная цена, (high+low+close)/3

// PRICE_WEIGHTED 6 Взвешенная цена закрытия, (high+low+close+close)/4

//==================================================================





Тест с 01.01.2012 по 11.11.2012 максимальная просадка около 15%:(начальный депозит 10000 конечный 45326)



http://codebase.mql4.com/c/codebase/2012/11/6_2.gif



Добален индикатор МА, который выводит Трендовую линию на экран. А также в нулевой ячейке первого буфера индикатора - тангенс угла наклона ТЛ.

Теперь принцип МА с ТЛ можно использовать в других советниках, используя этот индикатор.
Jago на форуме