← К каталогу
Исходный код · ID 3284

exp_icustom_v12_martingale_os_v1.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 2 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговgeniusv101-ecn.mq4MQL4 / MetaTrader 4 · 2 общих теговmarket crusher ea guidlines.txtMQL · 2 общих тегов2 to 1 strategy with signals.pineTradingView · 2 общих теговfresh algo signals & overlays v25_6334471093901859175.pineTradingView · 2 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данный код представляет собой торгового советника (эксперта) для платформы MetaTrader 4 на языке MQL4. Советник использует пользовательские индикаторы (через iCustom) для формирования сигналов на покупку и продажу, поддерживает несколько режимов анализа сигналов и фильтрацию по скользящим средним (MA2). Реализует открытие и закрытие рыночных ордеров, стоп-ордеров и лимитных ордеров, а также управление позициями через трейлинг-стопы, безубыток, виртуальные стопы и проверку прибыли/стоп-лосса.

Настройки программы

НастройкаОписание
??????? ????????? ????????: 0 - ????????? ??????? ?? ??????? ???????? ??????? ??? ??????? ?????? ? ? (TimeFrame) Таймфрейм — Таймфрейм для анализа сигналов; 0 означает текущий период графика.
????????? ?????? buy (Buy) Разрешить покупку — Включает/выключает возможность открытия покупочных позиций.
????????? ?????? sell (Sell) Разрешить продажу — Включает/выключает возможность открытия продажных позиций.
??????????? ??????, ????? ???? ????? ????? ??????? ?????? ???? ?????? ??? ?????? ?? ?????? ????????? (Order_Comment) Комментарий ордера — Текстовый комментарий, добавляемый к ордерам; к нему автоматически добавляются суффиксы BUY/SELL и тип ордера.
s0 Разделитель режима открытия — Текстовый разделитель для группы настроек режима открытия позиций.
1-????????? ?????? ???????, ???????? ?? ????????, 2-? ?????????? ??????? ? ?????????? ?????, ??????? (_O_Mode) Режим сигнала открытия — Режим формирования сигнала на открытие: 1 — по стрелкам индикатора, 2 — пересечение буферов, 3 — по уровню линии, 4 — по взаимному расположению линий, 5 — по направлению буфера.
??? Custom ?????????? (_O_iCustomName) Имя индикатора открытия — Имя пользовательского индикатора для получения сигналов открытия.
?????? ?????????? ????? ??????????? "/". ??? ?????????? ???? bool ?????? ???????? true ???????????? (_O_iCustomParam) Параметры индикатора открытия — Строка параметров индикатора, разделённых символом '/'.
?????? ?????? ?? ????????? ?? ??????? (_O_M1_iBuyBufIndex) Индекс буфера покупки M1 — Индекс буфера со стрелками покупки для режима 1.
?????? ?????? ?? ????????? ?? ??????? (_O_M1_iSellBufIndex) Индекс буфера продажи M1 — Индекс буфера со стрелками продажи для режима 1.
?????? ?????? ??????? ????? (_O_M2_iMainBufIndex) Индекс главного буфера M2 — Индекс главного буфера для режима 2.
?????? ?????? ?????????? ????? (_O_M2_iSignalBufIndex) Индекс сигнального буфера M2 — Индекс сигнального буфера для режима 2.
?????? ?????? ????? (_O_M3_iBufIndex) Индекс буфера M3 — Индекс буфера линии для режима 3.
??????? ??????? (??????????? ????? ?????) (_O_M3_BuyLevel) Уровень покупки M3 — Уровень линии для сигнала на покупку в режиме 3.
??????? ??????? (??????????? ?????? ????) (_O_M3_SellLevel) Уровень продажи M3 — Уровень линии для сигнала на продажу в режиме 3.
?????? ?????? ????? (_O_M4_iBufIndex) Индекс буфера M4 — Индекс буфера для режима 4.
?????? ?????? ????? ???????????? ??? ?????? ????? (_O_M5_iBuyBufIndex) Индекс буфера покупки M5 — Индекс буфера покупки для режима 5.
?????? ?????? ????? ???????????? ??? ?????? ???? (_O_M5_iSellBufIndex) Индекс буфера продажи M5 — Индекс буфера продажи для режима 5.
????? ??????????. 1 - ?? ?????????????? ?????, 0 - ?? ????????????? ???? (?? ?????????????). ????? ? (_O_iShift) Сдвиг сигнала открытия — Сдвиг номера бара для получения сигнала; 1 — текущий бар, 0 — предыдущий.
????????? ????????????? ?????????????? ?????????? 1. ??? ????????? ?????????????? ?????????? ?????? (_O_Opt_1_Use) Использовать доп. параметр 1 открытия — Включает использование дополнительного параметра 1 для индикатора открытия.
?????? ?????????????? ?????????? 1 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? (_O_Opt_1_Index) Индекс параметра 1 открытия — Индекс параметра в массиве iCustomParam для дополнительного параметра 1.
???????? ?????????????? ?????????? 1 (_O_Opt_1_Value) Значение параметра 1 открытия — Значение дополнительного параметра 1.
????????? ????????????? ?????????????? ?????????? 2 (_O_Opt_2_Use) Использовать доп. параметр 2 открытия — Включает использование дополнительного параметра 2 для индикатора открытия.
?????? ?????????????? ?????????? 2 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? (_O_Opt_2_Index) Индекс параметра 2 открытия — Индекс параметра в массиве iCustomParam для дополнительного параметра 2.
???????? ?????????????? ?????????? 2 (_O_Opt_2_Value) Значение параметра 2 открытия — Значение дополнительного параметра 2.
????????? ????????????? ?????????????? ?????????? 3 (_O_Opt_3_Use) Использовать доп. параметр 3 открытия — Включает использование дополнительного параметра 3 для индикатора открытия.
?????? ?????????????? ?????????? 3 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? (_O_Opt_3_Index) Индекс параметра 3 открытия — Индекс параметра в массиве iCustomParam для дополнительного параметра 3.
???????? ?????????????? ?????????? 3 (_O_Opt_3_Value) Значение параметра 3 открытия — Значение дополнительного параметра 3.
????????? ????????????? ?????????????? ?????????? 4 (_O_Opt_4_Use) Использовать доп. параметр 4 открытия — Включает использование дополнительного параметра 4 для индикатора открытия.
?????? ?????????????? ?????????? 4 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? (_O_Opt_4_Index) Индекс параметра 4 открытия — Индекс параметра в массиве iCustomParam для дополнительного параметра 4.
???????? ?????????????? ?????????? 4 (_O_Opt_4_Value) Значение параметра 4 открытия — Значение дополнительного параметра 4.
????????? ????????????? ?????????????? ?????????? 5 (_O_Opt_5_Use) Использовать доп. параметр 5 открытия — Включает использование дополнительного параметра 5 для индикатора открытия.
?????? ?????????????? ?????????? 5 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? (_O_Opt_5_Index) Индекс параметра 5 открытия — Индекс параметра в массиве iCustomParam для дополнительного параметра 5.
???????? ?????????????? ?????????? 5 (_O_Opt_5_Value) Значение параметра 5 открытия — Значение дополнительного параметра 5.
ma2 Разделитель MA2 — Текстовый разделитель для группы настроек фильтра скользящих средних.
???????? ???????? ???? ?? (MA2_ON) Включить MA2 фильтр — Включает/выключает фильтр скользящих средних для подтверждения сигналов.
??? ?? ??????? ??????????? ????????? (MA2_Shift) Сдвиг MA2 — Сдвиг индикатора скользящей средней.
??????. ?????? ???????? - ?????? ??????? (MA2_Symbol) Символ MA2 — Символ для расчёта скользящих средних; пустая строка означает текущий символ.
?????????: 0 - ????????? ??????? ?? ??????? ???????? ??????? ??? ??????? ?????? ? ???????. ??? ????? (MA2_TimeFrame) Таймфрейм MA2 — Таймфрейм для расчёта скользящих средних; 0 — текущий период.
?????? ??????? ?? (MA2_FastMAPeriod) Период быстрой MA2 — Период быстрой скользящей средней.
????? ??????? ??: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA (MA2_FastMAMethod) Метод быстрой MA2 — Метод расчёта быстрой MA: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA.
???? ??????? ??: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted (MA2_FastMAPrice) Цена быстрой MA2 — Тип цены для быстрой MA: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted.
???????? ??????? ?? (MA2_FastMAShift) Сдвиг быстрой MA2 — Горизонтальный сдвиг быстрой скользящей средней.
?????? ????????? ?? (MA2_SlowMAPeriod) Период медленной MA2 — Период медленной скользящей средней.
????? ????????? ??: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA (MA2_SlowMAMethod) Метод медленной MA2 — Метод расчёта медленной MA: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA.
???? ????????? ??: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted (MA2_SlowMAPrice) Цена медленной MA2 — Тип цены для медленной MA: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted.
???????? ????????? ?? (MA2_SlowMAShift) Сдвиг медленной MA2 — Горизонтальный сдвиг медленной скользящей средней.
s1 Разделитель режима закрытия — Текстовый разделитель для группы настроек режима закрытия позиций.
s2 Разделитель режима сигнала закрытия — Текстовый разделитель для группы настроек режима сигнала закрытия.
1-????????? ?????? ???????, ???????? ?? ????????, 2-? ?????????? ??????? ? ?????????? ?????, ??????? (_C_Mode) Режим сигнала закрытия — Режим формирования сигнала на закрытие: 1 — по стрелкам, 2 — пересечение, 3 — по уровню, 4 — по взаимному расположению, 5 — по направлению буфера.
?????????? ??? ????????? ? ?????????? ???????? (????? ? ??? ??????????). ??????? ?? ?????? ????????? (_C_UseOpenParam) Использовать параметры открытия для закрытия — При true используются параметры индикатора открытия для закрытия; при false — собственные параметры _C_.
??? Custom ?????????? (_C_iCustomName) Имя индикатора закрытия — Имя пользовательского индикатора для получения сигналов закрытия.
?????? ?????????? ????? ??????????? "/". ??? ?????????? ???? bool ?????? ???????? true ???????????? (_C_iCustomParam) Параметры индикатора закрытия — Строка параметров индикатора закрытия, разделённых символом '/'.
?????? ?????? ?? ????????? ?? ??????? (_C_M1_iCloseBuyBufIndex) Индекс буфера закрытия покупки M1 — Индекс буфера закрытия покупки для режима 1.
?????? ?????? ?? ????????? ?? ??????? (_C_M1_iCloseSellBufIndex) Индекс буфера закрытия продажи M1 — Индекс буфера закрытия продажи для режима 1.
?????? ?????? ??????? ????? (_C_M2_iMainBufIndex) Индекс главного буфера закрытия M2 — Индекс главного буфера для режима закрытия 2.
?????? ?????? ?????????? ????? (_C_M2_iSignalBufIndex) Индекс сигнального буфера закрытия M2 — Индекс сигнального буфера для режима закрытия 2.
?????? ?????? ????? (_C_M3_iBufIndex) Индекс буфера закрытия M3 — Индекс буфера линии для режима закрытия 3.
??????? ???????? ??????? (??????????? ?????? ????) (_C_M3_CloseBuyLevel) Уровень закрытия покупки M3 — Уровень линии для сигнала на закрытие покупки в режиме 3.
??????? ???????? ??????? (??????????? ????? ?????) (_C_M3_CloseSellLevel) Уровень закрытия продажи M3 — Уровень линии для сигнала на закрытие продажи в режиме 3.
?????? ?????? ????? (_C_M4_iBufIndex) Индекс буфера закрытия M4 — Индекс буфера для режима закрытия 4.
?????? ?????? ????? ???????????? ??? ?????? ????? (_C_M5_iBuyBufIndex) Индекс буфера закрытия покупки M5 — Индекс буфера закрытия покупки для режима 5.
?????? ?????? ????? ???????????? ??? ?????? ???? (_C_M5_iSellBufIndex) Индекс буфера закрытия продажи M5 — Индекс буфера закрытия продажи для режима 5.
????? ??????????. 1 - ?? ?????????????? ?????, 0 - ?? ????????????? ???? (?? ?????????????). ????? ? (_C_iShift) Сдвиг сигнала закрытия — Сдвиг номера бара для получения сигнала закрытия.
????????? ????????????? ?????????????? ?????????? 1. ??? ????????? ?????????????? ?????????? ?????? (_C_Opt_1_Use) Использовать доп. параметр 1 закрытия — Включает использование дополнительного параметра 1 для индикатора закрытия.
?????? ?????????????? ?????????? 1 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? (_C_Opt_1_Index) Индекс параметра 1 закрытия — Индекс параметра в массиве iCustomParam для дополнительного параметра 1 закрытия.
???????? ?????????????? ?????????? 1 (_C_Opt_1_Value) Значение параметра 1 закрытия — Значение дополнительного параметра 1 закрытия.
????????? ????????????? ?????????????? ?????????? 2 (_C_Opt_2_Use) Использовать доп. параметр 2 закрытия — Включает использование дополнительного параметра 2 для индикатора закрытия.
?????? ?????????????? ?????????? 2 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? (_C_Opt_2_Index) Индекс параметра 2 закрытия — Индекс параметра в массиве iCustomParam для дополнительного параметра 2 закрытия.
???????? ?????????????? ?????????? 2 (_C_Opt_2_Value) Значение параметра 2 закрытия — Значение дополнительного параметра 2 закрытия.
????????? ????????????? ?????????????? ?????????? 3 (_C_Opt_3_Use) Использовать доп. параметр 3 закрытия — Включает использование дополнительного параметра 3 для индикатора закрытия.
?????? ?????????????? ?????????? 3 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? (_C_Opt_3_Index) Индекс параметра 3 закрытия — Индекс параметра в массиве iCustomParam для дополнительного параметра 3 закрытия.
???????? ?????????????? ?????????? 3 (_C_Opt_3_Value) Значение параметра 3 закрытия — Значение дополнительного параметра 3 закрытия.
????????? ????????????? ?????????????? ?????????? 4 (_C_Opt_4_Use) Использовать доп. параметр 4 закрытия — Включает использование дополнительного параметра 4 для индикатора закрытия.
?????? ?????????????? ?????????? 4 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? (_C_Opt_4_Index) Индекс параметра 4 закрытия — Индекс параметра в массиве iCustomParam для дополнительного параметра 4 закрытия.
???????? ?????????????? ?????????? 4 (_C_Opt_4_Value) Значение параметра 4 закрытия — Значение дополнительного параметра 4 закрытия.
????????? ????????????? ?????????????? ?????????? 5 (_C_Opt_5_Use) Использовать доп. параметр 5 закрытия — Включает использование дополнительного параметра 5 для индикатора закрытия.
?????? ?????????????? ?????????? 5 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? (_C_Opt_5_Index) Индекс параметра 5 закрытия — Индекс параметра в массиве iCustomParam для дополнительного параметра 5 закрытия.
???????? ?????????????? ?????????? 5 (_C_Opt_5_Value) Значение параметра 5 закрытия — Значение дополнительного параметра 5 закрытия.
s22 Разделитель проверки прибыли — Текстовый разделитель для группы настроек проверки прибыли и стоп-лосса.
????????? ??????? ?????? ??? ????????, ?????? ? ??????, ??? MinimalProfit ???????? ?? ??????????? (CheckProfit) Проверка прибыли при закрытии — Проверять минимальную прибыль перед закрытием позиции.
??. ?????????? CheckProfit (MinimalProfit) Минимальная прибыль — Минимальная прибыль в пунктах для подтверждения закрытия при включённом CheckProfit.
???? ???????? ?????? ????????? ??????? ?? ?????? ??? MinimalSLProfit, ????? ?? ??????????? (CheckSL) Проверка стоп-лосса при закрытии — Проверять минимальный размер стоп-лосса перед закрытием позиции.
??. ?????????? CheckSL (MinimalSLProfit) Минимальная прибыль по стоп-лоссу — Минимальная прибыль стоп-лосса в пунктах для подтверждения закрытия при включённом CheckSL.
s3 Разделитель управления размером — Текстовый разделитель для группы настроек управления размером позиции.
????? ??: 0-Lots, 1-????? (Risk) ?? ????????? ???????, 2-????? (Risk) ?? ????????? ??????? ????????? (MMMethod) Метод управления размером — Метод расчёта размера лота: 0 — фиксированные лоты, 1 — риск от баланса, 2 — риск от средств с шагом, 3 — мартингейл.
??????????? ?????????? ???? ??? MMMethod = 3 (KotMMMetod3) Коэффициент мартингейла — Множитель увеличения лота при убыточной сделке для метода 3.
?????????? ????? ??? MMMethod=0 (Lots) Размер лота — Фиксированный размер лота при MMMethod=0.
????. ???????? ?? ??????? ??? FixedLot=false (Risk) Риск — Процент риска от средств для расчёта размера лота.
??? ??????? ???????????? ??? ??????? ??????? ????. 1 - Balance, 2 - Equity, 3 - FreeMargin (MeansType) Тип средств — Базовый тип средств для расчёта: 1 — Balance, 2 — Equity, 3 — FreeMargin.
??? ???????. ???????????? ??? MMMethod=2 (MeansStep) Шаг средств — Минимальный шаг средств для расчёта лота при MMMethod=2.
?????????? ?????? ????? ??????? ? ??????? ???? (LotsDigits) Знаков после запятой лота — Количество знаков после запятой для нормализации размера лота.
s4 Разделитель типа ордера — Текстовый разделитель для группы настроек типа ордера.
??? ???????: 0 - ????????, 1 - ????, 2 - ?????. ??? ????? 1 ? 2 ??. ?????????? (OrdType) Тип ордера — Тип ордера: 0 — рыночный, 1 — стоп, 2 — лимитный.
?????????? ?????????? ?? ??????????? ???? (Slippage) Проскальзывание — Максимальное допустимое проскальзывание в пунктах.
???????? (StopLoss) Стоп-лосс — Размер стоп-лосса в пунктах или процентах.
?????????? (TakeProfit) Тейк-профит — Размер тейк-профита в пунктах или процентах.
???./????. ???????????? ???? ????? (VirtualStops) Виртуальные стопы — Включает автоматическое закрытие позиций при достижении виртуального стоп-уровня.
???????? ???????????? ???? ????? ? ??????? (VirtualSL) Виртуальный стоп-лосс — Уровень виртуального стоп-лосса в пунктах от цены открытия.
??????? ????? ???????? ?????? ? ?????????? ????? ???????? ?????????? (SleepBars) Баров ожидания — Минимальное количество баров между последовательными сделками по одному сигналу.
Получить полный код

