apex trade pro v1.18.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «apex trade pro v1.18.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Apex Trade Pro — торговый советник для MetaTrader 4, работающий по нескольким независимым стратегиям на одном графике. Советник использует сигналы технических индикаторов (CCI, RSI, MACD, Stochastic, WPR) и управляет сетками ордеров с настраиваемыми параметрами риска и сопровождения. Реализованы модули перекрытия убыточных ордеров, лока и дополнительной сетки, а также фильтр экономических новостей. Все ключевые параметры вынесены во входные настройки, что позволяет гибко конфигурировать поведение советника под конкретные условия торговли.
Настройки программы
| Настройка | Описание |
|---|---|
| mc5 | Общие настройки — Разделитель группы общих настроек советника. |
| работа в обе стороны одновременно (two_way) | работа в обе стороны одновременно — Разрешение одновременной торговли в обе стороны. |
| автоматический меджик (auto_magic) | автоматический меджик — Автоматическое назначение магического номера ордерам советника. |
| комментарий ордеров (orders_comment) | комментарий ордеров — Комментарий, добавляемый к ордерам советника. |
| запрет торговли в одном направлении (limit_one_direction) | запрет торговли в одном направлении — Запрет на одновременную торговлю в одном направлении. |
| подсчет комиссии и свопов (calc_swap_and_comission) | подсчет комиссии и свопов — Учитывать свопы и комиссии при расчёте прибыли и убытка по ордерам. |
| закрытие всего при просадке % (equity_target_percent) | закрытие всего при просадке % — Уровень просадки в процентах, при котором закрываются все позиции. |
| начало торговли в январе (january_start) | начало торговли в январе — День января, с которого начинается торговля. |
| окончание тоговли в декабре (december_stop) | окончание тоговли в декабре — День декабря, после которого торговля прекращается. |
| mc4 | Группа настроек увеличения ТФ — Разделитель группы настроек увеличения таймфрейма принятия решений. |
| общее изменений ТФ по ордерам (decision_switch_tf_all) | общее изменений ТФ по ордерам — Общее изменение таймфреймов принятия решений по ордерам. |
| стартовый ТФ (decision_time_frame_1) | стартовый ТФ — Стартовый таймфрейм принятия решений. |
| ордеров первого уровня (decision_orders_1) | ордеров первого уровня — Количество ордеров, при котором происходит переход на второй таймфрейм принятия решений. |
| второй ТФ (decision_time_frame_2) | второй ТФ — Второй таймфрейм принятия решений. |
| ордеров второго уровня (decision_orders_2) | ордеров второго уровня — Количество ордеров, при котором происходит переход на третий таймфрейм принятия решений. |
| третий ТФ (decision_time_frame_3) | третий ТФ — Третий таймфрейм принятия решений. |
| ордеров третьего уровня (decision_orders_3) | ордеров третьего уровня — Количество ордеров, при котором происходит переход на четвёртый таймфрейм принятия решений. |
| послений ТФ (decision_time_frame_4) | послений ТФ — Последний таймфрейм принятия решений. |
| mc6 | Группа настроек фильтра новостей — Разделитель группы настроек фильтра новостей. |
| фильтр новостей (news_filter) | фильтр новостей — Включение фильтра экономических новостей. |
| количество минут до новости (AfterNewsStop) | количество минут до новости — Количество минут до новости, в течение которых торговля приостанавливается при включённом фильтре новостей. |
| количество минут после новости (BeforeNewsStop) | количество минут после новости — Количество минут после новости, в течение которых торговля приостанавливается при включённом фильтре новостей. |
| смещение брокера по GMT (offset) | смещение брокера по GMT — Смещение времени брокера относительно GMT для корректной работы фильтра новостей. |
| учитывать новости низкой важности (NewsLight) | учитывать новости низкой важности — Учитывать новости низкой важности при работе фильтра новостей. |
| учитывать новости средней важности (NewsMedium) | учитывать новости средней важности — Учитывать новости средней важности при работе фильтра новостей. |
| учитывать новости высокой важности (NewsHard) | учитывать новости высокой важности — Учитывать новости высокой важности при работе фильтра новостей. |
| mc0 | Группа настроек стратегии 1 — Разделитель группы настроек первой стратегии. |
| стратегия 1 (strategy_1) | стратегия 1 — Включение первой торговой стратегии советника. |
| меджик (magic_1) | меджик — Магический номер ордеров первой стратегии. |
| рабочий ТФ 1 (time_frame_level1_1) | рабочий ТФ 1 — Рабочий таймфрейм первого уровня для первой стратегии. |
| количество ордеров для изменения ТФ на 2 (order_level1_1) | количество ордеров для изменения ТФ на 2 — Количество ордеров, при котором происходит изменение рабочего таймфрейма на второй уровень в первой стратегии. |
| рабочий ТФ 2 (time_frame_level2_1) | рабочий ТФ 2 — Рабочий таймфрейм второго уровня для первой стратегии. |
| количество ордеров для изменения ТФ на 3 (order_level2_1) | количество ордеров для изменения ТФ на 3 — Количество ордеров, при котором происходит изменение рабочего таймфрейма на третий уровень в первой стратегии. |
| рабочий ТФ 3 (time_frame_level3_1) | рабочий ТФ 3 — Рабочий таймфрейм третьего уровня для первой стратегии. |
| количество ордеров для изменения ТФ на 4 (order_level3_1) | количество ордеров для изменения ТФ на 4 — Количество ордеров, при котором происходит изменение рабочего таймфрейма на четвёртый уровень в первой стратегии. |
| рабочий ТФ 4 (time_frame_level4_1) | рабочий ТФ 4 — Рабочий таймфрейм четвёртого уровня для первой стратегии. |
| тип сигнала (signal_type_1) | тип сигнала — Тип сигнала, используемый первой стратегией. |
| тайм фрейм свечей (bars_time_frame_1) | тайм фрейм свечей — Таймфрейм, по которому анализируются свечи для сигналов первой стратегии. |
| тайм фрейм CCI (cci_time_frame_1) | тайм фрейм CCI — Таймфрейм, по которому рассчитывается индикатор CCI для первой стратегии. |
| тайм фрейм RSI (rsi_time_frame_1) | тайм фрейм RSI — Таймфрейм, по которому рассчитывается индикатор RSI для первой стратегии. |
| тайм фрейм MACD (macd_time_frame_1) | тайм фрейм MACD — Таймфрейм, по которому рассчитывается индикатор MACD для первой стратегии. |
| тайм фрейм Stochastic (stochastic_time_frame_1) | тайм фрейм Stochastic — Таймфрейм, по которому рассчитывается индикатор Stochastic для первой стратегии. |
| верхний уровень CCI (cci_level_up_1) | верхний уровень CCI — Верхний уровень CCI, используемый для формирования сигналов первой стратегии. |
| нижний уровень CCI (cci_level_down_1) | нижний уровень CCI — Нижний уровень CCI, используемый для формирования сигналов первой стратегии. |
| верхний уровень RSI (rsi_level_up_1) | верхний уровень RSI — Верхний уровень RSI, используемый для формирования сигналов первой стратегии. |
| нижний уровень RSI (rsi_level_down_1) | нижний уровень RSI — Нижний уровень RSI, используемый для формирования сигналов первой стратегии. |
| верхний уровень Stochastic (stoch_level_up_1) | верхний уровень Stochastic — Верхний уровень Stochastic, используемый для формирования сигналов первой стратегии. |
| нижний уровень Stochastic (stoch_level_down_1) | нижний уровень Stochastic — Нижний уровень Stochastic, используемый для формирования сигналов первой стратегии. |
| вариант стартового лота (mm_type_1) | вариант стартового лота — Вариант расчёта стартового лота для первой стратегии. |
| фиксированный лот (lot_fix_1) | фиксированный лот — Фиксированный размер лота для первой стратегии. |
| риск на сделку (lot_risk_1) | риск на сделку — Риск на сделку в процентах для первой стратегии. |
| множитель лота (lot_coefficient_1) | множитель лота — Множитель лота для последующих ордеров первой стратегии. |
| стартовый шаг между ордерами (step_start_1) | стартовый шаг между ордерами — Стартовый шаг между ордерами первой стратегии. |
| множитель шага между ордерами (step_coefficient_1) | множитель шага между ордерами — Множитель шага между ордерами первой стратегии. |
| тейк профит (take_profit_1) | тейк профит — Размер тейк-профита для ордеров первой стратегии. |
| проскальзывание (slippage_1) | проскальзывание — Допустимое проскальзывание при открытии ордеров первой стратегии. |
| максимум ордеров (max_orders_1) | максимум ордеров — Максимальное количество ордеров в сетке первой стратегии. |
| старт трейлинг стопа (trail_start_1) | старт трейлинг стопа — Уровень прибыли, при котором начинается трейлинг-стоп для ордеров первой стратегии. |
| размер трейлинг стопа (trail_stop_1) | размер трейлинг стопа — Размер трейлинг-стопа для ордеров первой стратегии. |
| mc1 | Группа настроек стратегии 2 — Разделитель группы настроек второй стратегии. |
| стратегия 1 (strategy_2) | стратегия 1 — Включение второй торговой стратегии советника. |
| меджик (magic_2) | меджик — Магический номер ордеров второй стратегии. |
| тип сигнала (signal_type_2) | тип сигнала — Тип сигнала, используемый второй стратегией. |
| рабочий ТФ 1 (time_frame_level1_2) | рабочий ТФ 1 — Рабочий таймфрейм первого уровня для второй стратегии. |
| количество ордеров для изменения ТФ на 2 (order_level1_2) | количество ордеров для изменения ТФ на 2 — Количество ордеров, при котором происходит изменение рабочего таймфрейма на второй уровень во второй стратегии. |
| рабочий ТФ 2 (time_frame_level2_2) | рабочий ТФ 2 — Рабочий таймфрейм второго уровня для второй стратегии. |
| количество ордеров для изменения ТФ на 3 (order_level2_2) | количество ордеров для изменения ТФ на 3 — Количество ордеров, при котором происходит изменение рабочего таймфрейма на третий уровень во второй стратегии. |
| рабочий ТФ 3 (time_frame_level3_2) | рабочий ТФ 3 — Рабочий таймфрейм третьего уровня для второй стратегии. |
| количество ордеров для изменения ТФ на 4 (order_level3_2) | количество ордеров для изменения ТФ на 4 — Количество ордеров, при котором происходит изменение рабочего таймфрейма на четвёртый уровень во второй стратегии. |
| рабочий ТФ 4 (time_frame_level4_2) | рабочий ТФ 4 — Рабочий таймфрейм четвёртого уровня для второй стратегии. |
| тайм фрейм свечей (bars_time_frame_2) | тайм фрейм свечей — Таймфрейм, по которому анализируются свечи для сигналов второй стратегии. |
| тайм фрейм CCI (cci_time_frame_2) | тайм фрейм CCI — Таймфрейм, по которому рассчитывается индикатор CCI для второй стратегии. |
| тайм фрейм RSI (rsi_time_frame_2) | тайм фрейм RSI — Таймфрейм, по которому рассчитывается индикатор RSI для второй стратегии. |
| тайм фрейм Stochastic (stochastic_time_frame_2) | тайм фрейм Stochastic — Таймфрейм, по которому рассчитывается индикатор Stochastic для второй стратегии. |
| тайм фрейм WPR (wpr_time_frame_2) | тайм фрейм WPR — Таймфрейм, по которому рассчитывается индикатор WPR для второй стратегии. |
| верхний уровень CCI (cci_level_up_2) | верхний уровень CCI — Верхний уровень CCI, используемый для формирования сигналов второй стратегии. |
| нижний уровень CCI (cci_level_down_2) | нижний уровень CCI — Нижний уровень CCI, используемый для формирования сигналов второй стратегии. |
| верхний уровень RSI (rsi_level_up_2) | верхний уровень RSI — Верхний уровень RSI, используемый для формирования сигналов второй стратегии. |
| нижний уровень RSI (rsi_level_down_2) | нижний уровень RSI — Нижний уровень RSI, используемый для формирования сигналов второй стратегии. |
| верхний уровень Stochastic (stoch_level_up_2) | верхний уровень Stochastic — Верхний уровень Stochastic, используемый для формирования сигналов второй стратегии. |
| нижний уровень Stochastic (stoch_level_down_2) | нижний уровень Stochastic — Нижний уровень Stochastic, используемый для формирования сигналов второй стратегии. |
| верхний уровень WPR (wpr_level_up_2) | верхний уровень WPR — Верхний уровень WPR, используемый для формирования сигналов второй стратегии. |
| нижний уровень WPR (wpr_level_down_2) | нижний уровень WPR — Нижний уровень WPR, используемый для формирования сигналов второй стратегии. |
| вариант стартового лота (mm_type_2) | вариант стартового лота — Вариант расчёта стартового лота для второй стратегии. |
| фиксированный лот (lot_fix_2) | фиксированный лот — Фиксированный размер лота для второй стратегии. |
| риск на сделку (lot_risk_2) | риск на сделку — Риск на сделку в процентах для второй стратегии. |
| множитель лота (lot_coefficient_2) | множитель лота — Множитель лота для последующих ордеров второй стратегии. |
| стартовый шаг между ордерами (step_start_2) | стартовый шаг между ордерами — Стартовый шаг между ордерами второй стратегии. |
| множитель шага между ордерами (step_coefficient_2) | множитель шага между ордерами — Множитель шага между ордерами второй стратегии. |
| тейк профит (take_profit_2) | тейк профит — Размер тейк-профита для ордеров второй стратегии. |
| проскальзывание (slippage_2) | проскальзывание — Допустимое проскальзывание при открытии ордеров второй стратегии. |
| максимум ордеров (max_orders_2) | максимум ордеров — Максимальное количество ордеров в сетке второй стратегии. |
| старт трейлинг стопа (trail_start_2) | старт трейлинг стопа — Уровень прибыли, при котором начинается трейлинг-стоп для ордеров второй стратегии. |
| размер трейлинг стопа (trail_stop_2) | размер трейлинг стопа — Размер трейлинг-стопа для ордеров второй стратегии. |
| mc2 | Группа настроек стратегии 3 — Разделитель группы настроек третьей стратегии. |
| стратегия 1 (strategy_3) | стратегия 1 — Включение третьей торговой стратегии советника. |
| меджик (magic_3) | меджик — Магический номер ордеров третьей стратегии. |
| тип сигнала (signal_type_3) | тип сигнала — Тип сигнала, используемый третьей стратегией. |
| рабочий ТФ 1 (time_frame_level1_3) | рабочий ТФ 1 — Рабочий таймфрейм первого уровня для третьей стратегии. |
| количество ордеров для изменения ТФ на 2 (order_level1_3) | количество ордеров для изменения ТФ на 2 — Количество ордеров, при котором происходит изменение рабочего таймфрейма на второй уровень в третьей стратегии. |
Поиск по коду файла
int account_number = *******;
datetime account_date = D'2026.06.12';
#property strict
enum ENUM_MM_TYPE
{
MM_TYPE_FIX_LOT = 0, // фиксированный лот
MM_TYPE_RISK = 1, // риск от размера депозита
};
enum ENUM_SIGNAL_TYPE
{
SIGNAL_TYPE_SIMPLE = 0, // простой сигнал
SIGNAL_TYPE_COMPLICATED = 1, // сложный сигнал
};
enum ENUM_STEP_TYPE
{
STEP_TYPE_FIX = 0, // фиксированный шаг
STEP_TYPE_ATR = 1, // шаг от АТР
};
input string mc5 = "----------- Общие настройки -----------"; //---------------------------
input bool two_way = false; // работа в обе стороны одновременно
input bool auto_magic = false; // автоматический меджик
input string orders_comment = "ApexTrade str"; // комментарий ордеров
input bool limit_one_direction = true; // запрет торговли в одном направлении
input bool calc_swap_and_comission = true; // подсчет комиссии и свопов
input double account_drow_down = 30; // запрет новых сеток при просадке %
input double equity_target_percent= 50; // закрытие всего при просадке %
input int january_start = 10; // начало торговли в январе
input int december_stop = 22; // окончание тоговли в декабре
input string mc4 = "----------- увеличение ТФ принятия решения -----------"; //---------------------------
input bool decision_switch_tf_all = true; // общее изменений ТФ по ордерам
input ENUM_TIMEFRAMES decision_time_frame_1= PERIOD_M5; // стартовый ТФ
input int decision_orders_1 = 6; // ордеров первого уровня
input ENUM_TIMEFRAMES decision_time_frame_2= PERIOD_H1; // второй ТФ
input int decision_orders_2 = 8; // ордеров второго уровня
input ENUM_TIMEFRAMES decision_time_frame_3= PERIOD_H4; // третий ТФ
input int decision_orders_3 = 10; // ордеров третьего уровня
input ENUM_TIMEFRAMES decision_time_frame_4= PERIOD_D1; // послений ТФ
input string mc6 = "----------- фильтр новостей -----------"; //---------------------------
input bool news_filter = false; // фильтр новостей
input int AfterNewsStop = 5; // количество минут до новости
input int BeforeNewsStop = 5; // количество минут после новости
input int offset = 2; // смещение брокера по GMT
input bool NewsLight = false; // учитывать новости низкой важности
input bool NewsMedium = false; // учитывать новости средней важности
input bool NewsHard = true; // учитывать новости высокой важности
input string mc0 = "----------- Стратегия 1 -----------"; //---------------------------
input bool strategy_1 = true; // стратегия 1
input int magic_1 = 1231; // меджик
input ENUM_TIMEFRAMES time_frame_level1_1 = PERIOD_M5; // рабочий ТФ 1
input int order_level1_1 = 7; // количество ордеров для изменения ТФ на 2
input ENUM_TIMEFRAMES time_frame_level2_1 = PERIOD_M5; // рабочий ТФ 2
input int order_level2_1 = 7; // количество ордеров для изменения ТФ на 3
input ENUM_TIMEFRAMES time_frame_level3_1 = PERIOD_M5; // рабочий ТФ 3
input int order_level3_1 = 7; // количество ордеров для изменения ТФ на 4
input ENUM_TIMEFRAMES time_frame_level4_1 = PERIOD_M5; // рабочий ТФ 4
input ENUM_SIGNAL_TYPE signal_type_1 = SIGNAL_TYPE_COMPLICATED; // тип сигнала
input ENUM_TIMEFRAMES bars_time_frame_1 = PERIOD_H1; // тайм фрейм свечей
input ENUM_TIMEFRAMES cci_time_frame_1 = PERIOD_H1; // тайм фрейм CCI
input ENUM_TIMEFRAMES rsi_time_frame_1 = PERIOD_H1; // тайм фрейм RSI
input ENUM_TIMEFRAMES macd_time_frame_1 = PERIOD_H1; // тайм фрейм MACD
input ENUM_TIMEFRAMES stochastic_time_frame_1 = PERIOD_H1; // тайм фрейм Stochastic
ENUM_TIMEFRAMES wpr_time_frame_1 = PERIOD_H1; // тайм фрейм WPR
input double cci_level_up_1 = 120; // верхний уровень CCI
input double cci_level_down_1 = -120; // нижний уровень CCI
input double rsi_level_up_1 = 60; // верхний уровень RSI
input double rsi_level_down_1 = 40; // нижний уровень RSI
input double stoch_level_up_1 = 80; // верхний уровень Stochastic
input double stoch_level_down_1 = 18; // нижний уровень Stochastic
double wpr_level_up_1 = -20; // верхний уровень WPR
double wpr_level_down_1 = -80; // нижний уровень WPR
input ENUM_MM_TYPE mm_type_1 = MM_TYPE_FIX_LOT; // вариант стартового лота
input double lot_fix_1 = 0.1; // фиксированный лот
input double lot_risk_1 = 5; // риск на сделку
input double lot_coefficient_1 = 2.0; // множитель лота
input double step_start_1 = 20; // стартовый шаг между ордерами
input double step_coefficient_1 = 1.2; // множитель шага между ордерами
input double take_profit_1 = 20; // тейк профит
input int slippage_1 = 3; // проскальзывание
input int max_orders_1 = 13; // максимум ордеров
input double trail_start_1 = 10; // старт трейлинг стопа
input double trail_stop_1 = 5; // размер трейлинг стопа
input string mc1 = "----------- Стратегия 2 -----------"; //---------------------------
input bool strategy_2 = true; // стратегия 1
input int magic_2 = 1232; // меджик
input ENUM_SIGNAL_TYPE signal_type_2 = SIGNAL_TYPE_COMPLICATED; // тип сигнала
input ENUM_TIMEFRAMES time_frame_level1_2 = PERIOD_M5; // рабочий ТФ 1
input int order_level1_2 = 7; // количество ордеров для изменения ТФ на 2
input ENUM_TIMEFRAMES time_frame_level2_2 = PERIOD_M5; // рабочий ТФ 2
input int order_level2_2 = 7; // количество ордеров для изменения ТФ на 3
input ENUM_TIMEFRAMES time_frame_level3_2 = PERIOD_M5; // рабочий ТФ 3
input int order_level3_2 = 7; // количество ордеров для изменения ТФ на 4
input ENUM_TIMEFRAMES time_frame_level4_2 = PERIOD_M5; // рабочий ТФ 4
input ENUM_TIMEFRAMES bars_time_frame_2 = PERIOD_H1; // тайм фрейм свечей
input ENUM_TIMEFRAMES cci_time_frame_2 = PERIOD_H1; // тайм фрейм CCI
input ENUM_TIMEFRAMES rsi_time_frame_2 = PERIOD_H1; // тайм фрейм RSI
ENUM_TIMEFRAMES macd_time_frame_2 = PERIOD_H1; // тайм фрейм MACD
input ENUM_TIMEFRAMES stochastic_time_frame_2 = PERIOD_H1; // тайм фрейм Stochastic
input ENUM_TIMEFRAMES wpr_time_frame_2 = PERIOD_H1; // тайм фрейм WPR
input double cci_level_up_2 = 110; // верхний уровень CCI
input double cci_level_down_2 = -110; // нижний уровень CCI
input double rsi_level_up_2 = 65; // верхний уровень RSI
input double rsi_level_down_2 = 35; // нижний уровень RSI
input double stoch_level_up_2 = 80; // верхний уровень Stochastic
input double stoch_level_down_2 = 20; // нижний уровень Stochastic
input double wpr_level_up_2 = -20; // верхний уровень WPR
input double wpr_level_down_2 = -80; // нижний уровень WPR
input ENUM_MM_TYPE mm_type_2 = MM_TYPE_FIX_LOT; // вариант стартового лота
input double lot_fix_2 = 0.1; // фиксированный лот
input double lot_risk_2 = 5; // риск на сделку
input double lot_coefficient_2 = 2.0; // множитель лота
input double step_start_2 = 20; // стартовый шаг между ордерами
input double step_coefficient_2 = 1.2; // множитель шага между ордерами
input double take_profit_2 = 20; // тейк профит
input int slippage_2 = 3; // проскальзывание
input int max_orders_2 = 13; // максимум ордеров
input double trail_start_2 = 10; // старт трейлинг стопа
input double trail_stop_2 = 5; // размер трейлинг стопа
input string mc2 = "----------- Стратегия 3 -----------"; //---------------------------
input bool strategy_3 = true; // стратегия 1
input int magic_3 = 1233; // меджик
input ENUM_SIGNAL_TYPE signal_type_3 = SIGNAL_TYPE_COMPLICATED; // тип сигнала
input ENUM_TIMEFRAMES time_frame_level1_3 = PERIOD_M5; // рабочий ТФ 1
input int order_level1_3 = 7; // количество ордеров для изменения ТФ на 2
input ENUM_TIMEFRAMES time_frame_level2_3 = PERIOD_M5; // рабочий ТФ 2
input int order_level2_3 = 7; // количество ордеров для изменения ТФ на 3
input ENUM_TIMEFRAMES time_frame_level3_3 = PERIOD_M5; // рабочий ТФ 3
input int order_level3_3 = 7; // количество ордеров для изменения ТФ на 4
input ENUM_TIMEFRAMES time_frame_level4_3 = PERIOD_M5; // рабочий ТФ 4
input ENUM_TIMEFRAMES bars_time_frame_3 = PERIOD_H1; // тайм фрейм свечей
input ENUM_TIMEFRAMES cci_time_frame_3 = PERIOD_H1; // тайм фрейм CCI
input ENUM_TIMEFRAMES rsi_time_frame_3 = PERIOD_H1; // тайм фрейм RSI
ENUM_TIMEFRAMES macd_time_frame_3 = PERIOD_H1; // тайм фрейм MACD
input ENUM_TIMEFRAMES stochastic_time_frame_3 = PERIOD_H1; // тайм фрейм Stochastic
input ENUM_TIMEFRAMES wpr_time_frame_3 = PERIOD_H1; // тайм фрейм WPR
input double cci_level_up_3 = 120; // верхний уровень CCI
input double cci_level_down_3 = -120; // нижний уровень CCI
input double rsi_level_up_3 = 70; // верхний уровень RSI
input double rsi_level_down_3 = 30; // нижний уровень RSI
input double stoch_level_up_3 = 80; // верхний уровень Stochastic
input double stoch_level_down_3 = 20; // нижний уровень Stochastic
input double wpr_level_up_3 = -20; // верхний уровень WPR
input double wpr_level_down_3 = -80; // нижний уровень WPR
input ENUM_MM_TYPE mm_type_3 = MM_TYPE_FIX_LOT; // вариант стартового лота
input double lot_fix_3 = 0.1; // фиксированный лот
input double lot_risk_3 = 5; // риск на сделку
input double lot_coefficient_3 = 2.0; // множитель лота
input double step_start_3 = 20; // стартовый шаг между ордерами
input double step_coefficient_3 = 1.2; // множитель шага между ордерами
input double take_profit_3 = 20; // тейк профит
input int slippage_3 = 3; // проскальзывание
input int max_orders_3 = 13; // максимум ордеров
input double trail_start_3 = 10; // старт трейлинг стопа
input double trail_stop_3 = 5; // размер трейлинг стопа
input string mc7 = "----------- Алгоритм перекрытия Первый-----------"; //---------------------------
input double module_drow_down = 30; // просадка для активации модуля
input int TypeOverlap = 2;
int Typeoverlap;
input int LevelMargTypeOverlap = 10000;
input bool PartOverlap = false;
bool Partoverlap;
input int LevelMargPartOverlap = 15000;
input int LeadingOrder = 4;
input int ProfitPersent = 30;
input double MultOver = 1.3;
input int OverTralStart = 5;
input int OverTralSize = 2;
input string mc8 = "----------- Алгоритм Лока и OpenLOCK -----------"; //---------------------------
input double crushing_drow_down = 999; // просадка для активации алгоритма
input int crushing_magic = 1239; // меджик
input ENUM_STEP_TYPE crushing_step_type = STEP_TYPE_FIX; // тип шага докупки
input double crushing_step_fix = 10; // шаг докупки
input int crushing_atr_period = 14; // период АТР
input double crushing_atr_coefficient = 1.0; // коэффициент АТР
input double crushing_lot_start_div = 40; // делитель для стартовый лот
input double crushing_lot_coefficient = 1.7; // множитель лота
input double crushing_lot_over_factor = 0.5; // множитель лота для перекрытия
input double crushing_tp_over = 3; // на сколько пунктов должны перекрыть
input int crushing_orders_max = 9; // максимум ордеров сетки
input double crushing_stop_loss = 30; // стоп лосс сетки
input string mc3 = "----------- Общие настройки индикаторов -----------"; //---------------------------
input int cci_period = 14; // период CCI
input ENUM_APPLIED_PRICE cci_price = PRICE_TYPICAL; // цена CCI
input int rsi_period = 14; // период RSI
input ENUM_APPLIED_PRICE rsi_price = PRICE_CLOSE; // цена RSI
input int macd_fast_ema_period = 12; // период быстрой средней MACD
input int macd_slow_ema_period = 26; // период медленной средней MACD
input int macd_signal_period = 9; // период сигнальной линии MACD
input ENUM_APPLIED_PRICE macd_applied_price = PRICE_CLOSE; // тип цены MACD
input int stoch_k_period = 5; // период линии K Stochastic
input int stoch_d_period = 3; // период линии D Stochastic
input int stoch_slowing = 3; // замедление Stochastic
input ENUM_MA_METHOD stoch_method = MODE_SMA; // метод усреднения Stochastic
input ENUM_STO_PRICE stoch_price_field = STO_LOWHIGH; // тип цены Stochastic
input int wpr_period = 14; // период WPR
bool Info = true;
int slippage_open = 3;
int slippage_close = 15;
int TryToTrade = 20;
int WaitTime = 1500;
int CommentSize = 0;
int i, r, z, // переменные для пересчетов for
dg, dig, // округление лотов и цены
last_ticket; // последние тикет для пересчета ордеров for
bool Work=true, Test=false, // флаг разрашения работы и фраг работы в тестере
long_allowed=true, short_allowed=true, // разрешение покупать и продавать
market_close=false, // закрыт ли рынок
can_trade=true; // возможность торговать
datetime market_close_local_time, // отметка о времени закрытия рынка
time_bar_can_open; // время минутной свечи для разрешения торговать
double Pp, Mnoj, // Point округленный до 2/4 знака и обратный множитель
Pp2, Mnoj2, // стандартный Point и обратный множитель
min_lot, max_lot; // минимальный и максимальный лот
string Symb, // валюта инструмента
CommentBox[1],cm2; // комментарий на графике
bool strategy[3];
int magic[3];
ENUM_TIMEFRAMES time_frame_level1[3];
int order_level1[3];
ENUM_TIMEFRAMES time_frame_level2[3];
int order_level2[3];
ENUM_TIMEFRAMES time_frame_level3[3];
int order_level3[3];
ENUM_TIMEFRAMES time_frame_level4[3];
ENUM_SIGNAL_TYPE signal_type[3];
ENUM_TIMEFRAMES bars_time_frame[3];
ENUM_TIMEFRAMES time_frame_signal[3];
ENUM_TIMEFRAMES cci_time_frame[3];
ENUM_TIMEFRAMES rsi_time_frame[3];
ENUM_TIMEFRAMES macd_time_frame[3];
ENUM_TIMEFRAMES stochastic_time_frame[3];
ENUM_TIMEFRAMES wpr_time_frame[3];
double cci_level_up[3];
double cci_level_down[3];
double rsi_level_up[3];
double rsi_level_down[3];
double stoch_level_up[3];
double stoch_level_down[3];
double wpr_level_up[3];
double wpr_level_down[3];
ENUM_MM_TYPE mm_type[3];
double lot_fix[3];
double lot_risk[3];
double lot_coefficient[3];
double step_start[3];
double step_coefficient[3];
double take_profit[3];
int slippage[3];
int max_orders[3];
double trail_start[3];
double trail_stop[3];
double trail_buy_price[3];
double trail_sell_price[3];
datetime time_bar[3];
datetime time_bar_outbid_buy[3];
datetime time_bar_outbid_sell[3];
bool info_state = true;
int info_total_buy[3];
int info_total_sell[3];
ENUM_TIMEFRAMES info_time_frame_now[3];
double info_profit[3];
int NomNews=0;
string NewsArr[4][1000];
int Now=0;
datetime LastUpd;
string str1;
bool decision_can_open_new = false;
ENUM_TIMEFRAMES decision_time_frame[4];
int decision_orders[3];
datetime decision_time_bar;
bool near_news = false;
datetime news_time_bar;
bool can_open_new_buy = false;
bool can_open_new_sell = false;
bool can_open_second_buy = false;
bool can_open_second_sell = false;
int TicketB[],TicketS[],TicketBS[],TicketSS[],TicketBL[],TicketSL[],hp[4,6],TicketLB,TicketLS;
int ticket,Session,Lpos[],Lpos1,Cpos[],cmagic,totalord,totalbuy,totalsell,slip,Acc,levels,infoProfit,sens,pricedistance,distance_ma,overlap,totb,tots,buybtn,sellbtn,closebtn,
lottxt,lotbtnp,lotbtnm,closesellbtn,closebuybtn,hwnd,btn1,sum,FirstTicketBuy,FirstTicketSell,
MagicNumber,LastTicketBuy,LastTicketSell,cu=1,ticketbuy,ticketsell,PLastTicketBuy,PLastTicketSell,totalbs,totalss,totalbl,totalsl,
bs,cbs,wllevel,wlstart,stopLVL;
color col,ZLcolor,TPcolor,ColOver0,ColOver1;
double pips,TPPrice,Cprofit[],Lprofit[],total_plus_money,CurrentDrawdown,CurrentMargLevel,Profit,SumProfit,SumLotBuy,SumLotSell,LotR,Sum_lot,Sumlot,minLot,delta,TV,DrawDownRate,FreeMargin,Balance,Sredstva,Step,LastSLBuy,
LastSLSell,spr,freez,stlev,ProfitBuy,ProfitSell,LastLotBuy,LastLotSell,LastPriceBuy,LastPriceSell,
FirstPriceBuy,FirstPriceSell,maxlot,PrOver,
ProfitLockB,ProfitLockS,LotLockB,LotLockS,FirstProfitBuy,FirstProfitSell,FirstLotBuy,FirstLotSell,LastProfitBuy,LastProfitSell,
Llot[],Llot1,Clot[],total_minus_money,loss_div_lot,lastprice,pointProfit,zeroPrace;
string comment,Typetral="";
datetime TimeStart,TimeL;
bool CloseTrigger,NoTrade,fixlotexp,InitFail,spreadON,flag,flag1;
datetime crushing_start_time_buy = 0;
datetime crushing_start_time_sell = 0;
void OnTick()
{
// код доступен только после оплаты
}
void work(int index)
{
double high[2];
double low[2];
double close[2];
double rsi[2];
double cci[2];
double macd[2];
double stoch[2];
double wpr[2];
bool signal_buy = false;
bool signal_sell = false;
if(iTime(NULL,time_frame_signal[index],0) > time_bar[index])
{
time_bar[index] = iTime(NULL,time_frame_signal[index],0);
if(signal_type[index]==SIGNAL_TYPE_SIMPLE)
{
if(index==0)
{
rsi[0] = iRSI(NULL,rsi_time_frame[index],rsi_period,rsi_price,1);
high[0] = iHigh(NULL,bars_time_frame[index],1);
low[1] = iLow(NULL,bars_time_frame[index],2);
if(NormalizeDouble(rsi[0] - rsi_level_down[index],_Digits) > 0.0 &&
NormalizeDouble(high[0] - low[1],_Digits) > 0.0)
signal_sell = true;
if(NormalizeDouble(rsi_level_up[index] - rsi[0],_Digits) > 0.0)
signal_buy = true;
}
if(index==1)
{
close[0] = iClose(NULL,bars_time_frame[index],1);
close[1] = iClose(NULL,bars_time_frame[index],2);
if(NormalizeDouble(close[1] - close[0],_Digits) > 0.0)
signal_sell = true;
signal_buy = true;
}
if(index==2)
{
rsi[0] = iRSI(NULL,rsi_time_frame[index],rsi_period,rsi_price,1);
if(NormalizeDouble(rsi[0]-rsi_level_down[index],_Digits) > 0.0)
signal_sell = true;
if(NormalizeDouble(rsi_level_up[index] - rsi[0],_Digits) > 0.0)
signal_buy = true;
}
}
if(signal_type[index]==SIGNAL_TYPE_COMPLICATED)
{
if(index==0)
{
cci[0] = iCCI(NULL,cci_time_frame[index],cci_period,cci_price,1);
rsi[0] = iRSI(NULL,rsi_time_frame[index],rsi_period,rsi_price,1);
macd[0]= iMACD(NULL,macd_time_frame[index],macd_fast_ema_period,macd_slow_ema_period,macd_signal_period,macd_applied_price,MODE_MAIN,1);
macd[1]= iMACD(NULL,macd_time_frame[index],macd_fast_ema_period,macd_slow_ema_period,macd_signal_period,macd_applied_price,MODE_MAIN,2);
stoch[0] = iStochastic(NULL,stochastic_time_frame[index],stoch_k_period,stoch_d_period,stoch_slowing,stoch_method,stoch_price_field,MODE_MAIN,1);
if(NormalizeDouble(cci[0] - cci_level_up[index],_Digits) > 0.0 &&
NormalizeDouble(rsi[0] - rsi_level_up[index],_Digits) > 0.0 &&
NormalizeDouble(macd[1] - macd[0],_Digits) > 0.0 &&
NormalizeDouble(stoch[0] - stoch_level_up[index],_Digits) > 0.0)
{
signal_sell = true;
}
if(NormalizeDouble(cci[0] - cci_level_down[index],_Digits) < 0.0 &&
NormalizeDouble(rsi[0] - rsi_level_down[index],_Digits) < 0.0 &&
NormalizeDouble(macd[1] - macd[0],_Digits) < 0.0 &&
NormalizeDouble(stoch[0] - stoch_level_down[index],_Digits) < 0.0)
{
signal_buy = true;
}
}
if(index==1)
{
cci[0] = iCCI(NULL,cci_time_frame[index],cci_period,cci_price,1);
rsi[0] = iRSI(NULL,rsi_time_frame[index],rsi_period,rsi_price,1);
stoch[0] = iStochastic(NULL,stochastic_time_frame[index],stoch_k_period,stoch_d_period,stoch_slowing,stoch_method,stoch_price_field,MODE_MAIN,1);
wpr[0] = iWPR(NULL,wpr_time_frame[index],wpr_period,1);
if(NormalizeDouble(cci[0] - cci_level_up[index],_Digits) > 0.0 &&
NormalizeDouble(rsi[0] - rsi_level_up[index],_Digits) > 0.0 &&
NormalizeDouble(stoch[0] - stoch_level_up[index],_Digits) > 0.0 &&
NormalizeDouble(wpr[0] - wpr_level_up[index],_Digits) > 0.0)
signal_sell = true;
if(NormalizeDouble(cci[0] - cci_level_down[index],_Digits) < 0.0 &&
NormalizeDouble(rsi[0] - rsi_level_down[index],_Digits) < 0.0 &&
NormalizeDouble(stoch[0] - stoch_level_down[index],_Digits) < 0.0 &&
NormalizeDouble(wpr[0] - wpr_level_down[index],_Digits) < 0.0)
signal_buy = true;
}
if(index==2)
{
cci[0] = iCCI(NULL,cci_time_frame[index],cci_period,cci_price,1);
rsi[0] = iRSI(NULL,rsi_time_frame[index],rsi_period,rsi_price,1);
stoch[0] = iStochastic(NULL,stochastic_time_frame[index],stoch_k_period,stoch_d_period,stoch_slowing,stoch_method,stoch_price_field,MODE_MAIN,1);
wpr[0] = iWPR(NULL,wpr_time_frame[index],wpr_period,1);
if(NormalizeDouble(cci[0] - cci_level_up[index],_Digits) > 0.0 &&
NormalizeDouble(rsi[0] - rsi_level_up[index],_Digits) > 0.0 &&
NormalizeDouble(stoch[0] - stoch_level_up[index],_Digits) > 0.0 &&
NormalizeDouble(wpr[0] - wpr_level_up[index],_Digits) > 0.0)
signal_sell = true;
if(NormalizeDouble(cci[0] - cci_level_down[index],_Digits) < 0.0 &&
NormalizeDouble(rsi[0] - rsi_level_down[index],_Digits) < 0.0 &&
NormalizeDouble(stoch[0] - stoch_level_down[index],_Digits) < 0.0 &&
NormalizeDouble(wpr[0] - wpr_level_down[index],_Digits) < 0.0)
signal_buy = true;
}
}
}
int buy_orders = 0;
double buy_price_last = 0;
double buy_price_sum = 0;
double buy_lot_sum = 0;
double buy_snc = 0;
double buy_lot_first = 0;
int sell_orders = 0;
double sell_price_last = 0;
double sell_price_sum = 0;
double sell_lot_sum = 0;
double sell_snc = 0;
double sell_lot_first = 0;
double open_profit = 0;
last_ticket = -1;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=_Symbol)
continue;
if(OrderMagicNumber()!=magic[index])
continue;
if(last_ticket == OrderTicket())
continue;
last_ticket = OrderTicket();
int comment_dash = StringFind(OrderComment(),"-",0);
int order_index = (int)StringSubstr(OrderComment(),comment_dash+1,0);
open_profit += OrderProfit()+OrderSwap()+OrderCommission();
if(OrderType()==OP_BUY)
{
buy_orders++;
if(OrderOpenPrice() < buy_price_last || buy_price_last==0)
buy_price_last = OrderOpenPrice();
buy_price_sum += OrderOpenPrice() * OrderLots();
buy_lot_sum += OrderLots();
buy_snc += OrderSwap()+OrderCommission();
if(OrderLots()<buy_lot_first || buy_lot_first==0)
buy_lot_first = OrderLots();
}
if(OrderType()==OP_SELL)
{
sell_orders++;
if(OrderOpenPrice() > sell_price_last)
sell_price_last = OrderOpenPrice();
sell_price_sum += OrderOpenPrice() * OrderLots();
sell_lot_sum += OrderLots();
sell_snc += OrderSwap()+OrderCommission();
if(OrderLots()<sell_lot_first || sell_lot_first==0)
sell_lot_first = OrderLots();
}
}
if(buy_lot_sum>0)
buy_price_sum /= buy_lot_sum;
if(sell_lot_sum>0)
sell_price_sum /= sell_lot_sum;
if(calc_swap_and_comission)
{
if(buy_lot_sum>0)
buy_price_sum -= (buy_snc / (MarketInfo(_Symbol,MODE_TICKVALUE) * buy_lot_sum)) * _Point;
if(sell_lot_sum>0)
sell_price_sum += (sell_snc / (MarketInfo(_Symbol,MODE_TICKVALUE) * sell_lot_sum)) * _Point;
}
bool can_outbid_buy = false;
ENUM_TIMEFRAMES work_tf_buy = time_frame_level1[index];
if(buy_orders >= order_level1[index])
work_tf_buy = time_frame_level2[index];
if(buy_orders >= order_level2[index])
work_tf_buy = time_frame_level3[index];
if(buy_orders >= order_level3[index])
work_tf_buy = time_frame_level4[index];
if(iTime(NULL,work_tf_buy,0) > time_bar_outbid_buy[index])
{
time_bar_outbid_buy[index] = iTime(NULL,work_tf_buy,0);
can_outbid_buy = true;
}
bool can_outbid_sell = false;
ENUM_TIMEFRAMES work_tf_sell = time_frame_level1[index];
if(sell_orders >= order_level1[index])
work_tf_sell = time_frame_level2[index];
if(sell_orders >= order_level2[index])
work_tf_sell = time_frame_level3[index];
if(sell_orders >= order_level3[index])
work_tf_sell = time_frame_level4[index];
if(iTime(NULL,work_tf_sell,0) > time_bar_outbid_sell[index])
{
time_bar_outbid_sell[index] = iTime(NULL,work_tf_sell,0);
can_outbid_sell = true;
}
info_total_buy[index] = buy_orders;
info_total_sell[index] = sell_orders;
info_profit[index] = open_profit;
if(sell_orders>0)
{
info_time_frame_now[index] = work_tf_sell;
}
else
{
info_time_frame_now[index] = work_tf_buy;
}
double new_lot;
if(decision_can_open_new)
{
if(buy_orders==0 && signal_buy && can_open_new_buy && (sell_orders==0 || two_way))
{
if(limit_one_direction)
can_open_new_buy = false;
new_lot = lot_fix[index];
if(mm_type[index]==MM_TYPE_RISK)
{
new_lot = (AccountBalance() / lot_risk[index]) * 0.00001;
new_lot *= MathPow(10,dg);
new_lot = MathFloor(new_lot);
new_lot /= MathPow(10,dg);
new_lot = NormalizeDouble(new_lot,dg);
}
SendOrder(last_ticket,OP_BUY,new_lot,-1,0,0,1,take_profit[index],orders_comment+(string)(index+1)+"-1",magic[index]);
return;
}
if(sell_orders==0 && signal_sell && can_open_new_sell && (buy_orders==0 || two_way))
{
if(limit_one_direction)
can_open_new_sell = false;
new_lot = lot_fix[index];
if(mm_type[index]==MM_TYPE_RISK)
{
new_lot = (AccountBalance() / lot_risk[index]) * 0.00001;
new_lot *= MathPow(10,dg);
new_lot = MathFloor(new_lot);
new_lot /= MathPow(10,dg);
new_lot = NormalizeDouble(new_lot,dg);
}
SendOrder(last_ticket,OP_SELL,new_lot,-1,0,0,1,take_profit[index],orders_comment+(string)(index+1)+"-1",magic[index]);
return;
}
}
if(decision_can_open_new)
{
if(can_open_second_buy && can_outbid_buy && buy_orders>0 && buy_orders < max_orders[index] && NormalizeDouble((buy_price_last - Ask) - (step_start[index] * MathPow(step_coefficient[index],buy_orders-1))*Pp,_Digits) >= 0.0)
{
SendOrder(last_ticket,OP_BUY,NormalizeDouble(buy_lot_first * MathPow(lot_coefficient[index],buy_orders),dg),-1,0,0,0,0,orders_comment+(string)(index+1)+"-"+(string)(buy_orders+1),magic[index]);
}
if(can_open_second_sell && can_outbid_sell && sell_orders>0 && sell_orders < max_orders[index] && NormalizeDouble((Bid - sell_price_last) - (step_start[index] * MathPow(step_coefficient[index],sell_orders-1))*Pp,_Digits) >= 0.0)
{
SendOrder(last_ticket,OP_SELL,NormalizeDouble(sell_lot_first * MathPow(lot_coefficient[index],sell_orders),dg),-1,0,0,0,0,orders_comment+(string)(index+1)+"-"+(string)(sell_orders+1),magic[index]);
}
}
double set_tp = 0;
if(buy_orders>0)
{
set_tp = buy_price_sum + take_profit[index]*Pp;
last_ticket = -1;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=_Symbol)
continue;
if(OrderMagicNumber()!=magic[index])
continue;
if(last_ticket == OrderTicket())
continue;
last_ticket = OrderTicket();
if(OrderType()!=OP_BUY)
continue;
if(NormalizeDouble(OrderTakeProfit(),_Digits)!=NormalizeDouble(set_tp,_Digits))
ModifyOrder(OrderTicket(),-1,0,0,0,set_tp);
}
}
if(sell_orders>0)
{
set_tp = sell_price_sum - take_profit[index]*Pp;
last_ticket = -1;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=_Symbol)
continue;
if(OrderMagicNumber()!=magic[index])
continue;
if(last_ticket == OrderTicket())
continue;
last_ticket = OrderTicket();
if(OrderType()!=OP_SELL)
continue;
if(NormalizeDouble(OrderTakeProfit(),_Digits)!=NormalizeDouble(set_tp,_Digits))
{
ModifyOrder(OrderTicket(),-1,0,0,0,set_tp);
}
}
}
if(trail_stop[index]>0)
{
if(buy_orders>0)
{
if(!IsOptimization() && ObjectFind(0,"atp_trall_buy_"+(string)index)>=0)
trail_buy_price[index] = ObjectGetDouble(0,"atp_trall_buy_"+(string)index,OBJPROP_PRICE,0);
if(NormalizeDouble((Bid - buy_price_sum) - trail_start[index]*Pp,_Digits) >=0.0 &&
NormalizeDouble((Bid - trail_buy_price[index]) - trail_stop[index]*Pp,_Digits) > 0.0)
{
trail_buy_price[index] = Bid - trail_stop[index]*Pp;
create_hline("atp_trall_buy_"+(string)index,trail_buy_price[index],STYLE_DOT,1,clrDeepSkyBlue);
}
if(NormalizeDouble(trail_buy_price[index] - Bid,_Digits) >=0.0)
{
last_ticket = -1;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=_Symbol)
continue;
if(OrderMagicNumber()!=magic[index])
continue;
if(last_ticket == OrderTicket())
continue;
last_ticket = OrderTicket();
if(OrderType()!=OP_BUY)
continue;
CloseOrder(OrderTicket());
}
trail_buy_price[index] = 0.0;
ObjectDelete(0,"atp_trall_buy_"+(string)index);
}
}
else
{
trail_buy_price[index] = 0.0;
ObjectDelete(0,"atp_trall_buy_"+(string)index);
}
if(sell_orders>0)
{
if(!IsOptimization() && ObjectFind(0,"atp_trall_sell_"+(string)index)>=0)
trail_sell_price[index] = ObjectGetDouble(0,"atp_trall_sell_"+(string)index,OBJPROP_PRICE,0);
if(NormalizeDouble((sell_price_sum - Ask) - trail_start[index]*Pp,_Digits) >=0.0 &&
(NormalizeDouble((trail_sell_price[index] - Ask) - trail_stop[index]*Pp,_Digits) > 0.0 || trail_sell_price[index]==0))
{
trail_sell_price[index] = Ask + trail_stop[index]*Pp;
create_hline("atp_trall_sell_"+(string)index,trail_sell_price[index],STYLE_DOT,1,clrTomato);
}
if(NormalizeDouble(Ask - trail_sell_price[index],_Digits) >=0.0 && trail_sell_price[index]>0)
{
last_ticket = -1;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=_Symbol)
continue;
if(OrderMagicNumber()!=magic[index])
continue;
if(last_ticket == OrderTicket())
continue;
last_ticket = OrderTicket();
if(OrderType()!=OP_SELL)
continue;
CloseOrder(OrderTicket());
}
trail_sell_price[index] = 0.0;
ObjectDelete(0,"atp_trall_sell_"+(string)index);
}
}
else
{
trail_sell_price[index] = 0.0;
ObjectDelete(0,"atp_trall_sell_"+(string)index);
}
}
}
void apex_module()
{
if(CurrentCondition()!=1)
return;
if(Sum_lot>0)
sum=1; // Суммарный лот серии Buy больше , чем Sell
else
if(Sum_lot <0)
sum=-1; // Суммарный лот серии Sell больше, чем Buy
else
if(Sum_lot==0)
sum= 0; // Суммарный лот серии Sell равен Buy
int ProfPersent=0;
switch(Typeoverlap)
{
case 1:
{
if(totalord>=LeadingOrder)
{
if(total_plus_money>0 && total_minus_money<0 && Partoverlap)
{
if((loss_div_lot*minLot+total_plus_money)>cu*TV*minLot)
{
if(sum==-1)
overlap=2; // перекрытие для селл
if(sum==1)
overlap=1; // перекрытие для бай
}
}
if(total_plus_money>0 && cbs>0 && Cprofit[0]<0)
{
if(ArraySize(Lprofit)>1 && totalord>LeadingOrder)
ProfPersent=(int)(MultOver*ProfitPersent);
if((total_plus_money+Cprofit[0])/total_plus_money*100>ProfPersent)
{
if(sum==-1)
overlap=6; // перекрытие для селл
if(sum==1)
overlap=5; // перекрытие для бай
}
}
}
}
break;
case 2:
{
if((totalsell>=LeadingOrder || totalbuy>=LeadingOrder))
{
if(total_plus_money>0 && total_minus_money<0 && Partoverlap)
{
if((loss_div_lot*minLot+total_plus_money)>cu*TV*minLot)
{
if(totalsell>=LeadingOrder)
overlap=4;
if(totalbuy>=LeadingOrder)
overlap=3;
}
}
if(total_plus_money>0 && cbs>0 && Cprofit[0]<0)
{
if(ArraySize(Lprofit)>1 && (totalsell>LeadingOrder || totalbuy>LeadingOrder))
ProfPersent=(int)(MultOver*ProfitPersent);
if((total_plus_money+Cprofit[0])/total_plus_money*100>ProfPersent)
{
if(totalsell>=LeadingOrder)
overlap=8;
else
if(totalbuy>=LeadingOrder)
overlap=7;
}
}
}
}
break;
default:
break;
}
if(overlap>0)
{
TralOverlap();
return;
}
}
bool crushing_alg(double dd)
{
double to_open;
double to_close;
bool found_crashing = false;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=_Symbol)
continue;
if(OrderMagicNumber()==crushing_magic)
{
found_crashing = true;
break;
}
}
if(!found_crashing && crushing_drow_down>0)
{
if(dd<crushing_drow_down)
return(false);
double open_buy_lot = 0;
double open_sell_lot = 0;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=_Symbol)
continue;
if(OrderMagicNumber() != magic[0] && OrderMagicNumber() != magic[1] && OrderMagicNumber() != magic[2])
continue;
if(OrderType()==0)
open_buy_lot += OrderLots();
if(OrderType()==1)
open_sell_lot += OrderLots();
if(OrderTakeProfit()>0 || OrderStopLoss()>0)
ModifyOrder(OrderTicket(),-1,0,0,0,0);
}
if(open_buy_lot>open_sell_lot)
SendOrder(last_ticket,OP_SELL,open_buy_lot-open_sell_lot,-1,0,0,0,0,"",crushing_magic);
if(open_buy_lot<open_sell_lot)
SendOrder(last_ticket,OP_BUY,open_sell_lot-open_buy_lot,-1,0,0,0,0,"",crushing_magic);
crushing_start_time_buy = TimeCurrent()+1;
GlobalVariableSet("atu"+_Symbol+"lockB",crushing_start_time_buy);
crushing_start_time_sell = TimeCurrent()+1;
GlobalVariableSet("atu"+_Symbol+"lockS",crushing_start_time_sell);
return(true);
}
if(found_crashing)
{
double main_buy_price_last = 0;
int main_buy_ticket_last = 0;
double main_buy_profit_last = 0;
double main_buy_lot_last = 0;
double main_buy_lots = 0;
double main_sell_price_last = 0;
int main_sell_ticket_last = 0;
double main_sell_profit_last = 0;
double main_sell_lot_last = 0;
double main_sell_lots = 0;
int buy_orders = 0;
double buy_price_last = 0;
double buy_profit = 0;
double buy_price_sum = 0;
double buy_price_avg = 0;
double buy_lot_sum = 0;
double buy_lot_first = 0;
int buy_ticket_first = 0;
double buy_snc = 0;
int sell_orders = 0;
double sell_price_last = 0;
double sell_profit = 0;
double sell_price_sum = 0;
double sell_price_avg = 0;
double sell_lot_sum = 0;
double sell_lot_first = 0;
int sell_ticket_first = 0;
double sell_snc = 0;
last_ticket = -1;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=_Symbol)
continue;
if(OrderMagicNumber() != magic[0] && OrderMagicNumber() != magic[1] && OrderMagicNumber() != magic[2] && OrderMagicNumber()!=crushing_magic)
continue;
if(OrderTicket()==last_ticket)
continue;
last_ticket = OrderTicket();
if(OrderType()==OP_BUY && OrderOpenTime() < crushing_start_time_buy)
{
if(OrderOpenPrice() > main_buy_price_last)
{
main_buy_price_last = OrderOpenPrice();
main_buy_ticket_last = OrderTicket();
main_buy_profit_last = OrderProfit() + OrderSwap();
main_buy_lot_last = OrderLots();
}
main_buy_lots += OrderLots();
continue;
}
if(OrderType()==OP_SELL && OrderOpenTime() < crushing_start_time_sell)
{
if(OrderOpenPrice() < main_sell_price_last || main_sell_price_last==0)
{
main_sell_price_last = OrderOpenPrice();
main_sell_ticket_last = OrderTicket();
main_sell_profit_last = OrderProfit() + OrderSwap();
main_sell_lot_last = OrderLots();
}
main_sell_lots += OrderLots();
continue;
}
if(OrderType()==OP_BUY)
{
if(OrderOpenTime() < crushing_start_time_buy)
continue;
buy_orders ++;
if(OrderOpenPrice() < buy_price_last || buy_price_last==0)
buy_price_last = OrderOpenPrice();
buy_profit += OrderProfit() + OrderSwap() + OrderCommission();
buy_price_sum += OrderOpenPrice() * OrderLots();
buy_lot_sum += OrderLots();
buy_snc += OrderCommission() + OrderSwap();
if(OrderTicket()< buy_ticket_first || buy_ticket_first==0)
{
buy_ticket_first = OrderTicket();
buy_lot_first = OrderLots();
}
}
if(OrderType()==OP_SELL)
{
if(OrderOpenTime() < crushing_start_time_sell)
continue;
sell_orders ++;
if(OrderOpenPrice() > sell_price_last)
sell_price_last = OrderOpenPrice();
sell_profit += OrderProfit() + OrderSwap() + OrderCommission();
sell_price_sum += OrderOpenPrice() * OrderLots();
sell_lot_sum += OrderLots();
sell_snc += OrderCommission() + OrderSwap();
if(OrderTicket()< sell_ticket_first || sell_ticket_first==0)
{
sell_ticket_first = OrderTicket();
sell_lot_first = OrderLots();
}
}
}
if(buy_orders>0)
buy_price_avg = buy_price_sum / buy_lot_sum;
if(sell_orders>0)
sell_price_avg = sell_price_sum / sell_lot_sum;
if(buy_orders >= crushing_orders_max && crushing_orders_max>0 && buy_price_last - crushing_stop_loss*Pp >= Ask)
{
Print("b1");
if(SendOrder(last_ticket,OP_SELL,buy_lot_sum,-1,0,0,0,0,"",crushing_magic))
{
if(OrderSelect(last_ticket,SELECT_BY_TICKET))
crushing_start_time_buy = OrderOpenTime()+1;
GlobalVariableSet("atu"+_Symbol+"lockB",crushing_start_time_buy);
}
}
if(buy_orders==0)
{
Print("b2");
to_open = NormalizeDouble(main_buy_lots / crushing_lot_start_div,dg);
if(to_open < min_lot)
to_open = min_lot;
if(SendOrder(last_ticket,OP_BUY,to_open,-1,0,0,0,0,"",crushing_magic))
{
if(OrderSelect(last_ticket,SELECT_BY_TICKET))
crushing_start_time_buy = OrderOpenTime();
GlobalVariableSet("atu"+_Symbol+"lockB",crushing_start_time_buy);
}
}
if(buy_orders>0 && buy_orders<crushing_orders_max)
{
double buy_step = 0;
if(crushing_step_type == STEP_TYPE_FIX)
buy_step = crushing_step_fix*Pp;
if(crushing_step_type == STEP_TYPE_ATR)
buy_step = iATR(NULL,0,crushing_atr_period,1) * crushing_atr_coefficient;
if(buy_price_last - Ask >= buy_step)
{
Print("b3 "+DoubleToString(buy_price_last,_Digits)+" "+DoubleToString(buy_step,_Digits));
SendOrder(last_ticket,OP_BUY,NormalizeDouble(buy_lot_first * MathPow(crushing_lot_coefficient,buy_orders),dg),-1,0,0,0,0,"",crushing_magic);
}
}
if(buy_orders>0)
{
to_close = NormalizeDouble(buy_lot_first * crushing_lot_over_factor,dg);
if(to_close< min_lot)
to_close = min_lot;
buy_price_sum += main_buy_price_last * to_close;
buy_lot_sum += to_close;
buy_price_avg = buy_price_sum / buy_lot_sum;
if(Bid - buy_price_avg >= crushing_tp_over*Pp)
{
Print("b4");
CloseOrder(main_buy_ticket_last,to_close);
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=_Symbol)
continue;
if(OrderType()!=OP_BUY)
continue;
if(OrderMagicNumber() != crushing_magic)
continue;
if(OrderOpenTime() < crushing_start_time_buy)
continue;
CloseOrder(OrderTicket());
}
}
}
if(sell_orders >= crushing_orders_max && crushing_orders_max>0 && sell_price_last + crushing_stop_loss*Pp <= Bid)
{
Print("s1");
if(SendOrder(last_ticket,OP_BUY,sell_lot_sum,-1,0,0,0,0,"",crushing_magic))
{
if(OrderSelect(last_ticket,SELECT_BY_TICKET))
crushing_start_time_sell = OrderOpenTime()+1;
GlobalVariableSet("atu"+_Symbol+"lockS",crushing_start_time_sell);
}
}
if(sell_orders==0)
{
Print("s2");
to_open = NormalizeDouble(main_sell_lots / crushing_lot_start_div,dg);
if(to_open < min_lot)
to_open = min_lot;
if(SendOrder(last_ticket,OP_SELL,to_open,-1,0,0,0,0,"",crushing_magic))
{
if(OrderSelect(last_ticket,SELECT_BY_TICKET))
crushing_start_time_sell = OrderOpenTime();
GlobalVariableSet("atu"+_Symbol+"lockS",crushing_start_time_sell);
}
}
if(sell_orders>0 && sell_orders<crushing_orders_max)
{
double sell_step = 0;
if(crushing_step_type == STEP_TYPE_FIX)
sell_step = crushing_step_fix*Pp;
if(crushing_step_type == STEP_TYPE_ATR)
sell_step = iATR(NULL,0,crushing_atr_period,1) * crushing_atr_coefficient;
if(Bid - sell_price_last >= sell_step)
{
Print("s3 "+DoubleToString(sell_price_last,_Digits)+" "+DoubleToString(sell_step,_Digits));
SendOrder(last_ticket,OP_SELL,NormalizeDouble(sell_lot_first * MathPow(crushing_lot_coefficient,sell_orders),dg),-1,0,0,0,0,"",crushing_magic);
}
}
if(sell_orders>0)
{
to_close = NormalizeDouble(sell_lot_first * crushing_lot_over_factor,dg);
if(to_close< min_lot)
to_close = min_lot;
sell_price_sum += main_sell_price_last * to_close;
sell_lot_sum += to_close;
sell_price_avg = sell_price_sum / sell_lot_sum;
if(sell_price_avg - Ask >= crushing_tp_over*Pp)
{
Print("s4");
CloseOrder(main_sell_ticket_last,to_close);
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()!=_Symbol)
continue;
if(OrderType()!=OP_SELL)
continue;
if(OrderMagicNumber() != crushing_magic)
continue;
if(OrderOpenTime() < crushing_start_time_sell)
continue;
CloseOrder(OrderTicket());
}
}
}
return(true);
}
return(false);
}
int OnInit()
{
// код доступен только после оплаты
}
Comment("");
Work=true;
dig=Digits;
Pp=Point();
Pp2=Pp;
Mnoj2=1/Pp;
if(NormalizeDouble(Pp,dig)==NormalizeDouble(0.00001,dig) || NormalizeDouble(Pp,dig)==NormalizeDouble(0.001,dig))
Pp*=10;
Mnoj=1/Pp;
Symb=Symbol();
if(MarketInfo(Symb,MODE_LOTSTEP)<1.0)
dg=1;
if(MarketInfo(Symb,MODE_LOTSTEP)<0.1)
dg=2;
min_lot=NormalizeDouble(MarketInfo(Symb,MODE_MINLOT),dg);
max_lot=NormalizeDouble(MarketInfo(Symb,MODE_MAXLOT),dg);
if(IsTesting() && !IsVisualMode())
Test=true;
int k;
if(!Test)
{
if(CommentSize>0)
ArrayResize(CommentBox,CommentSize);
for(k=0; k<CommentSize; k++)
CommentBox[k]="";
}
if(account_number>0 && AccountNumber() != account_number)
{
Alert("Wrong license");
return(INIT_FAILED);
}
if(account_date>0 && TimeCurrent() > account_date)
{
Alert("Wrong license");
return(INIT_FAILED);
}
if(GlobalVariableCheck("atu"+_Symbol+"lockB"))
crushing_start_time_buy = (datetime)GlobalVariableGet("atu"+_Symbol+"lockB");
if(GlobalVariableCheck("atu"+_Symbol+"lockS"))
crushing_start_time_sell = (datetime)GlobalVariableGet("atu"+_Symbol+"lockS");
Typeoverlap = TypeOverlap;
Partoverlap = PartOverlap;
strategy[0] = strategy_1;
magic[0] = magic_1;
time_frame_level1[0] = time_frame_level1_1;
order_level1[0] = order_level1_1;
time_frame_level2[0] = time_frame_level2_1;
order_level2[0] = order_level1_1 + order_level2_1;
time_frame_level3[0] = time_frame_level3_1;
order_level3[0] = order_level1_1 + order_level2_1 + order_level3_1;
time_frame_level4[0] = time_frame_level4_1;
signal_type[0] = signal_type_1;
bars_time_frame[0] = bars_time_frame_1;
cci_time_frame[0] = cci_time_frame_1;
rsi_time_frame[0] = rsi_time_frame_1;
macd_time_frame[0] = macd_time_frame_1;
stochastic_time_frame[0] = stochastic_time_frame_1;
wpr_time_frame[0] = wpr_time_frame_1;
cci_level_up[0] = cci_level_up_1;
cci_level_down[0] = cci_level_down_1;
rsi_level_up[0] = rsi_level_up_1;
rsi_level_down[0] = rsi_level_down_1;
stoch_level_up[0] = stoch_level_up_1;
stoch_level_down[0] = stoch_level_down_1;
wpr_level_up[0] = wpr_level_up_1;
wpr_level_down[0] = wpr_level_down_1;
mm_type[0] = mm_type_1;
lot_fix[0] = lot_fix_1;
lot_risk[0] = lot_risk_1;
lot_coefficient[0] = lot_coefficient_1;
step_start[0] = step_start_1;
step_coefficient[0] = step_coefficient_1;
take_profit[0] = take_profit_1;
slippage[0] = slippage_1;
max_orders[0] = max_orders_1;
trail_start[0] = trail_start_1;
trail_stop[0] = trail_stop_1;
strategy[1] = strategy_2;
magic[1] = magic_2;
time_frame_level1[1] = time_frame_level1_2;
order_level1[1] = order_level1_2;
time_frame_level2[1] = time_frame_level2_2;
order_level2[1] = order_level1_2 + order_level2_2;
time_frame_level3[1] = time_frame_level3_2;
order_level3[1] = order_level1_2 + order_level2_1 + order_level3_2;
time_frame_level4[1] = time_frame_level4_2;
signal_type[1] = signal_type_2;
bars_time_frame[1] = bars_time_frame_2;
cci_time_frame[1] = cci_time_frame_2;
rsi_time_frame[1] = rsi_time_frame_2;
macd_time_frame[1] = macd_time_frame_2;
stochastic_time_frame[1] = stochastic_time_frame_2;
wpr_time_frame[1] = wpr_time_frame_2;
cci_level_up[1] = cci_level_up_2;
cci_level_down[1] = cci_level_down_2;
rsi_level_up[1] = rsi_level_up_2;
rsi_level_down[1] = rsi_level_down_2;
stoch_level_up[1] = stoch_level_up_2;
stoch_level_down[1] = stoch_level_down_2;
wpr_level_up[1] = wpr_level_up_2;
wpr_level_down[1] = wpr_level_down_2;
mm_type[1] = mm_type_2;
lot_fix[1] = lot_fix_2;
lot_risk[1] = lot_risk_2;
lot_coefficient[1] = lot_coefficient_2;
step_start[1] = step_start_2;
step_coefficient[1] = step_coefficient_2;
take_profit[1] = take_profit_2;
slippage[1] = slippage_2;
max_orders[1] = max_orders_2;
trail_start[1] = trail_start_2;
trail_stop[1] = trail_stop_2;
strategy[2] = strategy_3;
magic[2] = magic_3;
time_frame_level1[2] = time_frame_level1_3;
order_level1[2] = order_level1_3;
time_frame_level2[2] = time_frame_level2_3;
order_level2[2] = order_level1_3 + order_level2_3;
time_frame_level3[2] = time_frame_level3_3;
order_level3[2] = order_level1_3 + order_level2_3 + order_level3_3;
time_frame_level4[2] = time_frame_level4_3;
signal_type[2] = signal_type_3;
bars_time_frame[2] = bars_time_frame_3;
cci_time_frame[2] = cci_time_frame_3;
rsi_time_frame[2] = rsi_time_frame_3;
macd_time_frame[2] = macd_time_frame_3;
stochastic_time_frame[2] = stochastic_time_frame_3;
wПоказано первые 50% кода (символов: 80855)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.