Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 5332
- Рейтинг:
- Опубликован:
- 2011.10.13 12:12
- Обновлен:
- 2014.04.21 14:55
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Просматривал ДеМарка и решил посмотреть, как отрабатывают его трендовые уровни в МТС.
В архивах Кодабазы нашёл реализацию такой задачи. Авторский советник не запустился - как оказалось, в выложенной версии индикатора DeMark lines.mq4 не были задействованы те буферы, к которым обращался советник. Я сначала запустил авторский код, а затем его немножко переделал по своему видению.
Вот что получилось:
extern string SETUP_Expert = "=========== Общие настройки советника ==========="; extern int MagicNumber = 346; extern bool Reverse = false; extern string TradeComment = "Trade"; extern int TradeBar = 9; // N бар, с которого снимаем показания индикатора (>=1) extern int N_TradeBars = 1; // Количество баров от TradeBar, с которых снимаем показания индикатора (>=1) extern int LifeMinBar = 7; // Минимальное время жизни ордера в барах extern string SETUP_AutoTrading = "================= AUTO TRADING =================="; extern bool AutoSTOPs_ON = true; // Формирование СТОПов от показаний индикатора extern int MIN_Stop = 15; // Минимальные стопы (для 4-рёх знаков) для AutoSTOPs_ON extern int TradeOrders = 4; // Количество одновременно открываемых ордеров (1-4) extern string SETUP_Trailling = "=================== TRAILLING ==================="; extern int TrailingStop = 0; extern int TrailingStep = 1; // Trailing step extern int BreakEven = 0; // БезУбыток extern string Setup_Lots = "========= Параметры модуля расчёта лота ========="; extern bool UseMM = TRUE; // Использовать расширяющийся лот extern string Setup_MeansType_1_3 = "MeansType: 1-Balance; 2-Equity; 3-FreeMargin;"; extern int MeansType = 2; // Тип средств используемых при расчете размера лота: extern int LotsPercent = 10; // Процент от MeansType (суммарный лот всех TradeOrders ордеров) extern string QuotaEachOrders = "50,20,20,10"; // LotsPercent разбивается на TradeOrders частей (100 %) extern bool Use_Prioritity = TRUE; // Использование приоритета размера лота ордеров по результатам работы extern double MinLot = 0.01; // Минимальный лот рыночного ордера extern double MaxLot = 50.0; // Максимальный лот рыночного ордера extern double RiskDepo = 2000.0; // Размер Depo в валюте депозита, на который играем extern int MAXLossDepoPercent = 50; // При каком лоссе от Depo (в процентах) закрываются все ордера extern string Setup_Order1 = "--------------- Setting Order № 1 ---------------"; extern bool TradeOrder1 = true; extern double TradeLots1 = 0.1; extern int TradeSL1 = 30; extern int TradeTS1 = 50; extern int TradeTP1 = 0; extern string Setup_Order2 = "--------------- Setting Order № 2 ---------------"; extern bool TradeOrder2 = true; extern double TradeLots2 = 0.1; extern int TradeSL2 = 50; extern int TradeTS2 = 80; extern int TradeTP2 = 0; extern string Setup_Order3 = "--------------- Setting Order № 3 ---------------"; extern bool TradeOrder3 = true; extern double TradeLots3 = 0.1; extern int TradeSL3 = 80; extern int TradeTS3 = 120; extern int TradeTP3 = 0; extern string Setup_Order4 = "--------------- Setting Order № 4 ---------------"; extern bool TradeOrder4 = true; extern double TradeLots4 = 0.1; extern int TradeSL4 = 120; extern int TradeTS4 = 160; extern int TradeTP4 = 0; extern string Setup_Services = "==================== SERVICES ==================="; extern int Repeat = 3; // Переменная для Alert extern int Periods = 5; // Переменная для Alert extern bool UseAlert = false; extern bool SoundPlay = false; extern bool SendEmail = false; extern string TradeLog = "TD-Lines"; extern int NumberOfTries = 3; // Количество торговых попыток extern int Slippage = 2;
Советник открывает одновременно серию ордеров (до 4-рёх) - это привязано к 4-ём уровням целей, рассчитываемых индикатором. Авторская версия основные торговые параметры берёт из "ручных" настроек советника. Я автоматизировал процесс и привязал СТОПЫ и трейлинг к упомянутым уровням целей - параметр AutoSTOPs_ON. Но ручную авторскую систему настроек я оставил ("на любителя").
Данная система не чувствительна к качеству исторических котировок. Основные оптимизируемые параметры:
extern int TradeBar = 9; // N бар, с которого снимаем показания индикатора (>=1) extern int N_TradeBars = 1; // Количество баров от TradeBar, с которых снимаем показания индикатора (>=1) extern int LifeMinBar = 7; // Минимальное время жизни ордера в барах
можно добавит к этой троице (не обязательно):
extern int MIN_Stop = 15; // Минимальные стопы (для 4-рёх знаков) для AutoSTOPs_ON
Ну, и конечно же, не нужно забывать про настройки индикатора:
extern int LevDP = 2; // Demar Pint Levels; 2 = central bar will be higher (lower) // then 2 bars on the left side and 2 bars on the right one. extern int qSteps = 1; // number of steps (no more than 3)
Ещё добавил ММ. Определяем размер суммарного лота для всех ордеров серии в процентах от Депо (LotsPercent). А затем, в соответствии с определёнными пропорциями (QuotaEachOrders) по результатам работы (Use_Prioritity) каждого из ордеров серии определяем индивидуально размеры лотов.
Добавил трейлинг по ATR (Use_TrailATR).
Эта система хоршо отрабатывает тренд, НО "плохо" дружит с флетом - нужен (по-хорошему) дополнительный фильтр:
НО, не смотря на озвученные недостатки, систем жизнеспособна! Да осилит дорогу идущий!
P.S. Немножко подправил индикатор, и чтобы не путаться, переименовал его.

интрадей

Программа переставляет собой набор индикаторов, по которым можно открывать и закрывать позиции.

Советник раскрывает сеть из стоп ордеров, при наборе заданного уровня прибыли закрывает все ордера.

Быстрая установка ордера по линии Стоп лосса. Подходит только для ручной торговли.