Поиск по коду файла

/*

   ????????? ??????????? "???????????" ???? ?????????????? ?????????????? ???????????.

   ??? ????? ? ????? experts/includes ?????? ?????????? ????? inc_CT1TF.mqh ? inc_CT2TF.mqh.

   ??????? ???????? ?? ?????? ?? ????????, ??? ???????? ?????????. ?? ???????? ????????? 
   ???? ?????? ?? ????? ????, ? ?????????????? ?? ???? ?????. ???????? ??????????? 
   ??????????? ??????. ???????? ????????? ??? ?? ?????? ?????? ?? ????? ????, ?? ??????, 
   ?? ?????? ???????? ????? ???? ??????. ?????????????? ???? ?????? ?? ???? ?????, ?? ???????
   ???????? ?????????? ???? ??????.

   ????????? ????????????? ??????????? ?????????? ? iOCT1 ? iOCT2.

   ???????? ????????? ?????? ???????:

      ==== ????????? ????????????? ???????? (?????) - 1 ====

      iOCT1_ON - ????? ?????????/?????????? ????????????? ??????????
      iOCT1_Symb - ??????. ?????? ???????? - ?????? ???????
      iOCT1_TimeFrame - ?????????. 0 - ????????? ???????.
      iOCT1_Invert - ????????? ???????? (???????? ??? ? ??? ???????)
      iOCT1_CustomName - ??? ????????????????? ??????????
      iOCT1_CustomParam - ?????? ?????????? ????? ??????????? "/". ??? ?????????? ?????????? ???????? true ???????????? 1, ?????? false - 0. ???? ? ?????????? ?????????? ???? ????????? ??????????, ??????? ???????? ?? ?????!!!
      iOCT1_ModeHelp - ????????? ?? ?????????? ??? ????????? iOCT1_Mode
      iOCT1_Mode - 1 - ????????? ?????? ???????, ???????????? ?? ??????????? ????????? ??????? (??????? ??? ?????????, ????? ?????? ????????? ???????? ? ???????),
                   2 - ? ?????????? ??????? ? ?????????? ?????, ???????????? ?? ????????? ????? ????? ???????????? ??????, 
                   3 - ???????????? ???? ????? ? ?? ????????? ???????????? ?????? (???? ?????? - ???, ???? ?????? - ????), 
                   4 - ?????? 
                   5 - ?????
                   6 - ????? ????? ????? ????      
      iOCT1_M1_BuyBufIndex - ?????? ?????? ?? ????????? ?? ???????
      iOCT1_M1_SellBufIndex - ?????? ?????? ?? ????????? ?? ???????
      iOCT1_M2_MainBufIndex - ?????? ?????? ??????? ?????
      iOCT1_M2_SignalBufIndex - ?????? ?????? ?????????? ?????
      iOCT1_M3_BufIndex - ?????? ?????? ?????
      iOCT1_M3_BuyLevel - ??????? ??????? (???? ?????? - ????????????? ???)
      iOCT1_M3_SellLevel - ??????? ??????? (???? ?????? - ????????????? ????)
      iOCT1_M4_BufIndex - ?????? ?????? ?????
      iOCT1_M5_BuyBufIndex - ?????? ?????? ????? ???????????? ??? ?????? ?????
      iOCT1_M5_SellBufIndex - ?????? ?????? ????? ???????????? ??? ?????? ????
      iOCT1_Shift - ????? ??????????. 1 - ?? ?????????????? ?????, 0 - ?? ????????????? ???? (?? ?????????????). ????? ????? ???? ?????? ???????? 2,3,4...
      iOCT1_Opt_1_Use - ????????? ????????????? ?????????????? ?????????? 1. ??? ????????? ?????????????? ?????????? ?????? ???????? ?? ?????? iCustomParam, ????????????? ?????????? Opt_X_Index ????? ?????????????? ???????? ?????????? Opt_X_Value
      iOCT1_Opt_1_Index - ?????? ?????????????? ?????????? 1 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
      iOCT1_Opt_1_Value - ???????? ?????????????? ?????????? 1
      iOCT1_Opt_2_Use - ????????? ????????????? ?????????????? ?????????? 2
      iOCT1_Opt_2_Index - ?????? ?????????????? ?????????? 2 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
      iOCT1_Opt_2_Value - ???????? ?????????????? ?????????? 2
      iOCT1_Opt_3_Use - ????????? ????????????? ?????????????? ?????????? 3
      iOCT1_Opt_3_Index - ?????? ?????????????? ?????????? 3 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
      iOCT1_Opt_3_Value - ???????? ?????????????? ?????????? 3
      iOCT1_Opt_4_Use - ????????? ????????????? ?????????????? ?????????? 4
      iOCT1_Opt_4_Index - ?????? ?????????????? ?????????? 4 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
      iOCT1_Opt_4_Value - ???????? ?????????????? ?????????? 4
      iOCT1_Opt_5_Use - ????????? ????????????? ?????????????? ?????????? 5
      iOCT1_Opt_5_Index - ?????? ?????????????? ?????????? 5 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
      iOCT1_Opt_5_Value - ???????? ?????????????? ?????????? 5

   * * *

   ? ???????? ???????? ???????? ???? ??. ???? ??? ??????? ????????? ?????? 1 ??? ????? ????.   

   ?????????:      

      ==== ??? ?? ====

      MA2_ON - ????????? ???????? ???? ??
      MA2_Shift - ??? ?? ??????? ??????????? ?????????
      MA2_Symbol - ??????. ?????? ????????  - ?????? ???????
      MA2_TimeFrame - ?????????: 0 - ????????? ??????? ?? ??????? ???????? ??????? ??? ??????? ?????? ? ???????. ??? ?????????? ???????? 1,5,15,30,60,240,1440...
      MA2_FastMAPeriod - ?????? ??????? ??
      MA2_FastMAMethod - ????? ??????? ??: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA
      MA2_FastMAPrice - ???? ??????? ??: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
      MA2_FastMAShift - ???????? ??????? ??
      MA2_SlowMAPeriod - ?????? ????????? ??
      MA2_SlowMAMethod - ????? ????????? ??: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA
      MA2_SlowMAPrice - ???? ????????? ??: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
      MA2_SlowMAShift - ???????? ????????? ??   

*/

