Давайте, наверное, чтобы никто не скучал, я вам подкину игрушку. Первая пристрелка советника, в котором реализованы три обозначенные стратегии. Каждая стратегия имеет свои настройки, любую из них можно отключать. Для работы советника необходимо, чтобы присутствовали индикаторы Супертренда (в архиве есть). Настройки советника:
- Код: выделить все
input string S0 = "#### Настройки Супертренда";
input ENUM_TIMEFRAMES SlaveTF = PERIOD_H1; // Младший период
input ENUM_TIMEFRAMES MasterTF= PERIOD_H4; // Старший период
input string IndName = "#MTF_Supertrend"; // Название индикатора Супертренда
input int ShiftBar = 1; // Cдвиг относительно текущего бара (1-предыдущий закрытый бар)
input string S1 = "#### Настройки по основной стратегии отбоя от старшего Супертренда";
input bool OnMaster = true; // Использовать основную стратегию
input double mLot = 0.1; // Рабочий лот
input int mStopLossPips = 500; // Stop Loss в пунктах
input int mTakeProfitPips = 800; // Take Profit в пунктах
input int mShiftPips = 10; // Сдвиг для ордеров в пунктах
input double mDistanseSlaveMasterPips = 100; // Минимальное расстояние между Супертрендами в пунктах
input bool mCloseOnReverce = false; // Закрывать открытые позиции при обратном сигнале
//input int mDistanceBar = 1; // Пропуск количества баров после пересечения для начала работы
//input bool mStopLossAtFractal=false; // Использовать установку стоп-лосса за фракталом
//input ENUM_TIMEFRAMES mStopLossAtFractalTF = PERIOD_M5; // Период, на котором ищется фрактал для установки Stop Loss
input int mMagicNum = 19701; // Магичекий номер
input string S3 = "#### Настройки по стратегиии отбоя от младшего Супертренда";
input bool OnSlave = true; // Использовать стратегиии отбоя от младшего Супертренда
input double sLot = 0.1; // Рабочий лот
input int sStopLossPips = 500; // Stop Loss в пунктах
input int sTakeProfitPips = 800; // Take Profit в пунктах
input int sShiftPips = 10; // Сдвиг для ордеров в пунктах
input double sDistanseSlaveMasterPips = 100; // Минимальное расстояние между Супертрендами в пунктах
input bool sCloseOnReverce = true; // Закрывать открытые позиции при обратном сигнале
//input int sDistanceBar = 1; // Пропуск количества баров после пересечения для начала работы
//input bool sStopLossAtFractal=false; // Использовать установку стоп-лосса за фракталом
//input ENUM_TIMEFRAMES sStopLossAtFractalTF = PERIOD_M5; // Период, на котором ищется фрактал для установки Stop Loss
input int sMagicNum = 19702; // Магичекий номер
input string S5 = "#### Настройки по стратегиии пересечения Супертрендов";
input bool OnAcross = true; // Использовать стратегиию пересечения Супертрендов
input double aLot = 0.1; // Рабочий лот
input int aStopLossPips = 500; // Stop Loss в пунктах
input int aTakeProfitPips = 800; // Take Profit в пунктах
input double aDistanseSlaveMasterPips = 0; // Минимальное расстояние между Супертрендами в пунктах
input bool aCloseOnReverce = true; // Закрывать открытые позиции при обратном сигнале
input int aDistanceBar = 3; // Количеств баров после пересечения для открытия позиции
//input bool aStopLossAtFractal=false; // Использовать установку стоп-лосса за фракталом
//input ENUM_TIMEFRAMES aStopLossAtFractalTF = PERIOD_M5; // Период, на котором ищется фрактал для установки Stop Loss
input int aMagicNum = 19703; // Магичекий номер
input string S7 = "#### Общие настройки";
input int WithoutLossAfterPips = 0; // Количество пунктов прибыли для перевода в б.у.
input int WithoutLossPips = 10; // Величина б.у. в пунктах
input int TrailingAfterPips = 0; // Количество пунктов прибыли для начала трала
input int TrailingPips = 200; // Величина трала в пунктах
Пока что для каждой стратегии можно настроить свои значения стопа/профита в пунктах. Можно попробовать оптимизировать эти параметры. Другие параметры посмотрите, тоже можно оптимизировать, как то "Минимальное расстояние между Супертрендами в пунктах" и пр. Будут вопросы - задавайте.
А пока вы будете проверять рабоспособность и оптимизировать, в дальнейших планах у меня:
1) Реализация установки стопа за фракталом М5 (будет настраиваться).
2) Пункт 1 потянет за собой необходимость введения не фиксированного лота, а системы управления рисками с переменным лотом и заданием процента риска при срабатывании стоп-лосса.
3) Реализация фильтра по длительности устоявшегося движения.
И, само собой, внепланово, замеченные баги, если таковые найдутся, в первую очередь будут устраняться.
По первым впечатлениям от прогона - есть что оптимизировать, можно будет выжать из стратегии изюминку. Надо работать только ))))
Если запустить на демке, то можно увидеть, что кроме магических номеров, все ордера разных стратегий имеют свою метку в комментариях. Так проще будет разобраться, какая стратегия работает.
Комментарии на экране временные диагностические, так будет проще выяснять правильность алгоритма работы, когда возникнут вопросы.
Удачи всем.