Год выпуска: 2014
Актуальная версия: Shtirlits v2r030
Таймфрейм: Н1-D1
Время торговли: круглосуточно
Валютная пара: любая
Тема со стратегией: /torgovye-sistemy/2/h1-d1-shtirlits/8537/
Описание работы:
Советник создан для тестирования правил входа и оптимизации параметров ручной стратегии, изначально задумывался как сигнальщик. На данный момент при EnableOpenOrders = true может вести автоматическую торговлю.
v1.15
Поддерживает работу во двум основным направлениям стратегии.
Работа ведется на 3 таймфреймах(можно указать в настройка) - старшем, среднем и младшем.
Индикаторы для каждого из ТФ:
Старший - ОsМа или Стохастик (можно выбрать в настройках)+МА
Первичный сигнал (контурная стрелка) выдается при соблюдении условий входа на старшем ТФ.
Средний - Стохастик
Младший - ОsМа или Стохастик (можно выбрать в настройках).
Вторичный сигнал (стрелка с заливкой) выдается при соблюдении условий входа на всех активных ТФ.
Правила получения сигнала на ТФ:
Рассматриваем продажи.
Старший ТФ:
1. медленная МА выше быстрой
2.1 OsMA: как минимум два бара убывают и как минимум последний над нулевым уровнем
2.2 Сигнальная стохастика линия выше чем Main
Проверяется либо условие 2.1, либо условие 2.2 (можно выбрать в настройках)
Средний ТФ:
3. Стохастик: сигнальная линия выше чем Main
Младший ТФ:
4 OsMA - сигналом можно считать пересечение нулевой линии, либо убывание двух подряд баров (задается в настройках)
4.1 OsMA убывает и пересек нулевой уровень
4.2 OsMA убывает
Проверяется либо условие 4.1, либо условие 4.2, в зависимости от настроек
5. Стохастик: сигнальная линия выше чем Main
Проверяется либо условие 4, либо условие 5, в зависимости от настроек
1.15.2
extern int OpenCloseType = 1; //0 - открытие сделки по каждому сигналу,
//1-открытие только одной сделки в 1 направлении,
//2-открытие одной сделки в одном направлении+закрытие текущей сделки по противоположному сигналу и тут же открытие противополжной
v1.16:
1. явное отключение ТФ. Логика работы стохастика на среднем и младших периодах теперь разная, поэтому сделал явное отключение этих ТФ.
extern int MiddleTFType = 2; //тип сигнала на среднем таймфрейме: 0-отключен, 2-стохастик
extern int LittleTFType = 2; //тип сигнала на младшем таймфрейме: 0-отключен, 1-ОсМа, 2-стохастик
2. Пользовательские уровни для стохастика на каждом ТФ
extern int StchOverboughtBTF = 80; //уровень перекупленности
extern int StchOversoldBTF = 20; //уровень перепроданности
3. Стохастики: рассматриваем покупку.
Старший ТФ.
- Получаем сигнал при пересечении стохастика ниже уровня StchOverboughtBTF, если МА не противоречат - принимаем
- Сигнал действует несколько свечей. Отмена сигнала происходит на припротивоположном пересечении МА, противоположном пересечении стохастика или заходе хотя бы одной из линий стохастика в зону 80(жестко задана).
То есть сигнал повторяется каждый день пока не отменится.
Средний ТФ.
- Получаем сигнал при пересечении стохастика ниже уровня StchOverboughtМTF
- Сигнал действует несколько свечей. Отмена сигнала происходит при заходе хотя бы одной из линий стохастика в зону 80(жестко задана)
То есть полученный сигнал повторяется каждые 4 часа пока не отменится. Если отключен младший период, то сделка будет открываться каждые 4 часа пока есть сигнал.
Младший ТФ
- Получаем сигнал при пересечении стохастика ниже уровня StchOverboughtLTF
- Сигнал единоразовый. Получили, при совпадении сигнала с сигналами со старших тф - открыли сделку и забыли.
Если нужно работать только с 2 таймфреймами, например Д1 и Н4, отключаем средний таймфрейм, в настройках указываем LittleTF = "H4" и вперед.
Если нужны только стрелки на Д1 - отключаем средний и младший ТФ, чтобы не мучали открытием сделок.
v2r030
Изменение ТФ и правил входа.
Базируется на версии 1.5.3. Большая часть переменных осталась теми же.
Правила входа (для покупок):
Д1: - 2 бара ОсМА возрастают, второй больше 0
- МА пересеклись в сторону сделки
Н1 - пересечение ОсМА нулевого уровня в сторону сделки
Динамический трал по МА
Работает только при отрицательном профите, далее подхватывают безубыток и обычный трал.
Динамически передвигает СЛ на расстояние MASLDistance от ближайшей сверху МА.
Если цена находится над обеими МА, стоп устанавливается в размере MASLStopLoss.
Для случаев когда цена сделала резкий скачок (ушла далеко от МА) предусмотрен параметр MASLMaxStopLoss, используется для конкретизации допустимых рисков.
Параметры МА задаются в настройках, по умолчанию 34 и 200.
Таймфрейм также можно указать в настройках.
Описание переменных:
extern string _P_Expert = "---------- Параметры советника";
extern double Lots = 1;
extern int TakeProfit = 0;
extern int StopLoss = 500;
extern int MagicNumber = 100500;
extern bool EnableOpenOrders = true;
extern string _P_Strategy = "---------- Параметры стратегии";
extern string BigTF = "D1"; //старший таймфрейм, МА+ОsMA
extern string MiddleTF = "H4"; //средний таймфрейм, стохастик
extern string LittleTF = "H1"; //младший таймфрейм, OsMA или стохастик
extern int BigTFType = 1; //тип сигнала на старшем таймфрейме: 1-ОсМа, 2-стохастик
extern int LittleTFType = 2; //тип сигнала на младшем таймфрейме: 1-ОсМа, 2-стохастик
extern bool LTFOsMAAcrossZero = true; //true-OsMA на младшем таймфрейме должен пересечь ноль, false-достаточно убывания
extern string _P_WithoutLoss = "---------- Параметры Безубытка";
extern bool WL_Use = true; //использовать перевод в безубыток
extern int WL_LevelProfit = 150; // Уровень профита в пунктах счета
extern int WL_LevelWLoss = 10; // Уровень безубытка в пунктах
extern string _P_Trailing = "---------- Параметры трала";
extern bool TR_Use = true; //использовать трал
extern int TR_TrailingStart = 300; //начальный уровень трала
// С получения этого количества пунктов профита начинается трал
//стоп будет установлен на расстояние TStop+TrailingStep
//Если TR_TrailingStartextern int TR_TStop_Buy = 90; // Размер трала в пунктах для покупок
extern int TR_TStop_Sell = 90; // Размер трала в пунктах для продаж
extern int TR_TrailingStep = 10; // Шаг трала в пунктах
extern string _P_MA_StopLoss = "---------- Параметры стопа по МА";//работает только когда профит отрицательный.
extern bool MASL_Use = true; //использовать динамический СтопЛосс. Выставляется на MASLDistance пунктов от ближайшей МА34/МА200
extern int MASLDistance = 130; // расстояние от значения МА до СтопЛосса.
extern int MASLStep = 10; // шаг движения стопа чтобы не мучать брокера частыми запросами
extern int MASLMaxStopLoss = 600; // используется если рассчитанное по МА значение больше чем этот параметр. MASLMaxStopLoss=0-используется только МА
extern int MASLStopLoss = 400; // используется когда покупка открылась ниже обеих МА или продажа выше обеих. в этом случае нет значения МА для привязки.
extern string MASLTF = "H1"; // таймфрейм для расчета СЛ по МА
extern int MASLFastPeriod = 34; //период быстрой MA
extern int MASLSlowPeriod = 200; //период медленной MA
extern string _P_Indicator = "---------- Параметры индикаторов";
extern string _P_Indicator_OsMA = "---------- OsMA на старшем и младшем ТФ";
extern int OsMAFastEmaPeriod = 11; //период быстрой EMA
extern int OsMASlowEmaPeriod = 21; //период медленной EMA
extern int OsMASignalPeriod = 9; //период сигнальной линии
extern string _P_Indicator_MA_BTF = "---------- MA на старшем ТФ";
extern int MAFastPeriod = 5; //период быстрой MA
extern int MASlowPeriod = 21; //период медленной MA
extern string _P_Indicator_Stch_BTF = "---------- Stochastic на старшем периоде";
extern int StchKPeriodBTF = 5; //период линии K
extern int StchDPeriodBTF = 3; //период линии D
extern int StchSlowingBTF = 3; //замедление
extern string _P_Indicator_Stch_MTF = "---------- Stochastic на среднем периоде";
extern int StchKPeriodMTF = 5; //период линии K
extern int StchDPeriodMTF = 3; //период линии D
extern int StchSlowingMTF = 3; //замедление
extern string _P_Indicator_Stch_LTF = "---------- Stochastic на младшем периоде";
extern int StchKPeriodLTF = 5; //период линии K
extern int StchDPeriodLTF = 3; //период линии D
extern int StchSlowingLTF = 3; //замедление
extern string _P_Notification = "---------- Параметры оповещения";
extern bool EnableAlerts = true; //Включить алерты
extern bool EnableArrows = true; //Включить стрелки
extern string _P_View = "---------- Параметры отображения";
extern int ArrowSize = 3; //Размер стрелки
extern int ArrowShift = 20; //Смещение стрелки относительно цены покупки на открытии бара (0 - без смещения)
//Подбирайте в зависимости от ТФ на котором предпочитаете работать. Чем старше ТФ, тем больше смещение
extern color D1ArrowUpClr = Aqua; //Цвет стрелки покупки на старшем ТФ
extern color D1ArrowDownClr = Tomato; //Цвет стрелки продажи на старшем ТФ
extern color H1ArrowUpClr = DodgerBlue; //Цвет стрелки покупки на младшем ТФ
extern color H1ArrowDownClr = OrangeRed; //Цвет стрелки продажи на младшем ТФ
ChangeLog:
//1.15 - убрал МА фильтр
// - убрал отключение младшего ТФ
// - добавил стохастик на старшем ТФ, вывел пользователю настройки индикатора, добавил переключатель
// - добавил динамический стоплосс на пробитии ближайшей МА34 или МА200
//1.15.2
// - добавлены настройки открытия ордеров
// - исправлены мелкие баги
//1.16 - добавил явное отключение среднего и младшего таймфреймов
// - добавил пользовательские уровни перекупленности/перепроданности для стохастиков на каждом ТФ
// - изменил логику работы стохастиков на всех ТФ
//1.17 - объединил параметры трейлинга TR_TStop_Buy & TR_TStop_Sell
// - ордера теперь открываются только если нет открытого ордера в ту же сторону. противоположные ордера при этом закрываются.
// стрелки что получили сигнал рисуются, но ордера не открываются.
2r030
- убрал Н4, оставил вход на Н1 по сигналу осма при пересечении нулевого уровня
- изменил функцию рисования стрелок. теперь стрелка рисуется над хаем закрытого бара
- Разделил настройки ОсМА для старшего и младшего ТФ
- добавил функцию определения 4-5 знака. теперь все параметры задаются в старых пунктах
- мелкие доработки и исправление багов
Бэктесты:
Настройки по умолчанию не оптимизированы!
v1.15
Динамический стоп показывает хорошие результаты на варианте с ОсМА на старшем таймфрейме: при уменьшении прибыли на 10% просадка снижается в 2 раза.
На варианте со стохастиком на старшем ТФ результаты хуже. Но после доработки правил входа на стохастике можно будет пооптимизировать.
Shtirlits_v2r030.ex4
Shtirlits_v2r030_by_Brom_6=5=6-11-16-29.set