extern int        TimeFrame                  = 0;        // ??????? ????????? ????????: 0 - ????????? ??????? ?? ??????? ???????? ??????? ??? ??????? ?????? ? ???????. ??? ?????????? ???????? 1,5,15,30,60,240,1440...
extern bool       Buy                        = true;     // ????????? ?????? buy
extern bool       Sell                       = true;     // ????????? ?????? sell  
extern string     Order_Comment              = "";       // ??????????? ??????, ????? ???? ????? ????? ??????? ?????? ???? ?????? ??? ?????? ?? ?????? ?????????????
extern string     s0                         = "==== ????????? ??? ???????? (Mode: 1 - ???????, 2 - ??????? ? ??????????, 3 - ????? ? ??????, 4 - ?????????, 5 - ????? ?????) ====";
extern int        _O_Mode                    = 1;        // 1-????????? ?????? ???????, ???????? ?? ????????, 2-? ?????????? ??????? ? ?????????? ?????, ???????? ??? ??????????? ?????, 3-???????????? ???? ????? ? ?? ??????????? ? ????????, 4-?????????, 5-????? ?????
extern string     _O_iCustomName             = "??????? ??? ??????????"; // ??? Custom ??????????
extern string     _O_iCustomParam            = "??????? ?????? ?????????? ????? ??????????? /"; // ?????? ?????????? ????? ??????????? "/". ??? ?????????? ???? bool ?????? ???????? true ???????????? 1, ?????? false - 0. ???? ? ?????????? ?????????? ???? ????????? ??????????, ??????? ???????? ?? ?????!!!
extern int        _O_M1_iBuyBufIndex         = 0;        // ?????? ?????? ?? ????????? ?? ???????
extern int        _O_M1_iSellBufIndex        = 1;        // ?????? ?????? ?? ????????? ?? ???????
extern int        _O_M2_iMainBufIndex        = 0;        // ?????? ?????? ??????? ?????
extern int        _O_M2_iSignalBufIndex      = 1;        // ?????? ?????? ?????????? ?????
extern int        _O_M3_iBufIndex            = 0;        // ?????? ?????? ?????
extern double     _O_M3_BuyLevel             = 20;       // ??????? ??????? (??????????? ????? ?????)
extern double     _O_M3_SellLevel            = 80;       // ??????? ??????? (??????????? ?????? ????)
extern int        _O_M4_iBufIndex            = 0;        // ?????? ?????? ?????
extern int        _O_M5_iBuyBufIndex         = 0;        // ?????? ?????? ????? ???????????? ??? ?????? ?????
extern int        _O_M5_iSellBufIndex        = 1;        // ?????? ?????? ????? ???????????? ??? ?????? ????
extern int        _O_iShift                  = 1;        // ????? ??????????. 1 - ?? ?????????????? ?????, 0 - ?? ????????????? ???? (?? ?????????????). ????? ????? ???? ?????? ???????? 2,3,4...
extern bool       _O_Opt_1_Use               = false;    // ????????? ????????????? ?????????????? ?????????? 1. ??? ????????? ?????????????? ?????????? ?????? ???????? ?? ?????? iCustomParam, ????????????? ?????????? Opt_X_Index ????? ?????????????? ???????? ?????????? Opt_X_Value
extern int        _O_Opt_1_Index             = 0;        // ?????? ?????????????? ?????????? 1 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _O_Opt_1_Value             = 0;        // ???????? ?????????????? ?????????? 1
extern bool       _O_Opt_2_Use               = false;    // ????????? ????????????? ?????????????? ?????????? 2
extern int        _O_Opt_2_Index             = 0;        // ?????? ?????????????? ?????????? 2 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _O_Opt_2_Value             = 0;        // ???????? ?????????????? ?????????? 2
extern bool       _O_Opt_3_Use               = false;    // ????????? ????????????? ?????????????? ?????????? 3
extern int        _O_Opt_3_Index             = 0;        // ?????? ?????????????? ?????????? 3 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _O_Opt_3_Value             = 0;        // ???????? ?????????????? ?????????? 3
extern bool       _O_Opt_4_Use               = false;    // ????????? ????????????? ?????????????? ?????????? 4
extern int        _O_Opt_4_Index             = 0;        // ?????? ?????????????? ?????????? 4 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _O_Opt_4_Value             = 0;        // ???????? ?????????????? ?????????? 4
extern bool       _O_Opt_5_Use               = false;    // ????????? ????????????? ?????????????? ?????????? 5
extern int        _O_Opt_5_Index             = 0;        // ?????? ?????????????? ?????????? 5 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _O_Opt_5_Value             = 0;        // ???????? ?????????????? ?????????? 5

#include <inc_CT1TF.mqh>
#include <inc_CT2TF.mqh>

extern string     ma2                        = "==== ??? ?? ====";
extern bool       MA2_ON                     =  false;    // ???????? ???????? ???? ??
extern int        MA2_Shift                  =  1;        // ??? ?? ??????? ??????????? ????????? 
extern string     MA2_Symbol                 =  "";       // ??????. ?????? ????????  - ?????? ???????  
extern int        MA2_TimeFrame              =  0;        // ?????????: 0 - ????????? ??????? ?? ??????? ???????? ??????? ??? ??????? ?????? ? ???????. ??? ?????????? ???????? 1,5,15,30,60,240,1440...
extern int        MA2_FastMAPeriod           =  1;        // ?????? ??????? ??
extern int        MA2_FastMAMethod           =  0;        // ????? ??????? ??: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA
extern int        MA2_FastMAPrice            =  0;        // ???? ??????? ??: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
extern int        MA2_FastMAShift            =  0;        // ???????? ??????? ??
extern int        MA2_SlowMAPeriod           =  21;       // ?????? ????????? ??
extern int        MA2_SlowMAMethod           =  0;        // ????? ????????? ??: 0-SMA, 1-EMA, 2-SMMA, 3-LWMA
extern int        MA2_SlowMAPrice            =  0;        // ???? ????????? ??: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
extern int        MA2_SlowMAShift            =  0;        // ???????? ????????? ??

extern string     s1                         = "==== == (_O?_Mode: 1 - ?? sl ? tp, 2 - ????????, 3 - _?_...) == ====";
extern int        _O?_Mode                   = 2;        // 1-???????? ?? ???????? ? ??????????, 2-????? ????????? ??????????? ??????????????? ?????? ?? ???????? ???????? ?????????? _O_, 3-???????????? ??????? ???????? ?????????? _C_
extern string     s2                         = "==== ????????? ??? ???????? (Mode: 1 - ???????, 2 - ??????? ? ??????????, 3 ????? ? ??????, 4 ?????????, 5 - ????? ?????) ====";
extern int        _C_Mode                    = 1;        // 1-????????? ?????? ???????, ???????? ?? ????????, 2-? ?????????? ??????? ? ?????????? ?????, ???????? ??? ??????????? ?????, 3-???????????? ???? ????? ? ?? ??????????? ? ????????, 4-?????????, 5-????? ?????
extern bool       _C_UseOpenParam            = false;    // ?????????? ??? ????????? ? ?????????? ???????? (????? ? ??? ??????????). ??????? ?? ?????? ????????????? ?????????? ?? ????????? ???????? ? ????????? ????????, ? ????? ??????????? ?????????? ?????????? _C_UseOpenParam=true ? ??????? ?????? ??????? _C_M1_..., _C_M2_..., _C_M3_... ? ?????????? ????? _C_Mode (???????? ?? ???????? ???????????? ???????, ? ?? ???????? ??????????? ?????)
extern string     _C_iCustomName             = "??????? ??? ??????????"; // ??? Custom ??????????
extern string     _C_iCustomParam            = "??????? ?????? ?????????? ????? ??????????? /"; // ?????? ?????????? ????? ??????????? "/". ??? ?????????? ???? bool ?????? ???????? true ???????????? 1, ?????? false - 0. ???? ? ?????????? ?????????? ??? ????????? ??????????, ??????? ???????? ?? ?????!!!
extern int        _C_M1_iCloseBuyBufIndex    = 0;        // ?????? ?????? ?? ????????? ?? ???????
extern int        _C_M1_iCloseSellBufIndex   = 1;        // ?????? ?????? ?? ????????? ?? ???????
extern int        _C_M2_iMainBufIndex        = 0;        // ?????? ?????? ??????? ?????
extern int        _C_M2_iSignalBufIndex      = 1;        // ?????? ?????? ?????????? ?????
extern int        _C_M3_iBufIndex            = 0;        // ?????? ?????? ?????
extern double     _C_M3_CloseBuyLevel        = 80;       // ??????? ???????? ??????? (??????????? ?????? ????)
extern double     _C_M3_CloseSellLevel       = 20;       // ??????? ???????? ??????? (??????????? ????? ?????)
extern int        _C_M4_iBufIndex            = 0;        // ?????? ?????? ?????
extern int        _C_M5_iBuyBufIndex         = 0;        // ?????? ?????? ????? ???????????? ??? ?????? ?????
extern int        _C_M5_iSellBufIndex        = 1;        // ?????? ?????? ????? ???????????? ??? ?????? ????
extern int        _C_iShift                  = 1;        // ????? ??????????. 1 - ?? ?????????????? ?????, 0 - ?? ????????????? ???? (?? ?????????????). ????? ????? ???? ?????? ???????? 2,3,4...
extern bool       _C_Opt_1_Use               = false;    // ????????? ????????????? ?????????????? ?????????? 1. ??? ????????? ?????????????? ?????????? ?????? ???????? ?? ?????? iCustomParam, ????????????? ?????????? Opt_X_Index ????? ?????????????? ???????? ?????????? Opt_X_Value
extern int        _C_Opt_1_Index             = 0;        // ?????? ?????????????? ?????????? 1 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _C_Opt_1_Value             = 0;        // ???????? ?????????????? ?????????? 1
extern bool       _C_Opt_2_Use               = false;    // ????????? ????????????? ?????????????? ?????????? 2
extern int        _C_Opt_2_Index             = 0;        // ?????? ?????????????? ?????????? 2 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _C_Opt_2_Value             = 0;        // ???????? ?????????????? ?????????? 2
extern bool       _C_Opt_3_Use               = false;    // ????????? ????????????? ?????????????? ?????????? 3
extern int        _C_Opt_3_Index             = 0;        // ?????? ?????????????? ?????????? 3 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _C_Opt_3_Value             = 0;        // ???????? ?????????????? ?????????? 3
extern bool       _C_Opt_4_Use               = false;    // ????????? ????????????? ?????????????? ?????????? 4
extern int        _C_Opt_4_Index             = 0;        // ?????? ?????????????? ?????????? 4 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _C_Opt_4_Value             = 0;        // ???????? ?????????????? ?????????? 4
extern bool       _C_Opt_5_Use               = false;    // ????????? ????????????? ?????????????? ?????????? 5
extern int        _C_Opt_5_Index             = 0;        // ?????? ?????????????? ?????????? 5 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _C_Opt_5_Value             = 0;        // ???????? ?????????????? ?????????? 5
extern string     s22                        = "==== ?????????????? ??????? ???????? ====";
extern bool       CheckProfit                = false;    // ????????? ??????? ?????? ??? ????????, ?????? ? ??????, ??? MinimalProfit ???????? ?? ???????????
extern int        MinimalProfit              = 0;        // ??. ?????????? CheckProfit
extern bool       CheckSL                    = false;    // ???? ???????? ?????? ????????? ??????? ?? ?????? ??? MinimalSLProfit, ????? ?? ???????????
extern int        MinimalSLProfit            = 0;        // ??. ?????????? CheckSL
extern string     s3                         = "=== ??????????? ??????? ???? ===";
extern int        MMMethod                   = 0;        // ????? ??: 0-Lots, 1-????? (Risk) ?? ????????? ???????, 2-????? (Risk) ?? ????????? ??????? ????????????? ?? ???????? MeansStep (???????? Risk=0.1, MeansStep=1000, ???? ??????? ?????? 2000, ??? ????? 0.1, ???? ??????? ????? 2000 ??? ????? - 0.2 ????, 3000 ? ????? - 0.3 ???? ? ?.?. )

extern double     KotMMMetod3                = 2.1;        //??????????? ?????????? ???? ??? MMMethod = 3
extern double     Lots                       = 0.1;      // ?????????? ????? ??? MMMethod=0
extern double     Risk                       = 0.1;      // ????. ???????? ?? ??????? ??? FixedLot=false
extern int        MeansType                  = 3;        // ??? ??????? ???????????? ??? ??????? ??????? ????. 1 - Balance, 2 - Equity, 3 - FreeMargin
extern double     MeansStep                  = 1000;     // ??? ???????. ???????????? ??? MMMethod=2
extern int        LotsDigits                 = 2;        // ?????????? ?????? ????? ??????? ? ??????? ????
extern string     s4                         = "=== ????? (OrdType: 0-Market, 1-Stop, 2-Limit) ===";
extern int        OrdType                    = 0;        // ??? ???????: 0 - ????????, 1 - ????, 2 - ?????. ??? ????? 1 ? 2 ??. ??????????
extern int        Slippage                   = 3;        // ?????????? ?????????? ?? ??????????? ????
extern double     StopLoss                   = 25;       // ????????
extern double     TakeProfit                 = 25;       // ??????????

extern bool       VirtualStops               = false;     // ???./????. ???????????? ???? ?????
extern int        VirtualSL                  = 2;        // ???????? ???????????? ???? ????? ? ???????

extern int        SleepBars                  = 1;        // ??????? ????? ???????? ?????? ? ?????????? ????? ???????? ??????????
extern bool       CancelSleeping             = true;     // ????????? ?????? ???????? ??? ???????? ?????? ???????????????? ???????????.
extern int        Magic_N                    = 96778;    // ?????
extern bool       MW_Mode                    = false;    // ????? ???????? ??? ????????/?????????? ? ????????? ????????/?????????? ????? ???????? ??????
extern string     s41                        = "---- ---- ?????????? ?????? (PendNewSigMode: 1-??? ?????????????, 2-??????? ?????????????, 3-????????????? ?? ?????? ???????) ---- ----";
extern double     PendLevel                  = 20;       // ??????? ????????? ??????????? ?????? ?? ?????? ???????? ????
extern int        PendPromPrice              = 1;        // ???? ????????? ??????????? ?????? ????????????? ?? ???? ???????? ????, ??? ???????? PendPromPrice=0 - ?? ???? ???????? (????????????? ??????? ???????? ????), 1 - ?? ???? ???????? ????
extern int        PendNewSigMode             = 2;        // ?????? ?????????? ?????????? ??????? ?? ?????? ????????? ???????: ??????. 0 - ???? ????? ??? ??? ??????????, ?? ??? ????????? ?????? ????????? ??????? ?? ??????????? ?? ????? ????????, 1 - ????????????? ?????? ?? ?????? ???????, 2 - ?? ?????? ??????? ????? ??????????????????? ?? "?????? ???????" - ??????? ?????? ????, ???????? ?????? ?????, ???????? ?????? ?????, ???????? ?????? ????
extern bool       PendPriceFollow            = false;    // ????? ?????????? ?? ?????. ????? ?????????????? ??? ?????? ????????? ???? ???????????? ?????????? PendPromPrice, ????? ??????????????????? ?????? ?? "?????? ????" (??. ???????? ?????????? PendNewSigMode)
extern bool       PendDelete                 = true;     // ???????? ??????????? ?????? ?? ???????????????? ????????? ???????. ??? ???????? false, ???????? ????????????? ????????????? ???? ??????? ??????? ???????????
extern int        PendExpiration             = 0;        // ???? ??????????? ?????? ? ??????? (??????????? ???????? 11 ?????)
extern string     s42                        = "---- ---- ???? ???????? ??????? ---- ----";
extern int        MaxOrdersCount             = 1;       // ?????????? ????? ?????????? ???????? ???????. -1 - ?? ??????????
extern int        MaxBuyCount                = 1;       // ?????????? ?????????? ???????? ??????? buy. -1 - ?? ?????????? 
extern int        MaxSellCount               = 1;       // ?????????? ?????????? ???????? ??????? sell. -1 - ?? ??????????
extern string     s5                         = "=== ???????? ===";
extern bool       TrailingStop_Use           = false;    // ????????? ??????? ?????????????
extern double     TrailingStopStart          = 50;       // ??????? ?????? ??? ??????? ???????? ???????? ????????????
extern double     TrailingStop               = 15;       // ??????? ?????????????
extern string     s6                         = "=== ????????? ===";
extern bool       BreakEven_Use              = false;    // ????????? ??????? ?????????
extern double     BreakEvenStart             = 30;       // ??????? ?????? ??? ??????? ??????????? ?????????
extern double     BreakEvenLevel             = 15;       // ??????? ?? ??????? ??????????????? ???????? ?? ???? ???????????? ?????????
extern string     s7                         = "=== ???????? ?? ?????????? ===";
extern bool       _TS_ON                     = false;    // ????????? ????????? ?? ??????????
extern string     _TS_iCustomName            = "??????? ??? ??????????"; // ??? Custom ??????????
extern string     _TS_iCustomParam           = "??????? ?????? ?????????? ????? ??????????? /"; // ?????? ?????????? ????? ??????????? "/". ??? ?????????? ???? bool ?????? ??????? true ???????????? 1, ?????? false - 0. ???? ? ?????????? ?????????? ??? ????????? ??????????, ??????? ???????? ?? ?????!!!
extern int        _TS_iForBuyBufIndex        = 0;        // ?????? ?????? ??? ??????? buy
extern int        _TS_iForSellBufIndex       = 1;        // ?????? ?????? ??? ??????? sell
extern int        _TS_iShift                 = 1;        // ????? ??????????. 1 - ?? ?????????????? ?????, 0 - ?? ????????????? ???? (?? ?????????????). ????? ????? ???? ?????? ???????? 2,3,4...
extern bool       _TS_Opt_1_Use              = false;    // ????????? ????????????? ?????????????? ?????????? 1. ??? ????????? ?????????????? ?????????? ?????? ???????? ?? ?????? iCustomParam, ????????????? ?????????? Opt_X_Index ????? ?????????????? ???????? ?????????? Opt_X_Value
extern int        _TS_Opt_1_Index            = 0;        // ?????? ?????????????? ?????????? 1 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _TS_Opt_1_Value            = 0;        // ???????? ?????????????? ?????????? 1
extern bool       _TS_Opt_2_Use              = false;    // ????????? ????????????? ?????????????? ?????????? 2
extern int        _TS_Opt_2_Index            = 0;        // ?????? ?????????????? ?????????? 2 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _TS_Opt_2_Value            = 0;        // ???????? ?????????????? ?????????? 2
extern bool       _TS_Opt_3_Use              = false;    // ????????? ????????????? ?????????????? ?????????? 3
extern int        _TS_Opt_3_Index            = 0;        // ?????? ?????????????? ?????????? 3 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _TS_Opt_3_Value            = 0;        // ???????? ?????????????? ?????????? 3
extern bool       _TS_Opt_4_Use              = false;    // ????????? ????????????? ?????????????? ?????????? 4
extern int        _TS_Opt_4_Index            = 0;        // ?????? ?????????????? ?????????? 4 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _TS_Opt_4_Value            = 0;        // ???????? ?????????????? ?????????? 4
extern bool       _TS_Opt_5_Use              = false;    // ????????? ????????????? ?????????????? ?????????? 5
extern int        _TS_Opt_5_Index            = 0;        // ?????? ?????????????? ?????????? 5 ? ??????? ?????????? (? ?????? iCustomParam). ?????? ?????????? ? ????.
extern double     _TS_Opt_5_Value            = 0;        // ???????? ?????????????? ?????????? 5
extern double     _TS_Indent                 = 0;        // ?????? ? ??????? ?? ???????? ??????????
extern double     _TS_TrailInProfit          = 0;        // ??????????? ??????????? ???????. ???????? ?????????????? ? ??? ??????, ???? ?? ????????? ?? ????? ??? _TS_TrailInProfit ??????? ??????? 
extern   string   s8                         =  "=== ????? ===";  
extern   bool     UseTime                    =  false;   // ????????? ???????? ???????
extern   int      StartHour                  =  10;      // ??? ?????? ???????
extern   int      StartMinute                =  0;       // ?????? ?????? ???????
extern   int      EndHour                    =  14;      // ??? ????????? ???????
extern   int      EndMinute                  =  0;       // ?????? ????????? ???????
extern   int      ExpirationTime             =  0;       // ?????????? ?????, ????? ??????? ?????? ??????????? ?????????? (0 - ??? ????????)
extern string     s9                         = "=== ?????? ===";
extern bool       Auto5Digits                = true;     // ?????????????? ????????? ?????????? ????????? ???????????? ? ??????? ?? 10 ?? 5-?? ? 3-?? ??????? ??????????. ?????????? ?????????: Slippage, StopLoss, TakeProfit, PendLevel, TrailingStopStart, TrailingStop, BreakEvenStart, BreakEvenLevel, _TS_Indent, _TS_TrailInProfit
extern bool       InPercents                 = false;    // ??? ????????? ????????? ???????????? ? ??????? (StopLoss, TakeProfit, PendLevel, TrailingStopStart, TrailingStop, BreakEvenStart, BreakEvenLevel, _TS_Indent, _TS_TrailInProfit) ???????? ? ????????? ?? ???????? ????. ? ???? ?????? Auto5Digits ?? ????????. ???????? Slippage ???????? ???????.

double _O_ParArr[];
double _C_ParArr[];
double _TS_ParArr[];

int LastBuyTime,LastSellTime;

string BuyComment;
string SellComment;
string BuyStopComment;
string SellStopComment;
string BuyLimitComment;
string SellLimitComment;

double x_StopLoss;
double x_TakeProfit;
double x_PendLevel;
double x_TrailingStopStart;
double x_TrailingStop;
double x_BreakEvenStart;
double x_BreakEvenLevel;
double x_TS_Indent;
double x_TS_TrailInProfit;

int init(){
      // код доступен только после оплаты
   }

void fConvertColorToDouble(string & aArr[]){
   for(int i=0;i<ArraySize(aArr);i++){
      aArr[i]=StringTrimLeft(StringTrimRight(aArr[i]));
         if(StringFind(aArr[i],"color:",0)==0){
            aArr[i]=StringSubstr(aArr[i],6,StringLen(aArr[i])-6);
               if(StringFind(aArr[i],",",0)!=-1){
                  string tmp[];
                  fStrSplit(aArr[i],tmp,",");
                  aArr[i]=fRGB(StrToInteger(tmp[0]),StrToInteger(tmp[1]),StrToInteger(tmp[2]));
               }
               else{
                  aArr[i]=fColFromString(aArr[i]);
               }
         }
         else if(StringFind(aArr[i],"date:",0)==0){
            aArr[i]=StringSubstr(aArr[i],5,StringLen(aArr[i])-5);
            aArr[i]=StrToTime(aArr[i]);
         }
   }
}

color fRGB(int aR,int aG, int aB){
   return(aR+256*aG+65536*aB);
}

color fColFromString(string aName){
   color tColor[]={  Black, DarkGreen, DarkSlateGray, Olive, Green, Teal, Navy, Purple, 
                     Maroon, Indigo, MidnightBlue, DarkBlue, DarkOliveGreen, SaddleBrown, 
                     ForestGreen, OliveDrab, SeaGreen, DarkGoldenrod, DarkSlateBlue, 
                     Sienna, MediumBlue, Brown, DarkTurquoise, DimGray, LightSeaGreen, 
                     DarkViolet, FireBrick, MediumVioletRed, MediumSeaGreen, Chocolate, 
                     Crimson, SteelBlue, Goldenrod, MediumSpringGreen, LawnGreen, 
                     CadetBlue, DarkOrchid, YellowGreen, LimeGreen, OrangeRed, DarkOrange, 
                     Orange, Gold, Yellow, Chartreuse, Lime, SpringGreen, Aqua, DeepSkyBlue, 
                     Blue, Magenta, Red, Gray, SlateGray, Peru, BlueViolet, LightSlateGray, 
                     DeepPink, MediumTurquoise, DodgerBlue, Turquoise, RoyalBlue, SlateBlue, 
                     DarkKhaki, IndianRed, MediumOrchid, GreenYellow, MediumAquamarine, 
                     DarkSeaGreen, Tomato, RosyBrown, Orchid, MediumPurple, PaleVioletRed, 
                     Coral, CornflowerBlue, DarkGray, SandyBrown, MediumSlateBlue, Tan, 
                     DarkSalmon, BurlyWood, HotPink, Salmon, Violet, LightCoral, SkyBlue, 
                     LightSalmon, Plum, Khaki, LightGreen, Aquamarine, Silver, LightSkyBlue, 
                     LightSteelBlue, LightBlue, PaleGreen, Thistle, PowderBlue, PaleGoldenrod, 
                     PaleTurquoise, LightGray, Wheat, NavajoWhite, Moccasin, LightPink, 
                     Gainsboro, PeachPuff, Pink, Bisque, LightGoldenrod, BlanchedAlmond, 
                     LemonChiffon, Beige, AntiqueWhite, PapayaWhip, Cornsilk, LightYellow, 
                     LightCyan, Linen, Lavender, MistyRose, OldLace, WhiteSmoke, Seashell, 
                     Ivory, Honeydew, AliceBlue, LavenderBlush, MintCream, Snow, White
                  };  
   string tName[]={   "Black", "DarkGreen", "DarkSlateGray", "Olive", "Green", "Teal", "Navy", "Purple", 
                     "Maroon", "Indigo", "MidnightBlue", "DarkBlue", "DarkOliveGreen", "SaddleBrown", 
                     "ForestGreen", "OliveDrab", "SeaGreen", "DarkGoldenrod", "DarkSlateBlue", 
                     "Sienna", "MediumBlue", "Brown", "DarkTurquoise", "DimGray", "LightSeaGreen", 
                     "DarkViolet", "FireBrick", "MediumVioletRed", "MediumSeaGreen", "Chocolate", 
                     "Crimson", "SteelBlue", "Goldenrod", "MediumSpringGreen", "LawnGreen", 
                     "CadetBlue", "DarkOrchid", "YellowGreen", "LimeGreen", "OrangeRed", "DarkOrange", 
                     "Orange", "Gold", "Yellow", "Chartreuse", "Lime", "SpringGreen", "Aqua", "DeepSkyBlue", 
                     "Blue", "Magenta", "Red", "Gray", "SlateGray", "Peru", "BlueViolet", "LightSlateGray", 
                     "DeepPink", "MediumTurquoise", "DodgerBlue", "Turquoise", "RoyalBlue", "SlateBlue", 
                     "DarkKhaki", "IndianRed", "MediumOrchid", "GreenYellow", "MediumAquamarine", 
                     "DarkSeaGreen", "Tomato", "RosyBrown", "Orchid", "MediumPurple", "PaleVioletRed", 
                     "Coral", "CornflowerBlue", "DarkGray", "SandyBrown", "MediumSlateBlue", "Tan", 
                     "DarkSalmon", "BurlyWood", "HotPink", "Salmon", "Violet", "LightCoral", "SkyBlue", 
                     "LightSalmon", "Plum", "Khaki", "LightGreen", "Aquamarine", "Silver", "LightSkyBlue", 
                     "LightSteelBlue", "LightBlue", "PaleGreen", "Thistle", "PowderBlue", "PaleGoldenrod", 
                     "PaleTurquoise", "LightGray", "Wheat", "NavajoWhite", "Moccasin", "LightPink", 
                     "Gainsboro", "PeachPuff", "Pink", "Bisque", "LightGoldenrod", "BlanchedAlmond", 
                     "LemonChiffon", "Beige", "AntiqueWhite", "PapayaWhip", "Cornsilk", "LightYellow", 
                     "LightCyan", "Linen", "Lavender", "MistyRose", "OldLace", "WhiteSmoke", "Seashell", 
                     "Ivory", "Honeydew", "AliceBlue", "LavenderBlush", "MintCream", "Snow", "White"
                  };
      aName=StringTrimLeft(StringTrimRight(aName));      
         for(int i=0;i<ArraySize(tName);i++){
            if(aName==tName[i])return(tColor[i]);
         }
      return(Red);                                     

}  

void fCopyStrToDouble(string aStr[],double & aDoub[]){
   ArrayResize(aDoub,ArraySize(aStr));
      for(int i=0;i<ArraySize(aStr);i++){
         aDoub[i]=StrToDouble(aStr[i]);
      }
}

int deinit()
  {

   return(0);
  }

int start(){
      // код доступен только после оплаты
   }

void fPendingPriceFollow(){
      for(int i=OrdersTotal()-1;i>=0;i--){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
               switch (OrderType()){
                  case OP_BUYSTOP:
                     double OpPrice=iMA(NULL,TimeFrame,1,0,0,PendPromPrice,0)+Point*PendLevel+(Ask-Bid);
                        if(ND(OpPrice)<ND(OrderOpenPrice())){
                           fModifyBuyStop(OrderTicket(),OpPrice,OrderExpiration());
                        }
                  break;
                  case OP_SELLSTOP:
                     OpPrice=iMA(NULL,TimeFrame,1,0,0,PendPromPrice,0)-Point*PendLevel;
                        if(ND(OpPrice)>ND(OrderOpenPrice())){
                           fModifySellStop(OrderTicket(),OpPrice,OrderExpiration());
                        }                     
                  break;
                  case OP_BUYLIMIT:
                     OpPrice=iMA(NULL,TimeFrame,1,0,0,PendPromPrice,0)-Point*PendLevel+(Ask-Bid);
                        if(ND(OpPrice)>ND(OrderOpenPrice())){
                           fModifyBuyLimit(OrderTicket(),OpPrice,OrderExpiration());
                        }                     
                  break;
                  case OP_SELLLIMIT:
                     OpPrice=iMA(NULL,TimeFrame,1,0,0,PendPromPrice,0)+Point*PendLevel;
                     OpPrice=iMA(NULL,TimeFrame,1,0,0,PendPromPrice,0)-Point*PendLevel+(Ask-Bid);
                        if(ND(OpPrice)<ND(OrderOpenPrice())){
                           fModifySellLimit(OrderTicket(),OpPrice,OrderExpiration());
                        }                       
                  break; 
               }            
            }
         }
      }   
}

double fGetLotsSimple(int aTradeType){

   double retlot;
   double Means;

      switch(MMMethod){
         case 0:
            retlot=Lots;
         break;         
         case 1:
               switch (MeansType){
                  case 1:
                     Means=AccountBalance();
                     break;
                  case 2:
                     Means=AccountEquity();	 
                     break;
                  case 3:
                     Means=AccountFreeMargin();
                     break;
                  default:
                     Means=AccountBalance();	       
               }
            retlot=AccountBalance()/1000*Risk;
         break;         
         case 2:
               switch (MeansType){
                  case 1:
                     Means=AccountBalance();
                     break;
                  case 2:
                     Means=AccountEquity();	 
                     break;
                  case 3:
                     Means=AccountFreeMargin();
                     break;
                  default:
                     Means=AccountBalance();	       
               }  
               if(Means<MeansStep){
                  Means=MeansStep;
               }
            retlot=(MeansStep*MathFloor(Means/MeansStep))/1000*Risk;     
         break;

         case 3:
               double k=1; // ??????????, ?? ???????? ??????? ???????, ????? ?? ??????????? ????????? ???
               if (OrdersHistoryTotal()==0) return(Lots); // ???? ??????? ??????, ??????? ????????? ?????
               for  (int i=OrdersHistoryTotal()-1;i>-1;i--) // ??????? ???? ???????? ??????? ? ????????? ???????
                  {
                  OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); // ???????? ?????
                  if(OrderCloseTime()!=0 && OrderProfit()>0) bool mart=true; // ???? ????????? ????? - ?????? ? ????????, ????????? ?????? ???????? ???? ?? ???????????, ?????? ????????? ? ????????? ????????...
                  if(OrderCloseTime()!=0 && OrderProfit()<0 && !mart)  k*=KotMMMetod3; // ???? ????????? ????? - ?????? ? ???????, ????????? ??????????? ???????????
                  }
               double MartinLot=k*Lots; // ???????????? ??? ?? ???????????, ?????? k ??????? ?? ?????????? ?????? ?????? ????????? ??????
               if(MartinLot>MarketInfo(Symbol(),MODE_MAXLOT)) {Alert("???????????? ??? ?????? ??????????? ???????????!"); return(0.0);} // ???? ???????????? ??? ?????? ???????????, ???????
               if(MartinLot*MarketInfo(Symbol(),MODE_MARGINREQUIRED)>AccountFreeMargin()) {Alert("?????? ????????? ??????? ?? ????????? ??????? ??????? ? ???????????? ?????!"); return(0.0);}// ???? ?????? ????????? ??????? ?? ????????? ??????? ??????? ? ???????????? ?????, ???????
            retlot=MartinLot;     
         break;

         default:  
            retlot=Lots;
      }   
   if(retlot<1.0/MathPow(10,LotsDigits))retlot=1.0/MathPow(10,LotsDigits) ;  
   retlot=NormalizeDouble(retlot,LotsDigits);

   if(AccountFreeMarginCheck(Symbol(),aTradeType,retlot)<=0){
      return(-1);
   }
   if(GetLastError()==134){
      return(-2);
   }   

   return(retlot);   
}

int fOrderOpenBuy(){
   RefreshRates();
   double lts=fGetLotsSimple(OP_BUY);
      if(lts>0){      
         if(!IsTradeContextBusy()){
            double slts=0;
            double tpts=0;         
               if(!MW_Mode){
                  if(StopLoss!=0)slts=ND(Ask-Point*StopLoss);
                  if(TakeProfit!=0)tpts=ND(Ask+Point*TakeProfit);
               }
            int irv=OrderSend(Symbol(),OP_BUY,lts,ND(Ask),Slippage,slts,tpts,BuyComment,Magic_N,0,CLR_NONE);
               if(irv>0){
                  LastBuyTime=iTime(NULL,TimeFrame,0);
                  if(CancelSleeping)LastSellTime=0;
                     if(MW_Mode){
                        fMW();
                     }                  
                  return(irv);
               }
               else{
                  Print ("Error open BUY. "+fMyErDesc(GetLastError())); 
                  return(-1);
               }
         }
         else{
            static int lt2=0;
               if(lt2!=iTime(NULL,TimeFrame,0)){
                  lt2=iTime(NULL,TimeFrame,0);
                  Print("Need open buy. Trade Context Busy");
               }            
            return(-2);
         }
      }
      else{
         static int lt3=0;
            if(lt3!=iTime(NULL,TimeFrame,0)){
               lt3=iTime(NULL,TimeFrame,0);
               if(lts==-1)Print("Need open buy. No money");
               if(lts==-2)Print("Need open buy. Wrong lots size");                  
            }
         return(-3);                  
      }
}  

int fOrderOpenSell(){
   RefreshRates();
   double lts=fGetLotsSimple(OP_SELL);
      if(lts>0){      
         if(!IsTradeContextBusy()){
            double slts=0;
            double tpts=0;         
               if(!MW_Mode){
                  if(StopLoss!=0)slts=ND(Bid+Point*StopLoss);
                  if(TakeProfit!=0)tpts=ND(Bid-Point*TakeProfit);
               }         
            int irv=OrderSend(Symbol(),OP_SELL,lts,ND(Bid),Slippage,slts,tpts,SellComment,Magic_N,0,CLR_NONE);
               if(irv>0){
                  LastSellTime=iTime(NULL,TimeFrame,0);
                  if(CancelSleeping)LastBuyTime=0;
                     if(MW_Mode){
                        fMW();
                     }
                  return(irv);
               }
               else{
                  Print ("Error open SELL. "+fMyErDesc(GetLastError())); 
                  return(-1);
               }
         }
         else{
            static int lt2=0;
               if(lt2!=iTime(NULL,TimeFrame,0)){
                  lt2=iTime(NULL,TimeFrame,0);
                  Print("Need open sell. Trade Context Busy");
               }            
            return(-2);
         }
      }
      else{
         static int lt3=0;
            if(lt3!=iTime(NULL,TimeFrame,0)){
               lt3=iTime(NULL,TimeFrame,0);
               if(lts==-1)Print("Need open sell. No money");
               if(lts==-2)Print("Need open sell. Wrong lots size");      
            }
         return(-3);                  
      }
}  

void fMW(){
      for(int i=0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
               RefreshRates();
                  if(OrderType()==OP_BUY || OrderType()==OP_SELL){
                     if((ND(OrderStopLoss())==0 && StopLoss!=0) || (ND(OrderTakeProfit())==0 && TakeProfit!=0)){
                        if(OrderType()==OP_BUY){                     
                           double slts=ND(OrderStopLoss());
                              if(slts==0){
                                 if(StopLoss==0)slts=0;else{
                                    slts=ND(OrderOpenPrice()-Point*StopLoss);
                                    double msl=ND(Bid-Point*MarketInfo(Symbol(),MODE_STOPLEVEL)-Point);
                                    slts=MathMin(slts,msl);
                                 }
                              }
                           double tpts=ND(OrderTakeProfit());
                              if(tpts==0){
                                 if(TakeProfit==0)tpts=0;else {
                                    tpts=ND(OrderOpenPrice()+Point*TakeProfit);
                                    double mtp=ND(Bid+Point*MarketInfo(Symbol(),MODE_STOPLEVEL)+Point);
                                    tpts=MathMax(tpts,mtp);
                                 }
                              }                           
                        }  
                        if(OrderType()==OP_SELL){                     
                           slts=ND(OrderStopLoss());
                              if(slts==0){
                                 if(StopLoss==0)slts=0;else {
                                    slts=ND(OrderOpenPrice()+Point*StopLoss);
                                    msl=ND(Ask+Point*MarketInfo(Symbol(),MODE_STOPLEVEL)+Point);
                                    slts=MathMax(slts,msl);
                                 }
                              }
                           tpts=ND(OrderTakeProfit());
                              if(tpts==0){
                                 if(TakeProfit==0)tpts=0;else {
                                    tpts=ND(OrderOpenPrice()-Point*TakeProfit);
                                    mtp=ND(Ask-Point*MarketInfo(Symbol(),MODE_STOPLEVEL)-Point);
                                    tpts=MathMin(tpts,mtp);
                                 }
                              }                           
                        }  
                        if(OrderStopLoss()!=slts || OrderTakeProfit()!=tpts){
                           bool brv=OrderModify(OrderTicket(),OrderOpenPrice(),slts,tpts,0,CLR_NONE);
                           int check=GetLastError();
                                    if(brv){
                                       Print("SL/TP ??? ?????? "+OrderTicket()+" ??????????");  
                                    }
                                    else{
                                       Print("?? ??????? ?????????? SL/TP ??? ?????? "+OrderTicket()+". "+fMyErDesc(check)); 
                                    }
                        }                        
                     }
                  }
            }
         }
      }   
}

string fMyErDesc(int aErrNum){
   string pref="Err Num: "+aErrNum+" - ";
   switch(aErrNum){
      case 0: return(pref+"NO ERROR");
      case 1: return(pref+"NO RESULT");                                 
      case 2: return(pref+"COMMON ERROR");                              
      case 3: return(pref+"INVALID TRADE PARAMETERS");                  
      case 4: return(pref+"SERVER BUSY");                               
      case 5: return(pref+"OLD VERSION");                               
      case 6: return(pref+"NO CONNECTION");                             
      case 7: return(pref+"NOT ENOUGH RIGHTS");                         
      case 8: return(pref+"TOO FREQUENT REQUESTS");                     
      case 9: return(pref+"MALFUNCTIONAL TRADE");                       
      case 64: return(pref+"ACCOUNT DISABLED");                         
      case 65: return(pref+"INVALID ACCOUNT");                          
      case 128: return(pref+"TRADE TIMEOUT");                           
      case 129: return(pref+"INVALID PRICE");                           
      case 130: return(pref+"INVALID STOPS");                           
      case 131: return(pref+"INVALID TRADE VOLUME");                    
      case 132: return(pref+"MARKET CLOSED");                           
      case 133: return(pref+"TRADE DISABLED");                          
      case 134: return(pref+"NOT ENOUGH MONEY");                        
      case 135: return(pref+"PRICE CHANGED");                           
      case 136: return(pref+"OFF QUOTES");                              
      case 137: return(pref+"BROKER BUSY");                             
      case 138: return(pref+"REQUOTE");                                 
      case 139: return(pref+"ORDER LOCKED");                            
      case 140: return(pref+"LONG POSITIONS ONLY ALLOWED");             
      case 141: return(pref+"TOO MANY REQUESTS");                       
      case 145: return(pref+"TRADE MODIFY DENIED");                     
      case 146: return(pref+"TRADE CONTEXT BUSY");                      
      case 147: return(pref+"TRADE EXPIRATION DENIED");                 
      case 148: return(pref+"TRADE TOO MANY ORDERS");                   

      case 4000: return(pref+"NO MQLERROR");                            
      case 4001: return(pref+"WRONG FUNCTION POINTER");                 
      case 4002: return(pref+"ARRAY INDEX OUT OF RANGE");               
      case 4003: return(pref+"NO MEMORY FOR FUNCTION CALL STACK");      
      case 4004: return(pref+"RECURSIVE STACK OVERFLOW");               
      case 4005: return(pref+"NOT ENOUGH STACK FOR PARAMETER");         
      case 4006: return(pref+"NO MEMORY FOR PARAMETER STRING");         
      case 4007: return(pref+"NO MEMORY FOR TEMP STRING");              
      case 4008: return(pref+"NOT INITIALIZED STRING");                 
      case 4009: return(pref+"NOT INITIALIZED ARRAYSTRING");            
      case 4010: return(pref+"NO MEMORY FOR ARRAYSTRING");              
      case 4011: return(pref+"TOO LONG STRING");                        
      case 4012: return(pref+"REMAINDER FROM ZERO DIVIDE");             
      case 4013: return(pref+"ZERO DIVIDE");                            
      case 4014: return(pref+"UNKNOWN COMMAND");                        
      case 4015: return(pref+"WRONG JUMP");                             
      case 4016: return(pref+"NOT INITIALIZED ARRAY");                  
      case 4017: return(pref+"DLL CALLS NOT ALLOWED");                  
      case 4018: return(pref+"CANNOT LOAD LIBRARY");                    
      case 4019: return(pref+"CANNOT CALL FUNCTION");                   
      case 4020: return(pref+"EXTERNAL EXPERT CALLS NOT ALLOWED");      
      case 4021: return(pref+"NOT ENOUGH MEMORY FOR RETURNED STRING");  
      case 4022: return(pref+"SYSTEM BUSY");                            
      case 4050: return(pref+"INVALID FUNCTION PARAMETERS COUNT");      
      case 4051: return(pref+"INVALID FUNCTION PARAMETER VALUE");       
      case 4052: return(pref+"STRING FUNCTION INTERNAL ERROR");         
      case 4053: return(pref+"SOME ARRAY ERROR");                       
      case 4054: return(pref+"INCORRECT SERIES ARRAY USING");           
      case 4055: return(pref+"CUSTOM INDICATOR ERROR");                 
      case 4056: return(pref+"INCOMPATIBLE ARRAYS");                    
      case 4057: return(pref+"GLOBAL VARIABLES PROCESSING ERROR");      
      case 4058: return(pref+"GLOBAL VARIABLE NOT FOUND");              
      case 4059: return(pref+"FUNCTION NOT ALLOWED IN TESTING MODE");   
      case 4060: return(pref+"FUNCTION NOT CONFIRMED");                 
      case 4061: return(pref+"SEND MAIL ERROR");                        
      case 4062: return(pref+"STRING PARAMETER EXPECTED");              
      case 4063: return(pref+"INTEGER PARAMETER EXPECTED");             
      case 4064: return(pref+"DOUBLE PARAMETER EXPECTED");              
      case 4065: return(pref+"ARRAY AS PARAMETER EXPECTED");            
      case 4066: return(pref+"HISTORY WILL UPDATED");                   
      case 4067: return(pref+"TRADE ERROR");                            
      case 4099: return(pref+"END OF FILE");                            
      case 4100: return(pref+"SOME FILE ERROR");                        
      case 4101: return(pref+"WRONG FILE NAME");                        
      case 4102: return(pref+"TOO MANY OPENED FILES");                  
      case 4103: return(pref+"CANNOT OPEN FILE");                       
      case 4104: return(pref+"INCOMPATIBLE ACCESS TO FILE");            
      case 4105: return(pref+"NO ORDER SELECTED");                      
      case 4106: return(pref+"UNKNOWN SYMBOL");                         
      case 4107: return(pref+"INVALID PRICE PARAM");                    
      case 4108: return(pref+"INVALID TICKET");                         
      case 4109: return(pref+"TRADE NOT ALLOWED");                      
      case 4110: return(pref+"LONGS  NOT ALLOWED");                     
      case 4111: return(pref+"SHORTS NOT ALLOWED");                     
      case 4200: return(pref+"OBJECT ALREADY EXISTS");                  
      case 4201: return(pref+"UNKNOWN OBJECT PROPERTY");                
      case 4202: return(pref+"OBJECT DOES NOT EXIST");                  
      case 4203: return(pref+"UNKNOWN OBJECT TYPE");                    
      case 4204: return(pref+"NO OBJECT NAME");                         
      case 4205: return(pref+"OBJECT COORDINATES ERROR");               
      case 4206: return(pref+"NO SPECIFIED SUBWINDOW");                 
      case 4207: return(pref+"SOME OBJECT ERROR");    
      default: return(pref+"WRONG ERR NUM");                
   }
}  

double ND(double v){return(NormalizeDouble(v,Digits));}

int fOrdersTotal(int & aBuyCount,int & aSellCount,int & aBuyStopCount,int & aSellStopCount,int & aBuyLimitCount,int & aSellLimitCount,int & aBuyStopTicket,int & aSellStopTicket,int & aBuyLimitTicket,int & aSellLimitTicket){
   aBuyCount=0;
   aSellCount=0;
   aBuyStopCount=0;
   aSellStopCount=0;
   aBuyLimitCount=0;
   aSellLimitCount=0;
   aBuyStopTicket=0;
   aSellStopTicket=0;
   aBuyLimitTicket=0;
   aSellLimitTicket=0;   
      for(int i=0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
               switch (OrderType()){
                  case OP_BUY:
                     aBuyCount++;
                     break;
                  case OP_SELL:
                     aSellCount++;
                     break;   
                  case OP_BUYSTOP:
                     aBuyStopCount++;
                     aBuyStopTicket=OrderTicket();
                     break;
                  case OP_SELLSTOP:
                     aSellStopCount++;
                     aSellStopTicket=OrderTicket();
                     break;                       
                  case OP_BUYLIMIT:
                     aBuyLimitCount++;
                     aBuyLimitTicket=OrderTicket();
                     break;
                  case OP_SELLLIMIT:
                     aSellLimitCount++;
                     aSellLimitTicket=OrderTicket();
                     break;                       

               }
            }
         }
         else{
            return(-1);
         }
      }
   return(aBuyCount+aSellCount);
}

int fOrderCloseMarket(bool aCloseBuy=true,bool aCloseSell=true){
   int tErr=0;
      for(int i=OrdersTotal()-1;i>=0;i--){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
               if(OrderType()==OP_BUY && aCloseBuy){
                  RefreshRates();               
                     if(CheckProfit){
                        if(ND(Bid-OrderOpenPrice())<ND(Point*MinimalProfit)){
                           continue;
                        }
                     }
                     if(CheckSL){
                        if(ND(OrderStopLoss())!=0){
                           if(ND(OrderStopLoss()-OrderOpenPrice())>=ND(Point*MinimalSLProfit)){
                              continue;
                           }
                        }
                     }
           

Показано первые 50% кода (символов: 92041)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
9 204,10₽ ≈ $112.49