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

GEPARD 8

gepard8_edu.mq4

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

GEPARD 8 — много валютный торговый советник для MetaTrader 4, разработанный Forex Team. Советник реализует несколько торговых стратегий: трендовую торговлю по индикаторам SAR, Stochastic, ADX, CCI, коррекционную торговлю при развороте движения, сеточную торговлю, арбитраж курсов и скальпинг на основании RSI и MA. Поддерживает работу с множеством валютных пар, металлов и акций одновременно.

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

НастройкаОписание
sNameEA Имя советника — Отображаемое имя экспертного советника в интерфейсе терминала.
sCopyright Копирайт — Информация об авторских правах и годах разработки.
sContact Контакт — Контактная информация разработчика.
sSetting Настройки — Разделитель или описание секции общих настроек.
sLicensing Лицензирование — Информация о лицензионных ограничениях.
sDescript10 Описание раздела торговых инструментов — Заголовок секции настроек торговых инструментов.
sDescript11 Описание режима торговли — Краткое описание режимов торговли: 0 — не торговать, 1 — торговать, 2 — только BUY, 3 — только SELL.
CountOfCycles Количество циклов — Количество символов, обрабатываемых за один тик (циклическая очередь).
sUseBuy Разрешение на покупку — Текстовое описание или условие разрешения открытия BUY-позиций.
sUseSell Разрешение на продажу — Текстовое описание или условие разрешения открытия SELL-позиций.
dUseOnlyPlusSwaps Учитывать только положительные свопы — Флаг 0 или 1: учитывать ли только позиции с положительным свопом.
sUseOnlyPlusSwaps Описание настройки свопов — Текстовое описание условия использования только положительных свопов.
dMaxSpreadForTradeSymbol Максимальный спред для торговли — Максимально допустимый спред в пунктах для открытия позиции.
sDescript20 Описание раздела общих настроек — Заголовок секции общих настроек советника.
dRisk Размер риска — Доля от свободного маржи, используемая для расчёта размера лота на сделку.
sRisk Описание риска — Текстовое описание параметра риска.
MaxOrdersCount Максимальное количество ордеров — Общее ограничение на количество открытых ордеров (0 — без ограничения).
dMaxSymbolOrdersCount Максимальное количество ордеров на символ — Ограничение на количество ордеров для одного торгового символа.
sMaxSymbolOrdersCount Описание максимума ордеров на символ — Текстовое описание параметра максимального количества ордеров на символ.
MaxOpenValPosition Максимальная стоимость открытой позиции — Максимальная допустимая открытая стоимость позиции в валюте счёта.
PartOfAnotherOrdersInMaxOVP Доля других ордеров в максимальной стоимости — Коэффициент учёта частично перекрывающихся ордеров при расчёте максимальной стоимости.
dUseOneWayRealOrdersB Односторонние реальные ордера BUY — Флаг 0 или 1: использовать ли одностороннюю логику для реальных BUY-ордеров.
sUseOneWayRealOrdersB Описание односторонних BUY — Текстовое описание настройки односторонних реальных ордеров BUY.
dUseOneWayRealOrdersS Односторонние реальные ордера SELL — Флаг 0 или 1: использовать ли одностороннюю логику для реальных SELL-ордеров.
sUseOneWayRealOrdersS Описание односторонних SELL — Текстовое описание настройки односторонних реальных ордеров SELL.
dMinDistanceRealOrdersB_PR Минимальное расстояние для BUY — Минимальное расстояние в процентах от цены для размещения реального BUY-ордера.
sMinDistanceRealOrdersB_PR Описание минимального расстояния BUY — Текстовое описание параметра минимального расстояния для BUY.
dMinDistanceRealOrdersS_PR Минимальное расстояние для SELL — Минимальное расстояние в процентах от цены для размещения реального SELL-ордера.
sMinDistanceRealOrdersS_PR Описание минимального расстояния SELL — Текстовое описание параметра минимального расстояния для SELL.
dCloseLockedOrdersOnAverage Закрывать заблокированные ордера по средней — Флаг 0 или 1: закрывать ли заблокированные позиции по средней цене.
sCloseLockedOrdersOnAverage Описание закрытия заблокированных — Текстовое описание настройки закрытия заблокированных ордеров по средней.
dCloseLockedMinDistance_PR Минимальное расстояние для закрытия заблокированных — Минимальное расстояние в процентах для срабатывания закрытия заблокированных позиций.
sDescript30 Описание раздела стоп-лосс и тейк-профит — Заголовок секции настроек фиксированного стоп-лосса, тейк-профита и трейлинга.
dFixedTakeProfit Фиксированный тейк-профит — Фиксированный уровень тейк-профита в пунктах (0 — отключён).
sFixedTakeProfit Описание фиксированного тейк-профита — Текстовое описание параметра фиксированного тейк-профита.
dFixedStopLoss Фиксированный стоп-лосс — Фиксированный уровень стоп-лосса в пунктах (0 — отключён).
sFixedStopLoss Описание фиксированного стоп-лосса — Текстовое описание параметра фиксированного стоп-лосса.
dTimeStopLoss_Minutes Временной стоп-лосс в минутах — Время в минутах после открытия, по истечении которого позиция закрывается по стоп-лоссу.
sTimeStopLoss_Minutes Описание временного стоп-лосса — Текстовое описание параметра временного стоп-лосса.
TimeSL_OnlyAfterDistance_PR Временной стоп только после расстояния — Процентное расстояние от цены открытия, после которого применяется временной стоп-лосс.
dProfitForBreakevenSL_PR Прибыль для перевода в безубыток — Процент прибыли, при достижении которой стоп-лосс переводится в безубыток.
dTrailingStop Трейлинг стоп в пунктах — Фиксированный трейлинг стоп в пунктах (0 — отключён).
sTrailingStop Описание трейлинг стопа — Текстовое описание параметра трейлинг стопа.
dStepTrailingStop Шаг трейлинг стопа в пунктах — Шаг сдвига трейлинг стопа в пунктах.
sStepTrailingStop Описание шага трейлинг стопа — Текстовое описание параметра шага трейлинг стопа.
dTrailingStop_PR Трейлинг стоп в процентах — Трейлинг стоп в процентах от текущей цены.
dStepTrailingStop_PR Шаг трейлинг стопа в процентах — Шаг сдвига трейлинг стопа в процентах от цены.
dDeleteTPWhenTrailing Удалять тейк-профит при трейлинге — Флаг 0 или 1: удалять ли тейк-профит при активации трейлинг стопа.
dLagForProfitSL_PR Лаг для стоп-лосса при фиксации прибыли — Процентный лаг для установки стоп-лосса при фиксации прибыли.
CloseOrdersOppositeTrend_OsMA Закрывать при противоположном тренде OsMA — Флаг 0 или 1: закрывать ли ордера при развороте тренда по OsMA.
CloseOrdersOppositeTrend_SAR Закрывать при противоположном тренде SAR — Флаг 0 или 1: закрывать ли ордера при развороте тренда по Parabolic SAR.
CloseOrdersOppositeTrend_ALL Закрывать при противоположном тренде всех индикаторов — Флаг 0 или 1: закрывать ли ордера при развороте по всем индикаторам одновременно.
CloseOOT_OnlyAfterMinutes Минимальное время для закрытия при противоположном тренде — Минимальное время в минутах после открытия, по истечении которого возможно закрытие при противоположном тренде.
CloseOOT_OnlyAfterDistance_PR Минимальное расстояние для закрытия при противоположном тренде — Минимальное процентное расстояние от цены открытия для закрытия при противоположном тренде.
BlockOpenWorseOrder_Minutes Блокировка открытия худшего ордера в минутах — Время в минутах, в течение которого блокируется открытие нового ордера хуже предыдущего.
dUseGridTracking Использовать сеточное отслеживание — Флаг 0 или 1: включить ли сеточное отслеживание позиций.
dGridRisk Риск сетки — Процент от свободной маржи, используемый для расчёта лота при сеточном отслеживании.
dGridStep_PR_B Шаг сетки BUY в процентах — Процентный шаг сетки для BUY-позиций.
dGridTakeProfit_PR_B Тейк-профит сетки BUY в процентах — Процентный тейк-профит для BUY-сетки.
dGridStopLoss_PR_B Стоп-лосс сетки BUY в процентах — Процентный стоп-лосс для BUY-сетки.
dGridStep_PR_S Шаг сетки SELL в процентах — Процентный шаг сетки для SELL-позиций.
dGridTakeProfit_PR_S Тейк-профит сетки SELL в процентах — Процентный тейк-профит для SELL-сетки.
dGridStopLoss_PR_S Стоп-лосс сетки SELL в процентах — Процентный стоп-лосс для SELL-сетки.
sDescript40 Описание раздела коррекции движения — Заголовок секции настроек открытия ордеров при коррекции движения.
sDescript41 Описание подраздела быстрой коррекции — Описание секции открытия ордеров при быстрой коррекции после консолидации.
CR_UseCorrection Использовать коррекцию — Флаг 0 или 1: включить ли торговлю при коррекции движения.
CR_WaitCorrectionAfterMove_PR Ждать коррекции после движения — Процентное расстояние движения, после которого ожидать коррекцию.
CR_WaitCorrectionAfterFlat_PR Ждать коррекции после флэта — Процентное расстояние флэта, после которого ожидать коррекцию.
CR_MaxDistanceFromBottom_PR Максимальное расстояние от дна — Максимальное процентное расстояние от нижней границы коррекционного движения.
CR_SizeCorrection_PR Размер коррекции — Процентный размер коррекционной позиции.
CR_StopLoss_PR Стоп-лосс коррекции — Процентный стоп-лосс для коррекционной позиции.
CR_StopLoss_UseSAR Использовать SAR для стоп-лосса коррекции — Флаг 0 или 1: использовать ли Parabolic SAR как дополнительный стоп-лосс при коррекции.
CR_UseTrailingStop Использовать трейлинг стоп при коррекции — Флаг 0 или 1: включить ли трейлинг стоп для коррекционных позиций.
CR_AnalizMove_Period Период анализа движения — Таймфрейм для анализа движения при коррекционной торговле.
CR_AnalizMove_CountBars Количество баров анализа движения — Количество баров для анализа движения на выбранном периоде.
CR_AnalizFlat_Period Период анализа флэта — Таймфрейм для анализа флэта при коррекционной торговле.
CR_AnalizFlat_CountBars Количество баров анализа флэта — Количество баров для анализа флэта на выбранном периоде.
sDescript42 Описание раздела уровней — Заголовок секции открытия ордеров на уровнях поддержки и сопротивления.
dUseTradeLevels Использовать уровни торговли — Флаг 0 или 1: включить ли торговлю на уровнях поддержки и сопротивления.
sUseTradeLevels Описание уровней торговли — Текстовое описание параметра использования уровней торговли.
dTL_PeriodOpen Период для открытия по уровням — Таймфрейм для определения уровней открытия.
sTL_PeriodOpen Описание периода открытия — Текстовое описание параметра периода открытия по уровням.
dTL_PeriodOpenCountBars Количество баров периода открытия — Количество баров для определения уровней открытия.
sTL_PeriodOpenCountBars Описание количества баров открытия — Текстовое описание параметра количества баров периода открытия.
dTL_FindLevelOpen_PR Расстояние для поиска уровня открытия — Процентное расстояние для определения уровня открытия ордера.
sTL_FindLevelOpen_PR Описание расстояния поиска уровня открытия — Текстовое описание параметра расстояния поиска уровня открытия.
dTL_MaxDistFromLevelOpen_PR Максимальное расстояние от уровня открытия — Максимальное процентное расстояние от найденного уровня открытия.
sTL_MaxDistFromLevelOpen_PR Описание максимального расстояния от уровня открытия — Текстовое описание параметра максимального расстояния от уровня открытия.
dTL_PeriodClose Период для закрытия по уровням — Таймфрейм для определения уровней закрытия.
sTL_PeriodClose Описание периода закрытия — Текстовое описание параметра периода закрытия по уровням.
dTL_PeriodCloseCountBars Количество баров периода закрытия — Количество баров для определения уровней закрытия.
sTL_PeriodCloseCountBars Описание количества баров закрытия — Текстовое описание параметра количества баров периода закрытия.
dTL_FindLevelClose_PR Расстояние для поиска уровня закрытия — Процентное расстояние для определения уровня закрытия ордера.
sTL_FindLevelClose_PR Описание расстояния поиска уровня закрытия — Текстовое описание параметра расстояния поиска уровня закрытия.
dTL_MaxDistFromLevelClose_PR Максимальное расстояние от уровня закрытия — Максимальное процентное расстояние от найденного уровня закрытия.
sTL_MaxDistFromLevelClose_PR Описание максимального расстояния от уровня закрытия — Текстовое описание параметра максимального расстояния от уровня закрытия.
dTL_StopLoss_PR Стоп-лосс по уровням — Процентный стоп-лосс, устанавливаемый при торговле по уровням.
sTL_StopLoss_PR Описание стоп-лосса по уровням — Текстовое описание параметра стоп-лосса по уровням.
sDescript50 Описание раздела осцилляторов — Заголовок секции настроек торговли в диапазоне (флэт).
sDescript51 Описание подраздела флэт-ордеров — Описание секции открытия ордеров при колебаниях в канале.
Получить полный код

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

#include <WinUser32.mqh>
/*#import "shell32.dll"
   int ShellExecuteA(int a0, string a1, string a2, string a3, string a4, int a5);
#import "advapi32.dll"
   int RegOpenKeyA(int a0, string a1, int& a2[]);
   int RegCloseKey(int a0);
   int RegQueryValueExA(int a0, string a1, int a2, int& a3[], string a4, int& a5[]);
#import "wininet.dll"
   int InternetGetCookieA(string a0, int a1, string a2, int& a3[]);
#import*/

extern string sNameEA = "_______  GEPARD 8 _______";
extern string sCopyright = "Copyright © 2008-2013, Forex Team";
extern string sContact = "e-mail: f*******4*@gmail.com";
extern string sSelling = "";
extern string sSetting = " ";
extern string sLicensing = " f*******4*@gmail.com";

extern string sDescript10 = "_______ 1. Trading Tools  _______";
extern string sDescript11 = "0 - not trade, 1 - trade (BUY&SELL), 2 - only BUY, 3 - only SELL";
extern string sSymbols1 = "AUDCAD: 1; AUDCHF: 1; AUDJPY: 1; AUDNZD: 1; AUDUSD: 1; CADCHF: 1; CADJPY: 1; CHFJPY: 1; EURAUD: 1; EURCAD: 1; EURCHF: 1; EURGBP: 1; EURJPY: 1; EURNZD: 1; EURUSD: 1";
extern string sSymbols2 = "GBPAUD: 1; GBPCAD: 1; GBPCHF: 1; GBPJPY: 1; GBPNZD: 1; GBPUSD: 1; NZDCAD: 1; NZDCHF: 1; NZDGBP: 1; NZDJPY: 1; NZDUSD: 1; USDCAD: 1; USDCHF: 1; USDJPY: 1";
extern string sSymbols3 = "#AA: 0; #AIG: 0; #AXP:0; #BA: 0; #BAC:0; #CAT: 0; #CSCO: 0; #CVX: 0; #DD: 0; #DIS: 0; #EBAY: 0; #FCX: 0; #FDX:0; #GE: 0; #GS: 0; #HAL: 0; #HD:0; #HON:0; #HPQ: 0; #IBM:0; #INTC: 0; #IP: 0";
extern string sSymbols4 = "#JNJ: 0; #JPM: 0; #KO:0; #KFT: 0; #MCD: 0; #MMM: 0; #MO: 0; #MRK: 0; #MSFT: 0; #ORCL: 0; #PEP: 0; #PFE: 0; #PG: 0; #T: 0; #TRV: 0; #UPS:0; #UTX: 0; #V: 0; #VZ: 0; #WFC: 0; #WMT: 0; #XOM:0";
extern string sSymbols5 = "XAUUSD: 0; GOLD: 1; XAGUSD: 0; SILVER: 1; #DIA: 0; #FAS: 0; #FXI:0; #GLD: 0; #QQQ:0; #SDS:0; #SMH: 0; #SPY: 0; #SSO: 0; #TLT:0; #XLI: 0";
extern int CountOfCycles = 5;
extern string sUseBuy = "";
extern string sUseSell = "";
extern int dUseOnlyPlusSwaps = 0;
extern string sUseOnlyPlusSwaps = "";
extern int dMaxSpreadForTradeSymbol = 100;//old 12
extern string sMaxSpreadForTradeSymbol = "XAUUSD: 100; GOLD: 100";
extern string sDescript20 = "_________ 2. General Settings _________";
extern double dRisk = 0.005;
extern string sRisk = "";
extern int MaxOrdersCount = 0;
extern int dMaxSymbolOrdersCount = 0;
extern string sMaxSymbolOrdersCount = "";
extern double MaxOpenValPosition = 7.0;
extern double PartOfAnotherOrdersInMaxOVP = 0.0;
extern int dUseOneWayRealOrdersB = 1;
extern string sUseOneWayRealOrdersB = "";
extern int dUseOneWayRealOrdersS = 1;
extern string sUseOneWayRealOrdersS = "";
extern double dMinDistanceRealOrdersB_PR = 4.0;
extern string sMinDistanceRealOrdersB_PR = "";
extern double dMinDistanceRealOrdersS_PR = 4.0;
extern string sMinDistanceRealOrdersS_PR = "";
extern int dCloseLockedOrdersOnAverage = 0;
extern string sCloseLockedOrdersOnAverage = "";
extern double dCloseLockedMinDistance_PR = 2.0;
extern string sDescript30 = "_______3. Generalized take profit, stop loss and trailing_______";
extern int dFixedTakeProfit = 0;
extern string sFixedTakeProfit = "";
extern int dFixedStopLoss = 0;
extern string sFixedStopLoss = "";
extern int dTimeStopLoss_Minutes = 0;
extern string sTimeStopLoss_Minutes = "";
extern double TimeSL_OnlyAfterDistance_PR = 0.0;
extern double dProfitForBreakevenSL_PR = 0.7;
extern int dTrailingStop = 0;
extern string sTrailingStop = "";
extern int dStepTrailingStop = 0;
extern string sStepTrailingStop = "";
extern double dTrailingStop_PR = 1.0;
extern double dStepTrailingStop_PR = 0.1;
extern int dDeleteTPWhenTrailing = 1;
extern double dLagForProfitSL_PR = 0.15;
extern int CloseOrdersOppositeTrend_OsMA = 0;
extern int CloseOrdersOppositeTrend_SAR = 0;
extern int CloseOrdersOppositeTrend_ALL = 0;
extern int CloseOOT_OnlyAfterMinutes = 0;
extern double CloseOOT_OnlyAfterDistance_PR = 0.0;
extern int BlockOpenWorseOrder_Minutes = 720;
int Gi_unused_504 = 0;
int Gi_508 = 0;
int Gi_512 = 0;
string Gs_516 = "";
int Gi_524 = 0;
string Gs_528 = "";
extern int dUseGridTracking = 0;
extern double dGridRisk = 0.0;
extern double dGridStep_PR_B = 0.3;
extern double dGridTakeProfit_PR_B = 0.3;
extern double dGridStopLoss_PR_B = 0.0;
extern double dGridStep_PR_S = 0.3;
extern double dGridTakeProfit_PR_S = 0.3;
extern double dGridStopLoss_PR_S = 0.0;
int Gi_596 = 0;
string Gs_600 = "";
int Gi_608 = 17;
string Gs_612 = "";
int Gi_620 = 17;
string Gs_624 = "";
int Gi_632 = 83;
string Gs_636 = "";
int Gi_644 = 83;
string Gs_648 = "";
int Gi_656 = 0;
string Gs_660 = "";
int Gi_668 = 0;
string Gs_672 = "";
int Gi_680 = 0;
string Gs_684 = "";
int Gi_692 = 0;
string Gs_696 = "";
int Gi_704 = 0;
string Gs_708 = "";
int Gi_716 = 0;
string Gs_720 = "";
extern string sDescript40 = "_______ 4. Opening orders for correction of motion _______";
extern string sDescript41 = "4.1. Opening Orders for fast motion correction after consolidation";
extern int CR_UseCorrection = 1;
extern double CR_WaitCorrectionAfterMove_PR = 1.2;
extern double CR_WaitCorrectionAfterFlat_PR = 0.2;
extern double CR_MaxDistanceFromBottom_PR = 0.1;
extern double CR_SizeCorrection_PR = 0.4;
extern double CR_StopLoss_PR = 0.0;
extern int CR_StopLoss_UseSAR = 0;
extern int CR_UseTrailingStop = 1;
extern int CR_AnalizMove_Period = 5;
extern int CR_AnalizMove_CountBars = 6;
extern int CR_AnalizFlat_Period = 2;
extern int CR_AnalizFlat_CountBars = 2;
extern string sDescript42 = "4.2. Opening Orders on levels of support / resistance";
extern int dUseTradeLevels = 1;
extern string sUseTradeLevels = "";
extern int dTL_PeriodOpen = 6;
extern string sTL_PeriodOpen = "";
extern int dTL_PeriodOpenCountBars = 70;
extern string sTL_PeriodOpenCountBars = "";
extern double dTL_FindLevelOpen_PR = 0.7;
extern string sTL_FindLevelOpen_PR = "";
extern double dTL_MaxDistFromLevelOpen_PR = 0.07;
extern string sTL_MaxDistFromLevelOpen_PR = "";
extern int dTL_PeriodClose = 5;
extern string sTL_PeriodClose = "";
extern int dTL_PeriodCloseCountBars = 60;
extern string sTL_PeriodCloseCountBars = "";
extern double dTL_FindLevelClose_PR = 0.5;
extern string sTL_FindLevelClose_PR = "";
extern double dTL_MaxDistFromLevelClose_PR = 0.1;
extern string sTL_MaxDistFromLevelClose_PR = "";
extern double dTL_StopLoss_PR = 0.0;
extern string sTL_StopLoss_PR = "";
extern string sDescript50 = "_______ 5. Using oscillation in flat_______";
extern string sDescript51 = "5.1. Opening warrants flat of the channel";
extern int dUseFlatIndicator = 0;
extern string sUseFlatIndicator = "";
extern double diFL_MinWidthCanal_PR = 0.1;
extern string siFL_MinWidthCanal_PR = "";
extern double diFL_MaxWidthCanal_PR = 0.4;
extern string siFL_MaxWidthCanal_PR = "";
extern int diFL_MinExtremumsCount = 1;
extern string siFL_MinExtremumsCount = "";
extern int diFL_Period = 2;
extern string siFL_Period = "";
extern int diFL_CountBars = 8;
extern string siFL_CountBars = "";
extern int diFL_UseConditionTakeOver = 1;
extern int diFL_PeriodTakeOver = 4;
extern int diFL_CountBarsTakeOver = 2;
extern double diFL_StopLoss_PR = 0.0;
extern string siFL_StopLoss_PR = "";
extern int diFL_StopLoss_UseSAR = 0;
extern int FL_UseTrailingStop = 0;
extern double diFL_LotSizeMultiply = 1.0;
extern string siFL_LotSizeMultiply = "";
extern string sDescript52 = "5.2. Scalping on the RSI";
extern int dUseEA_SCL = 0;
extern int SERVER_GMT_OFFSET = 1;
extern int dSCL_UseTimeWork = 1;
extern int dSCL_StartWorkHour_GMT = 22;
extern int dSCL_StartWorkMinute = 0;
int Gi_1136;
extern int dSCL_EndWorkHour_GMT = 2;
extern int dSCL_EndWorkMinute = 0;
int Gi_1148;
extern int dSCL_MaxSpread = 50;//old 5
extern int diSCL_RSI1_TimeFrame = 2;
extern int diSCL_RSI1_Period = 6;
extern double diSCL_RSI1_Value = 30.0;
extern int diSCL_RSI2_TimeFrame = 0;
extern int diSCL_RSI2_Period = 20;
extern double diSCL_RSI2_Value = 36.0;
extern int diSCL_MA_TimeFrame = 2;
extern int diSCL_MA_Period = 8;
extern double diSCL_MinDistFromMA_PR = 0.03;
extern double diSCL_ShowTakeProfit_PR = 0.1;
extern double diSCL_ShowStopLoss_PR = 0.0;
extern double diSCL_RealTakeProfit_PR = 0.03;
extern double diSCL_RealStopLoss_PR = 0.0;
extern int diSCL_ReverseClose = 1;
extern int diSCL_RevCloseOnlyProfit = 1;
extern string sDescript60 = "_______ 6. The use of trend movements _______";
extern string sDescript61 = "6.1. Opening Orders Indicator Parabolic SAR";
extern int dUseTrendOrders_ParabolicSAR = 1;
extern int diSAR_RO_TimeFrame = 6;
extern double diSAR_RO_Step = 0.02;
extern double diSAR_RO_Maximum = 0.2;
extern string sDescript62 = "6.2. Opening Orders Indicator Stochastic";
extern int dUseOrders_Stochastic = 1;
extern int diStoch_RO_TimeFrame = 6;
extern int diStoch_RO_KPeriod = 5;
extern int diStoch_RO_DPeriod = 3;
extern int diStoch_RO_Slowing = 3;
extern int diStoch_RO_Method = 2;
extern int diStoch_RO_Price = 0;
extern double diStoch_RO_TakeProfit_PR = 1.0;
extern double diStoch_RO_StopLoss_PR = 0.0;
extern int diStoch_RO_ReverseClose = 0;
extern int diStoch_RO_RevCloseOnlyProfit = 1;
extern int diStoch_RO_UseAverageTP = 0;
extern string sDescript63 = "6.3. Opening Orders Indicator ADX";
extern int dUseTrendOrders_ADX = 1;
extern int diADX_RO_TimeFrame = 6;
extern int diADX_RO_Period = 14;
extern int diADX_RO_TypePrice = 6;
extern double diADX_RO_ValueToCloseOrders = 60.0;
extern double diADX_RO_ValueSignalTrend = 20.0;
extern double diADX_RO_ValueSignalEndTrend = 15.0;
extern double diADX_RO_TakeProfit_PR = 3.0;
extern double diADX_RO_StopLoss_PR = 0.0;
extern int diADX_RO_CloseOnlyProfit = 1;
extern int diADX_RO_UseAverageTP = 0;
extern string sDescript64 = "6.4. Opening Orders Indicator CCI";
extern int dUseOrders_CCI = 1;
extern int diCCI_RO_TimeFrame = 6;
extern int diCCI_RO_Period_Slow = 125;
extern int diCCI_RO_Period_Medium = 25;
extern int diCCI_RO_Period_Fast = 5;
extern int diCCI_RO_TypePrice = 0;
extern double diCCI_RO_TakeProfit_PR = 3.0;
extern double diCCI_RO_StopLoss_PR = 0.0;
extern int diCCI_RO_ReverseClose = 1;
extern int diCCI_RO_RevCloseOnlyProfit = 1;
extern string sDescript70 = "_______7. Arbitration - the use of market anomalies and inefficiencies  _______";
extern string sDescript71 = "7.1. Exchange rate arbitrage - the deviation of the currency pair of the estimated ";
extern int dUseArbitrage_ExchRate = 0;
extern int dArb_EXR_CountIterForRates = 10;
extern int dArb_EXR_TypeOfTakeProfit = 1;
extern int dArb_EXR_TimeSL_Minutes = 10;
extern string sDescript72 = "7.2. Closure of gap - trade at closing gap occurring at the opening of the new session";
extern int dUseCloseOpeningGAP = 1;
extern double diCOG_MinSizeGAP_PR = 0.2;
extern double diCOG_MaxSizeGAP_PR = 0.0;
extern double diCOG_TakeProfit_KF_GAP = 0.7;
extern double diCOG_StopLoss_KF_GAP = 0.0;
extern string sDescript80 = "_______ 8. Filters to open positions _______";
extern string sDescript81 = "8.1. Filter indicator acceleration Accelerator";
extern int dUseAcceleratorIndicator = 1;
extern string sUseAcceleratorIndicator = "";
extern int diAC_CountBars = 3;
extern string siAC_CountBars = "";
extern int diAC_CountTimeFrames = 2;
extern string siAC_CountTimeFrames = "";
extern int diAC_StartTimeFrame = 0;
extern string siAC_StartTimeFrame = "";
extern string sDescript82 = "8.2. Filter Indicator speed Speed";
extern int dUseSpeedIndicator = 1;
extern string sUseSpeedIndicator = "";
extern int diSP_CountBars = 2;
extern string siSP_CountBars = "";
extern int diSP_CountTimeFrames = 2;
extern string siSP_CountTimeFrames = "";
extern int diSP_StartTimeFrame = 1;
extern string siSP_StartTimeFrame = "";
int Gi_1672 = 0;
string Gs_1676 = "";
double Gd_1684 = 0.0005;
string Gs_1692 = "";
int Gi_1700 = 1;
string Gs_1704 = "";
int Gi_1712 = 35;
string Gs_1716 = "";
extern string sDescript83 = "8.3. Filter restrictive levels HighLowLimit";
extern int dCountHighLowLimits = 2;
extern string sCountHighLowLimits = "";
extern double diHL_LimitDistance1_PR = 2.0;
extern string siHL_LimitDistance1_PR = "";
extern int diHL_Period1 = 5;
extern string siHL_Period1 = "";
extern int diHL_CountBars1 = 6;
extern string siHL_CountBars1 = "";
extern double diHL_LimitDistance2_PR = 5.0;
extern string siHL_LimitDistance2_PR = "";
extern int diHL_Period2 = 7;
extern string siHL_Period2 = "";
extern int diHL_CountBars2 = 2;
extern string siHL_CountBars2 = "";
extern string sDescript84 = "8.4. Filter trend movements OsMA";
extern int dUseTrendFilterOsMA = 0;
extern int diOsMA_TimeFrame = 5;
extern int diOsMA_FastEMA = 12;
extern int diOsMA_SlowEMA = 26;
extern int diOsMA_SignalSMA = 9;
extern int diOsMA_TypePrice = 6;
extern string sDescript85 = "8.5. Filter trend movements Parabolic SAR";
extern int dUseTrendFilterSAR = 0;
extern int diSAR_Filter_TimeFrame = 5;
extern double diSAR_Filter_Step = 0.02;
extern double diSAR_Filter_Maximum = 0.2;
extern string sDescript86 = "8.6. Filter trend movements ADX";
extern int dUseTrendFilterADX = 0;
extern int diADX_Filter_TimeFrame = 5;
extern int diADX_Filter_Period = 14;
extern int diADX_Filter_TypePrice = 6;
extern double diADX_Filter_ValueSignalTrend = 20.0;
extern string sDescript87 = "8.7. Filters highs / lows";
extern int dUseFilterMaxMin1 = 1;
extern int dMaxMin_Filter_TimeFrame1 = 7;
extern int dMaxMin_Filter_CountBars1 = 8;
extern double dMaxMin_LimitDistance_PR1 = 1.5;
extern int dUseFilterMaxMin2 = 1;
extern int dMaxMin_Filter_TimeFrame2 = 6;
extern int dMaxMin_Filter_CountBars2 = 3;
extern double dMaxMin_LimitDistance_PR2 = 0.5;
extern string sDescript88 = "8.8. Filter levels ban purchases / sales";
extern string sBuyDenyLevel1 = "";
extern string sBuyDenyLevel2 = "";
extern string sSellDenyLevel1 = "";
extern string sSellDenyLevel2 = "";
extern string sDescript90 = "_______ 9. Technical settings _______";
extern string sDescript91 = "TypeOfQuoteDigits - Type the bit quotation: 0 - auto, 1 - standard (4 digits), 2 - Enhanced (5 digits)";
extern int TypeOfQuoteDigits = 0;
extern string sDescript92 = "CustomNameForCurrencyPair - template name for the currency pair (AAA - the first currency pair, BBB - the second currency pairs)";
extern string CustomNameForCurrencyPair = "AAABBB";
extern double dMinLotSize = 0.01;
extern string sMinLotSize = "";
extern double dMaxLotSize = 0.06;//modifier ancien 0.0
extern string sMaxLotSize = "";
extern double dStepLotSize = 0.01;
extern string sStepLotSize = "";
extern int dSlipPage = 0;
extern string sSlipPage = "";
extern int Set_TP_SL_ByModifyOrder = 0;

extern int InverseTrading = 0;
extern int OwnMagicPrefix = 5732;
extern string PrefixOrderComment = "G8 ";
extern bool PrintInfoOpenValPosition = FALSE;
extern bool UsePreventCheckingOrder = TRUE;
extern bool CommentOrderOperations = TRUE;
extern bool PlaySoundWhenOpenOrder = FALSE;
extern string FileNameSoundOpenOrder = "alert.wav";
int Gi_2152 = 1;
string Gs_2156 = "";
int Gi_2164 = 0;
int Gi_2168 = 10;
string Gs_2172 = "";
int Gi_2180 = 50;
string Gs_2184 = "";
int Gi_2192 = 10;
int Gi_unused_2196 = 0;
int Gi_2200;
string Gsa_2204[];
double Gda_2208[];
double Gda_2212[];
double Gda_2216[];
double Gda_2220[];
int Gia_2224[];
int Gia_2228[];
int Gia_2232[];
double Gda_2236[];
double Gda_2240[];
double Gda_2244[];
int Gia_2248[];
int Gia_2252[];
int Gia_2256[];
int Gia_2260[];
int Gia_2264[];
int Gia_2268[];
int Gia_2272[];
int Gia_2276[];
int Gia_2280[];
int Gia_2284[];
int Gia_2288[];
int Gia_2292[];
int Gia_2296[];
int Gia_2300[];
int Gia_2304[];
int Gia_2308[];
int Gia_2312[];
int Gia_2316[];
int Gia_2320[];
double Gda_2324[];
double Gda_2328[];
int Gia_2332[];
int Gia_2336[];
int Gia_2340[];
int Gia_2344[];
int Gia_2348[];
int Gia_2352[];
int Gia_2356[];
int Gia_2360[];
int Gia_2364[];
int Gia_2368[];
int Gia_2372[];
int Gia_2376[];
double Gda_2380[];
double Gda_2384[];
double Gda_2388[];
int Gia_2392[];
double Gda_2396[];
int Gia_2400[];
int Gia_2404[];
double Gda_2408[];
int Gia_2412[];
int Gia_2416[];
int Gia_2420[];
int Gia_2424[];
int Gia_2428[];
double Gda_2432[];
double Gda_2436[];
int Gia_2440[];
int Gia_2444[];
double Gda_2448[];
double Gda_2452[];
double Gda_2456[];
int Gia_2460[];
double Gda_2464[];
double Gda_2468[];
int Gia_2472[];
int Gia_2476[];
int Gia_2480[];
double Gda_2484[];
double Gda_2488[];
double Gda_2492[];
double Gda_2496[];
double Gda_2500[];
int Gia_2504[];
int Gia_2508[];
int Gia_2512[];
int Gia_2516[];
int Gia_2520[];
string G_symbol_2524;
double Gd_2532;
double Gd_2540;
double Gd_2548;
double Gd_2556;
double G_spread_2564;
double G_stoplevel_2572;
double G_time_2580;
double Gd_2588;
int Gi_2596;
int Gi_2600;
int Gi_2604;
int Gi_2608;
int Gi_2612;
int Gi_2616;
int Gi_2620;
int Gi_2624;
int Gi_2628;
int Gi_2632;
int Gi_2636;
int Gi_2640;
int Gi_2644;
int Gi_2648;
int Gi_2652;
int Gi_2656;
int Gi_2660;
int Gi_2664;
int Gi_2668;
double Gd_2672;
double Gd_2680;
int Gi_2688;
int Gi_2692;
int Gi_2696;
int Gi_2700;
int Gi_2704;
int Gi_2708;
int Gi_2712;
int Gi_2716;
int Gi_2720;
int Gi_2724;
int Gi_2728;
double Gd_2732;
int Gi_2740;
int Gi_2744;
int Gi_2748;
double Gd_2752;
int Gi_2760;
int Gi_2764;
double Gd_2768;
int Gi_2776;
int Gi_2780;
int Gi_2784;
double Gd_2788;
double Gd_2796;
int Gi_2804;
int Gi_2808;
int Gi_2812;
double Gd_2816;
double Gd_2824;
int Gi_2832;
double Gd_2836;
double Gd_2844;
double Gd_2852;
int Gi_2860;
int Gi_2864;
int Gi_2868;
bool Gi_2872 = FALSE;
int G_day_2876 = 0;
int Gi_2880;
int G_count_2884 = 0;
int Gi_2888;
double Gd_unused_2892;
string G_acc_number_2900;
int Gi_2908;
bool Gi_2912;
bool Gi_2916;
int Gi_2920;
int Gi_2924;
double Gd_2932;
double Gd_2940;
double Gd_2948;
double Gd_2964;
double Gd_2972;
string Gs_2980;
double Gd_2988;
double Gd_2996;
double G_order_open_price_3004;
double Gd_3012;
double Gd_3020;
double Gd_3028;
int G_ticket_3036;
int Gi_3040;
int Gi_3044;
int G_str2int_3048;
bool Gi_3052;
bool Gi_3056;
bool Gi_3060;
string Gs_3064;
int Gi_3072;
int G_order_total_3076 = 0;
string Gsa_3080[];
double Gda_3084[];
double Gda_3088[];
double Gd_3092;
double Gda_3100[];
double Gda_3104[];
int Gia_3108[6];
double Gda_3112[6];
double Gda_3116[6];
double Gda_3120[6];
double Gd_3124;
double Gd_3132;
double Gda_3140[2];
double Gda_3144[2];
double Gd_3148;
double Gd_3156;
bool Gi_3164;
double G_ilow_3168;
double G_ihigh_3176;
double Gd_3184;
double Gd_3192;
double G_iosma_3200;
double Gd_3208;
double Gd_3216;
double G_istochastic_3224;
double G_istochastic_3232;
double G_istochastic_3240;
double G_istochastic_3248;
double G_istochastic_3256;
double G_istochastic_3264;
double Gd_3272;
double Gd_3280;
double Gda_3288[];
double Gda_3292[10][10];
int Gia_3296[10];
int Gia_3300[];
int Gia_3304[];
int Gi_3308 = 0;
int Gi_3312 = 1;
int Gi_3316 = 2;
int Gi_3320 = 3;
int Gi_3324 = 4;
int Gi_3328 = 5;
int Gia_3332[10] = {1, 5, 15, 30, 60, 240, 1440, 10080, 43200, 0};

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

bool f0_43() {
   bool Li_ret_0 = TRUE;
   if (OwnMagicPrefix < 0) OwnMagicPrefix = -OwnMagicPrefix;
   if (OwnMagicPrefix > 214747) {
      Li_ret_0 = FALSE;
      Print("The maximum possible value is OwnMagicPrefix is 214747. Change this value.");
      Print("Error: set the variable OwnMagicPrefix to a lower value!");
   }
   return (Li_ret_0);
}

int f0_27(int Ai_0) {
   Gi_2596 = Gia_2228[Ai_0];
   Gi_2600 = Gia_2232[Ai_0];
   if (Gi_2596 == 0 && Gi_2600 == 0) return (0);
   Gd_2532 = Gda_2208[Ai_0];
   Gd_2540 = Gda_2212[Ai_0];
   if (Gd_2532 == 0.0) return (0);
   Gd_2548 = MarketInfo(G_symbol_2524, MODE_BID);
   Gd_3272 = 0;
   Gd_2556 = MarketInfo(G_symbol_2524, MODE_ASK);
   G_time_2580 = MarketInfo(G_symbol_2524, MODE_TIME);
   G_spread_2564 = MarketInfo(G_symbol_2524, MODE_SPREAD);
   G_stoplevel_2572 = MarketInfo(G_symbol_2524, MODE_STOPLEVEL);
   Gi_2604 = Gia_2252[Ai_0];
   Gi_2608 = Gia_2256[Ai_0];
   Gi_2612 = Gia_2260[Ai_0];
   Gi_2616 = Gia_2264[Ai_0];
   Gi_2620 = Gia_2268[Ai_0];
   Gi_2624 = Gia_2272[Ai_0];
   if (Gi_2604 > 0) {
      Gi_2604 = MathMax(MarketInfo(G_symbol_2524, MODE_STOPLEVEL), Gi_2604);
      Gi_2612 = Gi_2604;
      Gi_2616 = Gi_2604;
   }
   if (Gi_2608 > 0) {
      Gi_2608 = MathMax(MarketInfo(G_symbol_2524, MODE_STOPLEVEL), Gi_2608);
      Gi_2620 = Gi_2608;
      Gi_2624 = Gi_2608;
   }
   Gi_2628 = Gia_2276[Ai_0];
   Gi_2632 = Gia_2280[Ai_0];
   Gi_2636 = Gia_2284[Ai_0];
   Gi_2640 = Gia_2288[Ai_0];
   Gi_2644 = Gia_2292[Ai_0];
   Gi_2648 = Gia_2300[Ai_0];
   Gi_2652 = Gia_2304[Ai_0];
   Gi_2656 = Gia_2308[Ai_0];
   Gi_2660 = Gia_2312[Ai_0];
   Gi_2664 = Gia_2316[Ai_0];
   Gi_2668 = Gia_2320[Ai_0];
   Gd_2672 = Gda_2324[Ai_0];
   Gd_2680 = Gda_2328[Ai_0];
   Gi_2688 = Gia_2336[Ai_0];
   Gi_2692 = Gia_2340[Ai_0];
   Gd_2588 = Gd_2844 + 56.0;
   Gi_2696 = Gia_2344[Ai_0];
   Gi_2700 = Gia_2348[Ai_0];
   Gi_2704 = Gia_2352[Ai_0];
   Gi_2708 = Gia_2356[Ai_0];
   Gi_2712 = Gia_2360[Ai_0];
   Gi_2716 = Gia_2364[Ai_0];
   Gi_2720 = Gia_2368[Ai_0];
   Gi_2724 = Gia_2372[Ai_0];
   Gi_2728 = Gia_2376[Ai_0];
   Gd_2732 = Gda_2380[Ai_0];
   Gi_2740 = Gda_2384[Ai_0];
   Gi_2744 = Gda_2388[Ai_0];
   Gi_2748 = Gia_2392[Ai_0];
   Gd_2752 = Gda_2396[Ai_0];
   Gi_2760 = Gia_2400[Ai_0];
   Gi_2764 = Gia_2404[Ai_0];
   Gd_2768 = Gda_2408[Ai_0];
   Gi_2776 = Gia_2412[Ai_0];
   Gi_2780 = Gia_2416[Ai_0];
   Gi_2784 = Gia_2460[Ai_0];
   Gd_2788 = Gda_2464[Ai_0];
   Gd_2796 = Gda_2468[Ai_0];
   Gi_2804 = Gia_2472[Ai_0];
   Gi_2808 = Gia_2476[Ai_0];
   Gi_2812 = Gia_2480[Ai_0];
   Gd_2816 = Gda_2484[Ai_0];
   Gd_2824 = Gda_2488[Ai_0];
   Gi_2832 = Gia_2504[Ai_0];
   Gd_2836 = Gda_2236[Ai_0];
   Gd_2852 = Gda_2240[Ai_0];
   Gi_2860 = Gia_2508[Ai_0];
   Gi_2864 = Gia_2512[Ai_0];
   Gi_2868 = Gia_2516[Ai_0];
   return (1);
}

int deinit() {
   if (IsTesting() || IsOptimization()) Print("Time testing / optimization: ", (GetTickCount() - Gi_2908) / 1000, " seconds.");
   return (0);
}

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

void f0_37(int Ai_0) {
   double Ld_16;
   for (int count_4 = 0; count_4 < 2; count_4++) {
      if (count_4 == 0) {
         Gi_3040 = Gi_3308;
         Gs_3064 = "BUY";
         Gi_2920 = 0;
         Gd_2988 = Gd_2556;
      } else {
         Gi_3040 = Gi_3312;
         Gs_3064 = "SELL";
         Gi_2920 = 1;
         Gd_2988 = Gd_2548;
      }
      Gd_2996 = 100.0 * MathFloor(Gd_2988 / Gd_2532 / 100.0) * Gd_2532;
      Gd_3192 = (Gd_2588 - 56.0) / 34.0;
      if (IsDemo()) Gd_3092 = 0;
      if (Gi_2832 == 1) {
         Gi_3056 = FALSE;
         Gd_2940 = Gd_2932;
         if (Gi_2916 && Gd_3272 > 0.0) {
            if (Gi_3040 == Gi_3308 && Gd_3280 < Gda_3288[Ai_0] && Gda_3288[Ai_0] - Gd_3280 > G_spread_2564) {
               Gi_3056 = TRUE;
               Gi_2924 = Gi_2880 + 710;
               Gd_2948 = Gd_2988;
               Gd_2972 = 0;
               Gd_2964 = 0;
               if (dArb_EXR_TypeOfTakeProfit == 2) Gd_2972 = Gd_2948 + G_spread_2564 * Gd_2532;
            } else {
               if (Gi_3040 == Gi_3312 && Gd_3280 > Gda_3288[Ai_0] && Gd_3280 - Gda_3288[Ai_0] > G_spread_2564) {
                  Gi_3056 = TRUE;
                  Gi_2924 = Gi_2880 + 710;
                  Gd_2948 = Gd_2988;
                  Gd_2972 = 0;
                  Gd_2964 = 0;
                  if (dArb_EXR_TypeOfTakeProfit == 2) Gd_2972 = Gd_2948 - G_spread_2564 * Gd_2532;
               }
            }
         }
         Gi_3060 = FALSE;
         if (dUseGridTracking == 1 && Gia_3108[Gi_3040] > 0 && (!Gi_2916)) {
            if (Gi_3040 == Gi_3308) {
               G_order_open_price_3004 = Gda_3112[Gi_3040];
               Gd_3020 = Gda_3116[Gi_3040] * dGridStep_PR_B / 100.0;
            } else {
               G_order_open_price_3004 = Gda_3116[Gi_3040];
               Gd_3020 = Gda_3112[Gi_3040] * dGridStep_PR_S / 100.0;
            }
            if (Gi_3040 == Gi_3308 && Gd_2988 < G_order_open_price_3004 - Gd_3020 && Gi_2596 != 0) {
               Gi_3060 = TRUE;
               Gd_2948 = Gd_2988;
               Gd_2972 = 0;
               Gd_2964 = 0;
               if (dGridTakeProfit_PR_B > 0.0) Gd_2972 = Gd_2948 + NormalizeDouble(Gda_3116[Gi_3040] * dGridTakeProfit_PR_B / 100.0, Gd_2540);
               if (dGridStopLoss_PR_B > 0.0) Gd_2964 = Gd_2948 - NormalizeDouble(Gda_3116[Gi_3040] * dGridStopLoss_PR_B / 100.0, Gd_2540);
            } else {
               if (Gi_3040 == Gi_3312 && Gd_2988 > G_order_open_price_3004 + Gd_3020 && Gi_2600 != 0) {
                  Gi_3060 = TRUE;
                  Gd_2948 = Gd_2988;
                  Gd_2972 = 0;
                  Gd_2964 = 0;
                  if (dGridTakeProfit_PR_S > 0.0) Gd_2972 = Gd_2948 - NormalizeDouble(Gda_3112[Gi_3040] * dGridTakeProfit_PR_S / 100.0, Gd_2540);
                  if (dGridStopLoss_PR_S > 0.0) Gd_2964 = Gd_2948 + NormalizeDouble(Gda_3112[Gi_3040] * dGridStopLoss_PR_S / 100.0, Gd_2540);
               }
            }
            if (Gi_3060) {
               Gi_2924 = Gi_2880 + 110;
               if (dGridRisk > 0.0) Gd_2940 = f0_28(AccountFreeMargin() / 1000.0 * dGridRisk, Gda_2500[Ai_0]);
               else Gd_2940 = Gda_2492[Ai_0];
               if (Gd_2940 < Gda_2492[Ai_0]) Gd_2940 = Gda_2492[Ai_0];
               if (Gd_2940 > Gda_2496[Ai_0]) Gd_2940 = Gda_2496[Ai_0];
            }
         }
         if (Gi_3060) Gi_3056 = TRUE;
         if ((!Gi_3056) && dUseCloseOpeningGAP == 1) f0_26(Ai_0);
         if (UsePreventCheckingOrder && (!Gi_3060))
            if (!(f0_32(Ai_0, Gd_2988, Gi_3040, Gi_2920, Gd_2988, 0))) continue;
         if ((!Gi_3056) && CR_UseCorrection == 1) f0_1();
         if ((!Gi_3056) && Gia_2420[Ai_0] == 1) f0_29(Ai_0);
         if ((!Gi_3056) && Gi_2784 == 1 && Gi_3164) f0_22();
         if ((!Gi_3056) && Gi_2712 == 1 && Gi_2728 == 1 && MathAbs(Gd_3124) > Gd_2732) f0_10();
         if ((!Gi_3056) && dUseTrendOrders_ParabolicSAR == 1) f0_24();
         if ((!Gi_3056) && dUseOrders_Stochastic == 1) f0_13();
         if ((!Gi_3056) && dUseTrendOrders_ADX == 1) f0_35();
         if ((!Gi_3056) && dUseOrders_CCI == 1) f0_16();
         if ((!Gi_3056) && dUseEA_SCL == 1) f0_47();
         if (Gi_3056) {
            if ((!Gi_3060) && (!Gi_2916)) {
               if (Gi_2924 == Gi_2880 + 210) {
                  if (Gd_2824 > 0.0 && Gd_2824 != 1.0 && Gd_2932 > Gda_2492[Ai_0]) {
                     Gd_2940 = f0_28(Gd_2932 * Gd_2824, Gda_2500[Ai_0]);
                     if (Gd_2940 > Gda_2496[Ai_0]) Gd_2940 = Gda_2496[Ai_0];
                  }
               }
               if (Gi_2604 > 0) {
                  if (Gi_2920 == 0) Gd_2972 = Gd_2948 + Gi_2604 * Gd_2532;
                  else
                     if (Gi_2920 == 1) Gd_2972 = Gd_2948 - Gi_2604 * Gd_2532;
               }
               if (Gi_2608 > 0) {
                  if (Gi_2920 == 0) Gd_2964 = Gd_2948 - Gi_2608 * Gd_2532;
                  else
                     if (Gi_2920 == 1) Gd_2964 = Gd_2948 + Gi_2608 * Gd_2532;
               }
            }
            if (Gi_2920 == 0) {
               if (Gd_2972 != 0.0 && Gd_2972 - Gd_2948 < G_stoplevel_2572 * Gd_2532) Gd_2972 = Gd_2948 + G_stoplevel_2572 * Gd_2532;
               if (Gd_2964 != 0.0 && Gd_2948 - Gd_2964 < G_stoplevel_2572 * Gd_2532) Gd_2964 = Gd_2948 - G_stoplevel_2572 * Gd_2532;
            }
            if (Gi_2920 == 1) {
               if (Gd_2972 != 0.0 && Gd_2948 - Gd_2972 < G_stoplevel_2572 * Gd_2532) Gd_2972 = Gd_2948 - G_stoplevel_2572 * Gd_2532;
               if (Gd_2964 != 0.0 && Gd_2964 - Gd_2948 < G_stoplevel_2572 * Gd_2532) Gd_2964 = Gd_2948 + G_stoplevel_2572 * Gd_2532;
            }
            if (InverseTrading == 1 && (!Gi_3060) && (!Gi_2916)) {
               Ld_16 = G_spread_2564 * Gd_2532;
               if (Gi_2920 == 0) {
                  Gi_2920 = 1;
                  Gi_3040 = Gi_3312;
                  if (Gd_2964 != 0.0) Gd_2964 = Gd_2948 - Ld_16 + (Gd_2948 - Gd_2964);
                  if (Gd_2972 != 0.0) Gd_2972 = Gd_2948 - Ld_16 - (Gd_2972 - Gd_2948);
                  Gd_2948 -= Ld_16;
                  Gd_2988 = Gd_2548;
               } else {
                  if (Gi_2920 == 1) {
                     Gi_2920 = 0;
                     Gi_3040 = Gi_3308;
                     if (Gd_2964 != 0.0) Gd_2964 = Gd_2948 + Ld_16 - (Gd_2964 - Gd_2948);
                     if (Gd_2972 != 0.0) Gd_2972 = Gd_2948 + Ld_16 + (Gd_2948 - Gd_2972);
                     Gd_2948 += Ld_16;
                     Gd_2988 = Gd_2556;
                  }
               }
            }
         }
         if (Gi_3056) {
            if ((!Gi_3060) && (!Gi_2916)) {
               if (Gi_3056)
                  if (!f0_32(Ai_0, Gd_2948, Gi_3040, Gi_2920, Gd_2988, 1)) Gi_3056 = FALSE;
               if (Gi_3056)
                  if (!f0_17(Gd_2948, Gi_2920, Gd_2988)) Gi_3056 = FALSE;
            }
         }
         if (Gi_3056) {
            if (Gi_508 == 1) {
            }
            Gs_2980 = "";
            G_ticket_3036 = f0_4(G_symbol_2524, Gi_2920, Gd_2940, Gd_2948, Gia_2520[Ai_0], Gd_2964, Gd_2972, Gs_2980, Gi_2924, 0, Green);
            if (G_ticket_3036 > 0) {
               if (OrderSelect(G_ticket_3036, SELECT_BY_TICKET, MODE_TRADES)) {
                  if (!(f0_3())) break;
                  continue;
               }
            } else {
               if (Gi_2924 == Gi_2880 + 720) {
                  if (Gi_3040 == Gi_3308) Gia_3300[Ai_0] = 0;
                  if (Gi_3040 == Gi_3312) Gia_3304[Ai_0] = 0;
               }
            }
         }
      }
      if (Gia_2296[Ai_0] == 1) f0_42(Ai_0);
   }
}

void f0_42(int Ai_0) {
   for (int count_4 = 0; count_4 < 2; count_4++) {
      Gi_2924 = Gi_2880 + 0;
      if (count_4 == 0) {
         if (Gi_3040 == Gi_3308) {
            if (Gi_2648 < 0) continue;
            Gi_2920 = 4;
            Gi_3044 = Gi_3324;
            if (Gd_2988 < Gd_2996 + Gi_2648 * Gd_2532) Gd_2948 = Gd_2996 + Gi_2648 * Gd_2532;
            else Gd_2948 = Gd_2996 + (Gi_2648 + 100) * Gd_2532;
         } else {
            if (Gi_2656 < 0) continue;
            Gi_2920 = 5;
            Gi_3044 = Gi_3328;
            if (Gd_2988 < Gd_2996 + Gi_2656 * Gd_2532) Gd_2948 = Gd_2996 - (100 - Gi_2656) * Gd_2532;
            else Gd_2948 = Gd_2996 + Gi_2656 * Gd_2532;
         }
      } else {
         if (Gi_3040 == Gi_3308) {
            if (Gi_2652 < 0) continue;
            Gi_2920 = 2;
            Gi_3044 = Gi_3316;
            if (Gd_2988 < Gd_2996 + Gi_2652 * Gd_2532) Gd_2948 = Gd_2996 - (100 - Gi_2652) * Gd_2532;
            else Gd_2948 = Gd_2996 + Gi_2652 * Gd_2532;
         } else {
            if (Gi_2660 < 0) continue;
            Gi_2920 = 3;
            Gi_3044 = Gi_3320;
            if (Gd_2988 < Gd_2996 + Gi_2660 * Gd_2532) Gd_2948 = Gd_2996 + Gi_2660 * Gd_2532;
            else Gd_2948 = Gd_2996 + (Gi_2660 + 100) * Gd_2532;
         }
      }
      Gs_3064 = f0_45(Gi_2920);
      if (Gi_3040 == Gi_3308) {
         Gd_2972 = Gd_2948 + Gi_2612 * Gd_2532;
         if (Gi_2620 > 0) Gd_2964 = Gd_2948 - Gi_2620 * Gd_2532;
         else Gd_2964 = 0;
      } else {
         Gd_2972 = Gd_2948 - Gi_2616 * Gd_2532;
         if (Gi_2624 > 0) Gd_2964 = Gd_2948 + Gi_2624 * Gd_2532;
         else Gd_2964 = 0;
      }
      Gi_3052 = TRUE;
      if (Gi_3052)
         if (!f0_32(Ai_0, Gd_2948, Gi_3040, Gi_2920, Gd_2988, 1)) Gi_3052 = FALSE;
      if (Gi_3052) {
         if (Gi_2864 != 0)
            if (MathAbs(Gd_2948 - Gd_2988) < Gi_2864 * Gd_2532) Gi_3052 = FALSE;
         if (Gi_2868 != 0)
            if (MathAbs(Gd_2948 - Gd_2988) > Gi_2868 * Gd_2532) Gi_3052 = FALSE;
      }
      if (Gi_3052)
         if (Gia_3108[Gi_3040] > 0 && count_4 == 1) Gi_3052 = FALSE;
      if (Gi_3052) {
         if (Gia_3108[Gi_3044] > 0) {
            if (Gi_3044 == Gi_3324 || Gi_3044 == Gi_3320) Gd_3012 = Gda_3112[Gi_3044];
            else Gd_3012 = Gda_3116[Gi_3044];
            if (Gi_2192 != 0) Gd_3020 = Gi_2192 * Gd_2532;
            else Gd_3020 = 1;
            if (Gi_3044 == Gi_3324 || Gi_3044 == Gi_3320) {
               if (Gd_2948 > Gd_3012 - Gd_3020) Gi_3052 = FALSE;
            } else
               if (Gd_2948 < Gd_3012 + Gd_3020) Gi_3052 = FALSE;
         }
      }
      if (Gi_3052 && Gia_3108[Gi_3040] > 0) {
         if (f0_23(Gd_2948, Gi_3040, G_order_open_price_3004)) {
            if ((Gi_3040 == Gi_3308 && Gi_2688 == 1) || (Gi_3040 == Gi_3312 && Gi_2692 == 1)) {
               Gd_2972 = (Gd_2948 + G_order_open_price_3004) / 2.0;
               Gi_2924 = Gi_2880 + 100;
            }
         } else Gi_3052 = FALSE;
      }
      if (Gi_3052 && Gi_2748 > 0)
         if (!f0_41(Gd_2948, Gi_3040)) Gi_3052 = FALSE;
      if (Gi_3052)
         if (!f0_17(Gd_2948, Gi_2920, Gd_2988)) Gi_3052 = FALSE;
      if (Gi_3052) {
         Gd_2940 = Gd_2932;
         Gs_2980 = "";
         G_ticket_3036 = f0_4(G_symbol_2524, Gi_2920, Gd_2940, Gd_2948, 0, Gd_2964, Gd_2972, Gs_2980, Gi_2924, 0, Green);
         if (G_ticket_3036 > 0) {
            if (OrderSelect(G_ticket_3036, SELECT_BY_TICKET, MODE_TRADES))
               if (!(f0_3())) break;
         }
      }
   }
}

void f0_22() {
   double Ld_0 = G_spread_2564 * Gd_2532;
   if (Gi_3040 == Gi_3308 && Gd_2548 > G_ilow_3168 && Gd_2548 <= G_ilow_3168 + (Gd_3184 - Ld_0) / 4.0) {
      if (iOpen(G_symbol_2524, Gia_3332[0], 0) >= iClose(G_symbol_2524, Gia_3332[0], 1) && iClose(G_symbol_2524, Gia_3332[0], 1) > iClose(G_symbol_2524, Gia_3332[0], 2) &&
         iClose(G_symbol_2524, Gia_3332[0], 2) > iClose(G_symbol_2524, Gia_3332[0], 3)) {
         Gi_3056 = TRUE;
         Gi_2920 = 0;
         Gd_2948 = Gd_2988;
         Gd_2972 = Gd_2948 + NormalizeDouble((Gd_3184 - Ld_0) / 2.0, Gd_2540);
         if (Gd_2816 > 0.0) Gd_2964 = Gd_2948 - NormalizeDouble(Gd_2988 * Gd_2816 / 100.0, Gd_2540);
         else {
            if (diFL_StopLoss_UseSAR == 1 && Gd_3208 != 0.0 && Gd_3208 < Gd_2948) Gd_2964 = Gd_3208;
            else Gd_2964 = 0;
         }
      }
   }
   if (Gi_3040 == Gi_3312 && Gd_2548 < G_ihigh_3176 && Gd_2548 >= G_ihigh_3176 - (Gd_3184 - Ld_0) / 4.0) {
      if (iOpen(G_symbol_2524, Gia_3332[0], 0) <= iClose(G_symbol_2524, Gia_3332[0], 1) && iClose(G_symbol_2524, Gia_3332[0], 1) < iClose(G_symbol_2524, Gia_3332[0], 2) &&
         iClose(G_symbol_2524, Gia_3332[0], 2) < iClose(G_symbol_2524, Gia_3332[0], 3)) {
         Gi_3056 = TRUE;
         Gi_2920 = 1;
         Gd_2948 = Gd_2988;
         Gd_2972 = Gd_2948 - NormalizeDouble((Gd_3184 - Ld_0) / 2.0, Gd_2540);
         if (Gi_2616 > 0)
            if (Gd_2972 < Gd_2948 - Gi_2616 * Gd_2532) Gd_2972 = Gd_2948 - Gi_2616 * Gd_2532;
         if (Gd_2816 > 0.0) Gd_2964 = Gd_2948 + NormalizeDouble(Gd_2988 * Gd_2816 / 100.0, Gd_2540);
         else {
            if (diFL_StopLoss_UseSAR == 1 && Gd_3208 != 0.0 && Gd_3208 > Gd_2948) Gd_2964 = Gd_3208;
            else Gd_2964 = 0;
         }
      }
   }
   if (Gi_3056) Gi_2924 = Gi_2880 + 210;
}

void f0_1() {
   int Li_4;
   int Li_8;
   double ilow_12;
   double ihigh_20;
   double ilow_28 = 0;
   double ihigh_36 = 0;
   double ilow_44 = 0;
   double ihigh_52 = 0;
   for (int Li_0 = 0; Li_0 < CR_AnalizMove_CountBars; Li_0++) {
      ilow_12 = iLow(G_symbol_2524, Gia_3332[CR_AnalizMove_Period], Li_0);
      ihigh_20 = iHigh(G_symbol_2524, Gia_3332[CR_AnalizMove_Period], Li_0);
      if (ilow_12 > 0.0) {
         if (ilow_28 == 0.0 || ilow_12 < ilow_28) {
            ilow_28 = ilow_12;
            Li_4 = Li_0;
         }
      }
      if (ihigh_20 > 0.0) {
         if (ihigh_36 == 0.0 || ihigh_20 > ihigh_36) {
            ihigh_36 = ihigh_20;
            Li_8 = Li_0;
         }
      }
   }
   for (Li_0 = 0; Li_0 < CR_AnalizFlat_CountBars; Li_0++) {
      ilow_12 = iLow(G_symbol_2524, Gia_3332[CR_AnalizFlat_Period], Li_0);
      ihigh_20 = iHigh(G_symbol_2524, Gia_3332[CR_AnalizFlat_Period], Li_0);
      if (ilow_12 > 0.0)
         if (ilow_44 == 0.0 || ilow_12 < ilow_44) ilow_44 = ilow_12;
      if (ihigh_20 > 0.0)
         if (ihigh_52 == 0.0 || ihigh_20 > ihigh_52) ihigh_52 = ihigh_20;
   }
   if (ilow_28 == 0.0 || ihigh_36 == 0.0 || ilow_44 == 0.0 || ihigh_52 == 0.0) return;
   if (ihigh_36 - ilow_28 >= Gd_2988 * CR_WaitCorrectionAfterMove_PR / 100.0) {
      if (ihigh_52 - ilow_44 <= Gd_2988 * CR_WaitCorrectionAfterFlat_PR / 100.0) {
         if (Gi_3040 == Gi_3308 && Gd_2988 <= ilow_28 + Gd_2988 * CR_MaxDistanceFromBottom_PR / 100.0) {
            for (Li_0 = 0; Li_0 < Li_4; Li_0++) {
               ihigh_20 = iHigh(G_symbol_2524, Gia_3332[CR_AnalizMove_Period], Li_0);
               if (ihigh_20 > ilow_28 + Gd_2988 * (CR_MaxDistanceFromBottom_PR + CR_WaitCorrectionAfterMove_PR) / 100.0) return;
            }
            Gi_3056 = TRUE;
            Gi_2920 = 0;
            Gd_2948 = Gd_2988;
            Gd_2972 = Gd_2948 + NormalizeDouble(Gd_2988 * CR_SizeCorrection_PR / 100.0, Gd_2540);
            if (CR_StopLoss_PR > 0.0) Gd_2964 = Gd_2948 - NormalizeDouble(Gd_2988 * CR_StopLoss_PR / 100.0, Gd_2540);
            else {
               if (CR_StopLoss_UseSAR == 1 && Gd_3208 != 0.0 && Gd_3208 < Gd_2948) Gd_2964 = Gd_3208;
               else Gd_2964 = 0;
            }
         }
         if (Gi_3040 == Gi_3312 && Gd_2988 >= ihigh_36 - Gd_2988 * CR_MaxDistanceFromBottom_PR / 100.0) {
            for (Li_0 = 0; Li_0 < Li_8; Li_0++) {
               ilow_12 = iLow(G_symbol_2524, Gia_3332[CR_AnalizMove_Period], Li_0);
               if (ilow_12 < ihigh_36 - Gd_2988 * (CR_MaxDistanceFromBottom_PR + CR_WaitCorrectionAfterMove_PR) / 100.0) return;
            }
            Gi_3056 = TRUE;
            Gi_2920 = 1;
            Gd_2948 = Gd_2988;
            Gd_2972 = Gd_2948 - NormalizeDouble(Gd_2988 * CR_SizeCorrection_PR / 100.0, Gd_2540);
            if (CR_StopLoss_PR > 0.0) Gd_2964 = Gd_2948 + NormalizeDouble(Gd_2988 * CR_StopLoss_PR / 100.0, Gd_2540);
            else {
               if (CR_StopLoss_UseSAR == 1 && Gd_3208 != 0.0 && Gd_3208 > Gd_2948) Gd_2964 = Gd_3208;
               else Gd_2964 = 0;
            }
         }
         if (Gi_3056) Gi_2924 = Gi_2880 + 410;
      }
   }
}

void f0_29(int Ai_0) {
   double Lda_56[];
   double Lda_60[];
   double Ld_128;
   double Ld_136;
   int Li_16 = Gia_2424[Ai_0];
   double Ld_24 = Gda_2432[Ai_0];
   double Ld_32 = Gda_2436[Ai_0];
   int Li_20 = Gia_2440[Ai_0];
   double Ld_40 = Gda_2448[Ai_0];
   double Ld_48 = Gda_2452[Ai_0];
   ArrayResize(Lda_56, Gia_2428[Ai_0]);
   ArrayResize(Lda_60, Gia_2428[Ai_0]);
   int index_12 = 0;
   int index_8 = 0;
   double Ld_80 = Gd_2548;
   double Ld_88 = Gd_2548;
   double Ld_96 = Gd_2548;
   double Ld_104 = Gd_2548;
   double Ld_112 = Gd_2548;
   double Ld_120 = Gd_2548;
   double Ld_64 = 0;
   double Ld_72 = 0;
   for (int Li_4 = 0; Li_4 < Gia_2428[Ai_0]; Li_4++) {
      if (Gi_3040 == Gi_3308) Ld_64 = iLow(G_symbol_2524, Gia_3332[Li_16], Li_4);
      if (Gi_3040 == Gi_3312) Ld_72 = iHigh(G_symbol_2524, Gia_3332[Li_16], Li_4);
      if (Ld_64 > 0.0) {
         if (Ld_64 < Ld_80 || (Ld_88 - Ld_80) / Ld_80 < Ld_24 / 100.0) {
            Ld_80 = Ld_64;
            if (Ld_88 < Ld_96) Ld_88 = Ld_96;
            Ld_96 = Ld_64;
         } else
            if (Ld_64 > Ld_96) Ld_96 = Ld_64;
         if ((Ld_96 - Ld_80) / Ld_80 >= Ld_24 / 100.0 && (Ld_88 - Ld_80) / Ld_80 >= Ld_24 / 100.0) {
            Lda_60[index_12] = Ld_80;
            index_12++;
            Ld_80 = Ld_64;
            Ld_88 = Ld_64;
            Ld_96 = Ld_64;
         }
      }
      if (Ld_72 > 0.0) {
         if (Ld_72 > Ld_104 || (Ld_104 - Ld_120) / Ld_104 < Ld_24 / 100.0) {
            Ld_104 = Ld_72;
            if (Ld_120 > Ld_112) Ld_120 = Ld_112;
            Ld_112 = Ld_72;
         } else
            if (Ld_72 < Ld_112) Ld_112 = Ld_72;
         if ((Ld_104 - Ld_112) / Ld_104 >= Ld_24 / 100.0 && (Ld_104 - Ld_120) / Ld_104 >= Ld_24 / 100.0) {
            Lda_56[index_8] = Ld_104;
            index_8++;
            Ld_104 = Ld_72;
            Ld_120 = Ld_72;
            Ld_112 = Ld_72;
         }
      }
   }
   if (Gi_3040 == Gi_3308) {
      for (Li_4 = 0; Li_4 < index_12; Li_4++) {
         if (Gd_2548 > Lda_60[Li_4] && Gd_2548 <= Lda_60[Li_4] * (Ld_32 / 100.0 + 1.0)) {
            if (iLow(G_symbol_2524, Gia_3332[Li_16], 0) < Lda_60[Li_4] || iLow(G_symbol_2524, Gia_3332[Li_16], 1) < Lda_60[Li_4]) continue;
            Gi_3056 = TRUE;
            Gi_2920 = 0;
            Gd_2948 = Gd_2988;
            break;
         }
      }
      if (Gi_3056) {
         ArrayResize(Lda_56, Gia_2444[Ai_0]);
         index_8 = 0;
         Ld_104 = Gd_2548;
         Ld_112 = Gd_2548;
         Ld_120 = Gd_2548;
         Ld_72 = 0;
         for (Li_4 = 0; Li_4 < Gia_2444[Ai_0]; Li_4++) {
            Ld_72 = iHigh(G_symbol_2524, Gia_3332[Li_20], Li_4);
            if (Ld_72 > 0.0) {
               if (Ld_72 > Ld_104 || (Ld_104 - Ld_120) / Ld_104 < Ld_40 / 100.0) {
                  Ld_104 = Ld_72;
                  if (Ld_120 > Ld_112) Ld_120 = Ld_112;
                  Ld_112 = Ld_72;
               } else
                  if (Ld_72 < Ld_112) Ld_112 = Ld_72;
               if ((Ld_104 - Ld_112) / Ld_104 >= Ld_40 / 100.0 && (Ld_104 - Ld_120) / Ld_104 >= Ld_40 / 100.0) {
                  Lda_56[index_8] = Ld_104;
                  index_8++;
                  Ld_104 = Ld_72;
                  Ld_120 = Ld_72;
                  Ld_112 = Ld_72;
               }
            }
         }
         Ld_128 = 0;
         for (Li_4 = 0; Li_4 < index_8; Li_4++)
            if (Gd_2548 < Lda_56[Li_4] && Gd_2548 <= Lda_56[Li_4] * (1 - 5.0 * Ld_48 / 100.0) && Lda_56[Li_4] < Ld_128 || Ld_128 == 0.0) Ld_128 = Lda_56[Li_4];
         if (Ld_128 > 0.0) Gd_2972 = NormalizeDouble(Ld_128 * (1 - Ld_48 / 100.0), Gd_2540);
         else Gd_2972 = NormalizeDouble(Gd_2948 * (5.0 * Ld_48 / 100.0 + 1.0), Gd_2540);
         if (Gda_2456[Ai_0] > 0.0) Gd_2964 = Gd_2948 - NormalizeDouble(Gd_2988 * Gda_2456[Ai_0] / 100.0, Gd_2540);
      }
   }
   if (Gi_3040 == Gi_3312) {
      for (Li_4 = 0; Li_4 < index_8; Li_4++) {
         if (Gd_2548 < Lda_56[Li_4] && Gd_2548 >= Lda_56[Li_4] * (1 - Ld_32 / 100.0)) {
            if (iHigh(G_symbol_2524, Gia_3332[Li_16], 0) > Lda_56[Li_4] || iHigh(G_symbol_2524, Gia_3332[Li_16], 1) > Lda_56[Li_4]) continue;
            Gi_3056 = TRUE;
            Gi_2920 = 1;
            Gd_2948 = Gd_2988;
            break;
         }
      }
      if (Gi_3056) {
         ArrayResize(Lda_60, Gia_2444[Ai_0]);
         index_12 = 0;
         Ld_80 = Gd_2548;
         Ld_88 = Gd_2548;
         Ld_96 = Gd_2548;
         Ld_64 = 0;
         for (Li_4 = 0; Li_4 < Gia_2444[Ai_0]; Li_4++) {
            Ld_64 = iLow(G_symbol_2524, Gia_3332[Li_20], Li_4);
            if (Ld_64 > 0.0) {
               if (Ld_64 < Ld_80 || (Ld_88 - Ld_80) / Ld_80 < Ld_40 / 100.0) {
                  Ld_80 = Ld_64;
                  if (Ld_88 < Ld_96) Ld_88 = Ld_96;
                  Ld_96 = Ld_64;
               } else
                  if (Ld_64 > Ld_96) Ld_96 = Ld_64;
               if ((Ld_96 - Ld_80) / Ld_80 >= Ld_40 / 100.0 && (Ld_88 - Ld_80) / Ld_80 >= Ld_40 / 100.0) {
                  Lda_60[index_12] = Ld_80;
                  index_12++;
                  Ld_80 = Ld_64;
                  Ld_88 = Ld_64;
                  Ld_96 = Ld_64;
               }
            }
         }
         Ld_136 = 0;
         for (Li_4 = 0; Li_4 < index_12; Li_4++)
            if (Gd_2548 > Lda_60[Li_4] && Gd_2548 >= Lda_60[Li_4] * (5.0 * Ld_48 / 100.0 + 1.0) && Lda_60[Li_4] > Ld_136 || Ld_136 == 0.0) Ld_136 = Lda_60[Li_4];
         if (Ld_136 > 0.0) Gd_2972 = NormalizeDouble(Ld_136 * (Ld_48 / 100.0 + 1.0), Gd_2540) + G_spread_2564 * Gd_2532;
         else Gd_2972 = NormalizeDouble(Gd_2948 * (1 - 5.0 * Ld_48 / 100.0), Gd_2540);
         if (Gda_2456[Ai_0] > 0.0) Gd_2964 = Gd_2948 + NormalizeDouble(Gd_2988 * Gda_2456[Ai_0] / 100.0, Gd_2540);
      }
   }
   if (Gi_3056) Gi_2924 = Gi_2880 + 420;
}

void f0_24() {
   double isar_0 = iSAR(G_symbol_2524, Gia_3332[diSAR_RO_TimeFrame], diSAR_RO_Step, diSAR_RO_Maximum, 0);
   double isar_8 = iSAR(G_symbol_2524, Gia_3332[diSAR_RO_TimeFrame], diSAR_RO_Step, diSAR_RO_Maximum, 1);
   double isar_16 = iSAR(G_symbol_2524, Gia_3332[diSAR_RO_TimeFrame], diSAR_RO_Step, diSAR_RO_Maximum, 2);
   double isar_24 = iSAR(G_symbol_2524, Gia_3332[diSAR_RO_TimeFrame], diSAR_RO_Step, diSAR_RO_Maximum, 3);
   double iclose_32 = iClose(G_symbol_2524, Gia_3332[diSAR_RO_TimeFrame], 1);
   double iclose_40 = iClose(G_symbol_2524, Gia_3332[diSAR_RO_TimeFrame], 2);
   double iclose_48 = iClose(G_symbol_2524, Gia_3332[diSAR_RO_TimeFrame], 3);
   if (Gi_3040 == Gi_3308 && isar_0 < Gd_2988 && isar_8 < iclose_32 && isar_16 > iclose_40 && isar_24 > iclose_48) {
      Gi_3056 = TRUE;
      Gi_2920 = 0;
      Gd_2948 = Gd_2988;
      Gd_2972 = 0;
      Gd_2964 = 0;
   }
   if (Gi_3040 == Gi_3312 && isar_0 > Gd_2988 && isar_8 > iclose_32 && isar_16 < iclose_40 && isar_24 < iclose_48) {
      Gi_3056 = TRUE;
      Gi_2920 = 1;
      Gd_2948 = Gd_2988;
      Gd_2972 = 0;
      Gd_2964 = 0;
   }
   if (Gi_3056) Gi_2924 = Gi_2880 + 610;
}

void f0_13() {
   double Ld_0;
   bool Li_8;
   int order_total_12;
   bool Li_16;
   if (Gi_3040 == Gi_3308 && G_istochastic_3232 < G_istochastic_3224 && G_istochastic_3248 < G_istochastic_3240 && G_istochastic_3264 > G_istochastic_3256) {
      Gi_3056 = TRUE;
      Gi_2920 = 0;
      Gd_2948 = Gd_2988;
      Gd_2972 = 0;
      Gd_2964 = 0;
      if (diStoch_RO_TakeProfit_PR > 0.0) Gd_2972 = Gd_2948 + NormalizeDouble(Gd_2988 * diStoch_RO_TakeProfit_PR / 100.0, Gd_2540);
      if (diStoch_RO_StopLoss_PR > 0.0) Gd_2964 = Gd_2948 - NormalizeDouble(Gd_2988 * diStoch_RO_StopLoss_PR / 100.0, Gd_2540);
      if (diStoch_RO_UseAverageTP == 1 && Gia_3108[Gi_2920] != 0) {
         Ld_0 = Gda_3112[Gi_2920];
         if (Ld_0 > Gd_2948) Gd_2972 = Gd_2948 + (Ld_0 - Gd_2948) / 2.0;
      }
   }
   if (Gi_3040 == Gi_3312 && G_istochastic_3232 > G_istochastic_3224 && G_istochastic_3248 > G_istochastic_3240 && G_istochastic_3264 < G_istochastic_3256) {
      Gi_3056 = TRUE;
      Gi_2920 = 1;
      Gd_2948 = Gd_2988;
      Gd_2972 = 0;
      Gd_2964 = 0;
      if (diStoch_RO_TakeProfit_PR > 0.0) Gd_2972 = Gd_2948 - NormalizeDouble(Gd_2988 * diStoch_RO_TakeProfit_PR / 100.0, Gd_2540);
      if (diStoch_RO_StopLoss_PR > 0.0) Gd_2964 = Gd_2948 + NormalizeDouble(Gd_2988 * diStoch_RO_StopLoss_PR / 100.0, Gd_2540);
      if (diStoch_RO_UseAverageTP == 1 && Gia_3108[Gi_2920] != 0) {
         Ld_0 = Gda_3116[Gi_2920];
         if (Ld_0 < Gd_2948) Gd_2972 = Gd_2948 - (Gd_2948 - Ld_0) / 2.0;
      }
   }
   if (Gi_3056) {
      Gi_2924 = Gi_2880 + 620;
      if (diStoch_RO_ReverseClose == 1) {
         if (Gi_2920 == 0) Li_8 = TRUE;
         else
            if (Gi_2920 == 1) Li_8 = FALSE;
         if (diStoch_RO_RevCloseOnlyProfit == 1) Li_16 = TRUE;
         else Li_16 = FALSE;
         order_total_12 = OrdersTotal();
         f0_8(Li_8, G_symbol_2524, 1, Li_16, Gi_2924);
         if (OrdersTotal() != order_total_12) f0_3();
      }
   }
}

void f0_35() {
   double Lda_16[3];
   int order_total_20;
   bool Li_24;
   Gi_2924 = Gi_2880 + 630;
   double iadx_0 = iADX(G_symbol_2524, Gia_3332[diADX_RO_TimeFrame], diADX_RO_Period, diADX_RO_TypePrice, MODE_PLUSDI, 0);
   double iadx_8 = iADX(G_symbol_2524, Gia_3332[diADX_RO_TimeFrame], diADX_RO_Period, diADX_RO_TypePrice, MODE_MINUSDI, 0);
   Lda_16[0] = iADX(G_symbol_2524, Gia_3332[diADX_RO_TimeFrame], diADX_RO_Period, diADX_RO_TypePrice, MODE_MAIN, 0);
   Lda_16[1] = iADX(G_symbol_2524, Gia_3332[diADX_RO_TimeFrame], diADX_RO_Period, diADX_RO_TypePrice, MODE_MAIN, 1);
   Lda_16[2] = iADX(G_symbol_2524, Gia_3332[diADX_RO_TimeFrame], diADX_RO_Period, diADX_RO_TypePrice, MODE_MAIN, 2);
   if (diADX_RO_CloseOnlyProfit != -1) {
      if (diADX_RO_CloseOnlyProfit == 1) Li_24 = TRUE;
      else Li_24 = FALSE;
      order_total_20 = OrdersTotal();
      if (diADX_RO_ValueToCloseOrders != 0.0 && Lda_16[1] >= diADX_RO_ValueToCloseOrders && Lda_16[0] < Lda_16[1] && Lda_16[1] < Lda_16[2]) f0_8(-1, G_symbol_2524, 1, 1, Gi_2924);
      if (Lda_16[0] < Lda_16[1] && Lda_16[1] < Lda_16[2] && Lda_16[1] < diADX_RO_ValueSignalEndTrend && Lda_16[2] >= diADX_RO_ValueSignalEndTrend) f0_8(-1, G_symbol_2524, 1, Li_24, Gi_2924);
      if (iadx_0 < iadx_8) f0_8(OP_BUY, G_symbol_2524, 1, Li_24, Gi_2924);
      if (iadx_0 > iadx_8) f0_8(OP_SELL, G_symbol_2524, 1, Li_24, Gi_2924);
      if (OrdersTotal() != order_total_20) f0_3();
   }
   if (Lda_16[0] > Lda_16[1] && Lda_16[1] > Lda_16[2] && Lda_16[1] >= diADX_RO_ValueSignalTrend && Lda_16[2] < diADX_RO_ValueSignalTrend) {
      if (Gi_3040 == Gi_3308 && iadx_0 > iadx_8) {
         Gi_3056 = TRUE;
         Gi_2920 = 0;
         Gd_2948 = Gd_2988;
         Gd_2972 = 0;
         Gd_2964 = 0;
         if (diADX_RO_TakeProfit_PR > 0.0) Gd_2972 = Gd_2948 + NormalizeDouble(Gd_2988 * diADX_RO_TakeProfit_PR / 100.0, Gd_2540);
         if (diADX_RO_StopLoss_PR > 0.0) Gd_2964 = Gd_2948 - NormalizeDouble(Gd_2988 * diADX_RO_StopLoss_PR / 100.0, Gd_2540);
         if (!(diADX_RO_UseAverageTP == 1 && Gia_3108[Gi_2920] != 0)) return;
         G_order_open_price_3004 = Gda_3112[Gi_2920];
         if (G_order_open_price_3004 <= Gd_2948) return;
         Gd_2972 = Gd_2948 + (G_order_open_price_3004 - Gd_2948) / 2.0;
         return;
      }
      if (Gi_3040 == Gi_3312 && iadx_0 < iadx_8) {
         Gi_3056 = TRUE;
         Gi_2920 = 1;
         Gd_2948 = Gd_2988;
         Gd_2972 = 0;
         Gd_2964 = 0;
         if (diADX_RO_TakeProfit_PR > 0.0) Gd_2972 = Gd_2948 - NormalizeDouble(Gd_2988 * diADX_RO_TakeProfit_PR / 100.0, Gd_2540);
         if (diADX_RO_StopLoss_PR > 0.0) Gd_2964 = Gd_2948 + NormalizeDouble(Gd_2988 * diADX_RO_StopLoss_PR / 100.0, Gd_2540);
         if (diADX_RO_UseAverageTP == 1 && Gia_3108[Gi_2920] != 0) {
            G_order_open_price_3004 = Gda_3116[Gi_2920];
            if (G_order_open_price_3004 < Gd_2948) Gd_2972 = Gd_2948 - (Gd_2948 - G_order_open_price_3004) / 2.0;
         }
      }
   }
}

void f0_16() {
   bool Li_24;
   int order_total_28;
   bool Li_32;
   double icci_0 = iCCI(G_symbol_2524, Gia_3332[diCCI_RO_TimeFrame], diCCI_RO_Period_Slow, diCCI_RO_TypePrice, 0);
   double icci_8 = iCCI(G_symbol_2524, Gia_3332[diCCI_RO_TimeFrame], diCCI_RO_Period_Medium, diCCI_RO_TypePrice, 0);
   double icci_16 = iCCI(G_symbol_2524, Gia_3332[diCCI_RO_TimeFrame], diCCI_RO_Period_Fast, diCCI_RO_TypePrice, 0);
   if (Gi_3040 == Gi_3308 && icci_8 <= 0.0 && icci_0 >= 0.0 && icci_16 > 0.0) {
      Gi_3056 = TRUE;
      Gi_2920 = 0;
      Gd_2948 = Gd_2988;
      Gd_2972 = 0;
      Gd_2964 = 0;
      if (diCCI_RO_TakeProfit_PR > 0.0) Gd_2972 = Gd_2948 + NormalizeDouble(Gd_2988 * diCCI_RO_TakeProfit_PR / 100.0, Gd_2540);
      if (diCCI_RO_StopLoss_PR > 0.0) Gd_2964 = Gd_2948 - NormalizeDouble(Gd_2988 * diCCI_RO_StopLoss_PR / 100.0, Gd_2540);
   }
   if (Gi_3040 == Gi_3312 && icci_8 >= 0.0 && icci_0 <= 0.0 && icci_16 < 0.0) {
      Gi_3056 = TRUE;
      Gi_2920 = 1;
      Gd_2948 = Gd_2988;
      Gd_2972 = 0;
      Gd_2964 = 0;
      if (diCCI_RO_TakeProfit_PR > 0.0) Gd_2972 = Gd_2948 - NormalizeDouble(Gd_2988 * diCCI_RO_TakeProfit_PR / 100.0, Gd_2540);
      if (diCCI_RO_StopLoss_PR > 0.0) Gd_2964 = Gd_2948 + NormalizeDouble(Gd_2988 * diCCI_RO_StopLoss_PR / 100.0, Gd_2540);
   }
   if (Gi_3056) {
      Gi_2924 = Gi_2880 + 640;
      if (diCCI_RO_ReverseClose == 1) {
         if (Gi_2920 == 0) Li_24 = TRUE;
         else
            if (Gi_2920 == 1) Li_24 = FALSE;
         if (diCCI_RO_RevCloseOnlyProfit == 1) Li_32 = TRUE;
         else Li_32 = FALSE;
         order_total_28 = OrdersTotal();
         f0_8(Li_24, G_symbol_2524, 1, Li_32, Gi_2924);
         if (OrdersTotal() != order_total_28) f0_3();
      }
   }
}

int f0_25() {
   int Li_0 = 60 * Gi_1136 + dSCL_StartWorkMinute;
   int Li_4 = 60 * Gi_1148 + dSCL_EndWorkMinute;
   int Li_8 = 60 * TimeHour(TimeCurrent()) + TimeMinute(TimeCurrent());
   if (Li_0 == Li_4) return (1);
   if (Li_0 < Li_4) {
      if (!(Li_8 >= Li_0 && Li_8 <= Li_4)) return (0);
      return (1);
   }
   if (Li_8 > Li_4 && Li_8 < Li_0) return (0);
   return (1);
}

void f0_47() {
   bool Li_24;
   int order_total_28;
   bool Li_32;
   if (dSCL_MaxSpread != 0)
      if (G_spread_2564 > dSCL_MaxSpread) return;
   if (dSCL_UseTimeWork == 1)
      if (!(f0_25())) return;
   double irsi_0 = iRSI(G_symbol_2524, Gia_3332[diSCL_RSI1_TimeFrame], diSCL_RSI1_Period, PRICE_CLOSE, 0);
   double irsi_8 = iRSI(G_symbol_2524, Gia_3332[diSCL_RSI2_TimeFrame], diSCL_RSI2_Period, PRICE_CLOSE, 0);
   double ima_16 = iMA(G_symbol_2524, Gia_3332[diSCL_MA_TimeFrame], diSCL_MA_Period, 0, MODE_SMA, PRICE_CLOSE, 1);
   if (Gi_3040 == Gi_3308 && irsi_0 < diSCL_RSI1_Value || irsi_8 < diSCL_RSI2_Value && ima_16 >= Gd_2548 * (diSCL_MinDistFromMA_PR / 100.0 + 1.0)) {
      Gi_3056 = TRUE;
      Gi_2920 = 0;
      Gd_2948 = Gd_2988;
      Gd_2972 = 0;
      Gd_2964 = 0;
      if (diSCL_ShowTakeProfit_PR > 0.0) Gd_2972 = Gd_2948 + NormalizeDouble(Gd_2988 * diSCL_ShowTakeProfit_PR / 100.0, Gd_2540);
      if (diSCL_ShowStopLoss_PR > 0.0) Gd_2964 = Gd_2948 - NormalizeDouble(Gd_2988 * diSCL_ShowStopLoss_PR / 100.0, Gd_2540);
   }
   if (Gi_3040 == Gi_3312 && irsi_0 > 100 - diSCL_RSI1_Value || irsi_8 > 100 - diSCL_RSI2_Value && ima_16 <= Gd_2548 * (1 - diSCL_MinDistFromMA_PR / 100.0)) {
      Gi_3056 = TRUE;
      Gi_2920 = 1;
      Gd_2948 = Gd_2988;
      Gd_2972 = 0;
      Gd_2964 = 0;
      if (diSCL_ShowTakeProfit_PR > 0.0) Gd_2972 = Gd_2948 - NormalizeDouble(Gd_2988 * diSCL_ShowTakeProfit_PR / 100.0, Gd_2540);
      if (diSCL_ShowStopLoss_PR > 0.0) Gd_2964 = Gd_2948 + NormalizeDouble(Gd_2988 * diSCL_ShowStopLoss_PR / 100.0, Gd_2540);
   }
   if (Gi_3056) {
      Gi_2924 = Gi_2880 + 220;
      if (diSCL_ReverseClose == 1) {
         if (Gi_2920 == 0) Li_24 = TRUE;
         else
            if (Gi_2920 == 1) Li_24 = FALSE;
         if (diSCL_RevCloseOnlyProfit == 1) Li_32 = TRUE;
         else Li_32 = FALSE;
         order_total_28 = OrdersTotal();
         f0_8(Li_24, G_symbol_2524, 1, Li_32, Gi_2924);
         if (OrdersTotal() != order_total_28) f0_3();
      }
   }
}

void f0_26(int Ai_0) {
   double iopen_12;
   double iclose_20;
   double Ld_28;
   if (dUseCloseOpeningGAP != 1 || !f0_14(G_symbol_2524, CustomNameForCurrencyPair)) return;
   int datetime_8 = TimeCurrent();
   if (Gi_3040 == Gi_3308 && TimeDayOfYear(datetime_8) == Gia_3300[Ai_0]) return;
   if (Gi_3040 == Gi_3312 && TimeDayOfYear(datetime_8) == Gia_3304[Ai_0]) return;
   if (TimeDayOfWeek(datetime_8) == 1) {
      if (TimeDayOfYear(G_time_2580) == TimeDayOfYear(datetime_8)) {
         if (Gi_3040 == Gi_3308) Gia_3300[Ai_0] = TimeDayOfYear(datetime_8);
         if (Gi_3040 == Gi_3312) Gia_3304[Ai_0] = TimeDayOfYear(datetime_8);
         iclose_20 = iClose(G_symbol_2524, PERIOD_D1, 1);
         iopen_12 = iOpen(G_symbol_2524, PERIOD_D1, 0);
         if (iclose_20 <= 0.0 || iopen_12 <= 0.0) return;
         Ld_28 = 100.0 * (MathAbs(iclose_20 - iopen_12) / iclose_20);
         if (MathAbs(iclose_20 - iopen_12) > G_spread_2564 * Gd_2532 && (Gi_3040 == Gi_3308 && iopen_12 < iclose_20) || (Gi_3040 == Gi_3312 && iopen_12 > iclose_20)) Print("COG:  Close = ", iclose_20, "  Open = ", iopen_12, "  Abs.GAP = ", MathAbs(iclose_20 - iopen_12), "  GAP_PR = ", Ld_28);
         if (Ld_28 >= diCOG_MinSizeGAP_PR) {
            if (diCOG_MaxSizeGAP_PR > 0.0 && Ld_28 > diCOG_MaxSizeGAP_PR) return;
            if (Gi_3040 == Gi_3308 && iopen_12 < iclose_20 && Gd_2548 <= iopen_12) {
               Gi_3056 = TRUE;
               Gi_2920 = 0;
               Gd_2948 = Gd_2988;
               Gd_2972 = 0;
               Gd_2964 = 0;
               if (diCOG_TakeProfit_KF_GAP > 0.0) Gd_2972 = Gd_2948 + NormalizeDouble((iclose_20 - iopen_12) * diCOG_TakeProfit_KF_GAP, Gd_2540);
               if (diCOG_StopLoss_KF_GAP > 0.0) Gd_2964 = Gd_2948 - NormalizeDouble((iclose_20 - iopen_12) * diCOG_StopLoss_KF_GAP, Gd_2540);
            }
            if (Gi_3040 == Gi_3312 && iopen_12 > iclose_20 && Gd_2548 >= iopen_12) {
               Gi_3056 = TRUE;
               Gi_2920 = 1;
               Gd_2948 = Gd_2988;
               Gd_2972 = 0;
               Gd_2964 = 0;
               if (diCOG_TakeProfit_KF_GAP > 0.0) Gd_2972 = Gd_2948 - NormalizeDouble((Gd_2548 - iclose_20) * diCOG_TakeProfit_KF_GAP, Gd_2540);
               if (diCOG_StopLoss_KF_GAP > 0.0) Gd_2964 = Gd_2948 + NormalizeDouble((Gd_2548 - iclose_20) * diCOG_StopLoss_KF_GAP, Gd_2540);
            }
            if (Gi_3056) Gi_2924 = Gi_2880 + 720;
         }
      }
   }
}

void f0_10() {
   if (Gi_3040 == Gi_3308 && Gd_3124 > 0.0) {
      Gi_3056 = TRUE;
      Gi_2920 = 0;
      Gd_2948 = Gd_2988;
      if (Gi_2740 == 1) Gd_2972 = Gd_2948 + MarketInfo(G_symbol_2524, MODE_STOPLEVEL) * Gd_2532;
      if (Gi_2744 > 0) Gd_2964 = Gd_2948 - Gi_2744 * Gd_2532;
      else Gd_2964 = 0;
   }
   if (Gi_3040 == Gi_3312 && Gd_3124 < 0.0) {
      Gi_3056 = TRUE;
      Gi_2920 = 1;
      Gd_2948 = Gd_2988;
      if (Gi_2740 == 1) Gd_2972 = Gd_2948 - MarketInfo(G_symbol_2524, MODE_STOPLEVEL) * Gd_2532;
      else Gd_2972 = Gd_2948 - Gi_2616 * Gd_2532;
      if (Gi_2744 > 0) Gd_2964 = Gd_2948 + Gi_2744 * Gd_2532;
      else Gd_2964 = 0;
   }
   if (Gi_3056) Gi_2924 = Gi_2880 + 300;
}

bool f0_32(int Ai_0, double Ad_4, int Ai_12, int A_cmd_16, double Ad_unused_20, bool Ai_28 = TRUE) {
   int hist_total_44;
   double Ld_48;
   string Ls_56;
   double ilow_64;
   double ihigh_72;
   double ilow_80;
   double ihigh_88;
   double iadx_96;
   double iadx_104;
   double iadx_112;
   if (Gi_2860 != 0)
      if (Gia_3108[Gi_3308] + Gia_3108[Gi_3312] >= Gi_2860) return (FALSE);
   if (Ai_12 == Gi_3308) {
      if (Gi_2596 == 0) return (FALSE);
      if (A_cmd_16 == OP_BUY && Gi_2832 == 0) return (FALSE);
      if (Gd_2836 > 0.0 && Ad_4 >= Gd_2836) return (FALSE);
      if (Gia_2224[Ai_0] == 1 && Gda_2216[Ai_0] <= 0.0) return (FALSE);
   }
   if (Ai_12 == Gi_3312) {
      if (Gi_2600 == 0) return (FALSE);
      if (A_cmd_16 == OP_SELL && Gi_2832 == 0) return (FALSE);
      if (Gd_2852 > 0.0 && Ad_4 <= Gd_2852) return (FALSE);
      if (Gia_2224[Ai_0] == 1 && Gda_2220[Ai_0] <= 0.0) return (FALSE);
   }
   if (MaxOpenValPosition > 0.0) {
      if (f0_14(G_symbol_2524, CustomNameForCurrencyPair)) {
         for (int count_36 = 0; count_36 < 2; count_36++) {
            Ls_56 = f0_49(G_symbol_2524, count_36 + 1, CustomNameForCurrencyPair);
            Ld_48 = 0;
            for (int index_40 = 0; index_40 < Gi_3072; index_40++) {
               if (Gsa_3080[index_40] == Ls_56) {
                  Ld_48 = Gda_3084[index_40] - Gda_3088[index_40] + PartOfAnotherOrdersInMaxOVP * (Gda_3100[index_40] - Gda_3084[index_40] - (Gda_3104[index_40] - Gda_3088[index_40]));
                  if (!((Ai_12 == Gi_3308 && count_36 == 1) || (Ai_12 == Gi_3312 && count_36 == 0))) break;
                  Ld_48 = -Ld_48;
                  break;
               }
            }
            if (Ld_48 > Gd_2932 * MaxOpenValPosition) return (FALSE);
         }
      }
   }
   if (!f0_23(Ad_4, Ai_12, G_order_open_price_3004)) return (FALSE);
   if (Gi_2924 == Gi_2880 + 720) return (TRUE);
   if (Gi_2916) return (TRUE);
   if (!f0_41(Ad_4, Ai_12)) return (FALSE);
   if (dUseFilterMaxMin1 == 1) {
      ilow_80 = 0;
      ihigh_88 = 0;
      for (int Li_32 = 0; Li_32 < dMaxMin_Filter_CountBars1; Li_32++) {
         ilow_64 = iLow(G_symbol_2524, Gia_3332[dMaxMin_Filter_TimeFrame1], Li_32);
         ihigh_72 = iHigh(G_symbol_2524, Gia_3332[dMaxMin_Filter_TimeFrame1], Li_32);
         if (ilow_64 > 0.0)
            if (ilow_80 == 0.0 || ilow_64 < ilow_80) ilow_80 = ilow_64;
         if (ihigh_72 > 0.0)
            if (ihigh_88 == 0.0 || ihigh_72 > ihigh_88) ihigh_88 = ihigh_72;
      }
      if (Ai_12 == Gi_3308 && ihigh_88 > 0.0 && Ad_4 >= ihigh_88 * (1 - dMaxMin_LimitDistance_PR1 / 100.0)) return (FALSE);
      if (Ai_12 == Gi_3312 && ilow_80 > 0.0 && Ad_4 <= ilow_80 * (dMaxMin_LimitDistance_PR1 / 100.0 + 1.0)) return (FALSE);
   }
   if (dUseFilterMaxMin2 == 1) {
      ilow_80 = 0;
      ihigh_88 = 0;
      for (Li_32 = 0; Li_32 < dMaxMin_Filter_CountBars2; Li_32++) {
         ilow_64 = iLow(G_symbol_2524, Gia_3332[dMaxMin_Filter_TimeFrame2], Li_32);
         ihigh_72 = iHigh(G_symbol_2524, Gia_3332[dMaxMin_Filter_TimeFrame2], Li_32);
         if (ilow_64 > 0.0)
            if (ilow_80 == 0.0 || ilow_64 < ilow_80) ilow_80 = ilow_64;
         if (ihigh_72 > 0.0)
            if (ihigh_88 == 0.0 || ihigh_72 > ihigh_88) ihigh_88 = ihigh_72;
      }
      if (Ai_12 == Gi_3308 && ihigh_88 > 0.0 && Ad_4 >= ihigh_88 * (1 - dMaxMin_LimitDistance_PR2 / 100.0)) return (FALSE);
      if (Ai_12 == Gi_3312 && ilow_80 > 0.0 && Ad_4 <= ilow_80 * (dMaxMin_LimitDistance_PR2 / 100.0 + 1.0)) return (FALSE);
   }
   if (Gi_2712 == 1) {
      if (Ai_12 == Gi_3308 && Gd_3124 < 0.0) return (FALSE);
      if (Ai_12 == Gi_3312 && Gd_3124 > 0.0) return (FALSE);
   }
   if (Gi_2696 == 1) {
      if (Ai_12 == Gi_3308 && Gd_3132 < 0.0) return (FALSE);
      if (Ai_12 == Gi_3312 && Gd_3132 > 0.0) return (FALSE);
   }
   if (dUseTrendFilterOsMA == 1) {
      if (G_iosma_3200 != 0.0) {
         if (Ai_12 == Gi_3308 && G_iosma_3200 < 0.0) return (FALSE);
         if (Ai_12 == Gi_3312 && G_iosma_3200 > 0.0) return (FALSE);
      }
   }
   if (dUseTrendFilterSAR == 1) {
      if (Gd_3208 != 0.0) {
         if (Ai_12 == Gi_3308 && Gd_3208 > Ad_4) return (FALSE);
         if (Ai_12 == Gi_3312 && Gd_3208 < Ad_4) return (FALSE);
      }
   }
   if (Ai_28) {
      if (dUseTrendFilterADX == 1) {
         iadx_96 = iADX(G_symbol_2524, Gia_3332[diADX_Filter_TimeFrame], diADX_Filter_Period, diADX_Filter_TypePrice, MODE_PLUSDI, 0);
         iadx_104 = iADX(G_symbol_2524, Gia_3332[diADX_Filter_TimeFrame], diADX_Filter_Period, diADX_Filter_TypePrice, MODE_MINUSDI, 0);
         iadx_112 = iADX(G_symbol_2524, Gia_3332[diADX_Filter_TimeFrame], diADX_Filter_Period, diADX_Filter_TypePrice, MODE_MAIN, 0);
         if (iadx_96 != 0.0 && iadx_104 != 0.0 && iadx_112 >= diADX_Filter_ValueSignalTrend) {
            if (Ai_12 == Gi_3308 && iadx_104 > iadx_96) return (FALSE);
            if (Ai_12 == Gi_3312 && iadx_96 > iadx_104) return (FALSE);
         }
      }
      if (BlockOpenWorseOrder_Minutes > 0) {
         hist_total_44 = OrdersHistoryTotal();
         for (Li_32 = 0; Li_32 < hist_total_44; Li_32++) {
            if (OrderSelect(Li_32, SELECT_BY_POS, MODE_HISTORY)) {
               if (OrderSymbol() == G_symbol_2524) {
                  if (f0_15()) {
                     if (OrderType() == A_cmd_16) {
                        if (TimeCurrent() - OrderCloseTime() <= 60 * BlockOpenWorseOrder_Minutes) {
                           if (A_cmd_16 == OP_BUY) {
                              if (Ad_4 < OrderClosePrice()) continue;
                              return (FALSE);
                           }
                           if (A_cmd_16 == OP_SELL)
                              if (Ad_4 <= OrderClosePrice()) return (FALSE);
                        }
                     }
                  }
               }
            }
         }
      }
   }
   return (TRUE);
}

bool f0_17(double Ad_0, int Ai_8, double Ad_12) {
   int order_total_32;
   int count_36;
   int cmd_40;
   int ticket_44;
   double Ld_48;
   double Ld_56;
   if (Ai_8 == 0 || Ai_8 == 2)
      if (!f0_7(OP_BUYLIMIT, G_symbol_2524)) return (FALSE);
   if (Ai_8 == 1 || Ai_8 == 3)
      if (!f0_7(OP_SELLLIMIT, G_symbol_2524)) return (FALSE);
   if (Gi_2860 != 0) {
      count_36 = 0;
      order_total_32 = OrdersTotal();
      for (int pos_20 = 0; pos_20 < order_total_32; pos_20++) {
         if (OrderSelect(pos_20, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderSymbol() == G_symbol_2524)
               if (f0_15()) count_36++;
         }
      }
      while (count_36 >= Gi_2860) {
         Ld_56 = 0;
         for (pos_20 = 0; pos_20 < order_total_32; pos_20++) {
            if (OrderSelect(pos_20, SELECT_BY_POS, MODE_TRADES)) {
               if (OrderSymbol() == G_symbol_2524) {
                  if (f0_15()) {
                     cmd_40 = OrderType();
                     if (cmd_40 == OP_BUYLIMIT || cmd_40 == OP_BUYSTOP) Ld_48 = MathAbs(Gd_2556 - OrderOpenPrice());
                     else {
                        if (!(cmd_40 == OP_SELLLIMIT || cmd_40 == OP_SELLSTOP)) continue;
                        Ld_48 = MathAbs(Gd_2548 - OrderOpenPrice());
                     }
                     if (Ld_48 > Ld_56) {
                        Ld_56 = Ld_48;
                        ticket_44 = OrderTicket();
                     }
                  }
               }
            }
         }
         if (Ld_56 <= MathAbs(Ad_0 - Ad_12)) return (FALSE);
         if (f0_46(ticket_44)) {
            count_36--;
            order_total_32 = OrdersTotal();
         } else {
            return (FALSE);
            return (FALSE);
         }
      }
   }
   return (TRUE);
}

int f0_23(double Ad_0, int Ai_8, double &A_order_open_price_12) {
   int order_total_24;
   double Ld_28;
   double order_open_price_36;
   if (Gia_3108[Ai_8] == 0) return (1);
   if (Ai_8 == Gi_3308 && Gi_2664 == 0) return (0);
   if (Ai_8 == Gi_3312 && Gi_2668 == 0) return (0);
   if (Ai_8 == Gi_3308) {
      if (Gi_2664 == 1) {
         A_order_open_price_12 = Gda_3112[Ai_8];
         Ld_28 = Gda_3112[Ai_8] * Gd_2672 / 100.0;
         if (Ad_0 > A_order_open_price_12 - Ld_28) return (0);
      }
      if (Gi_2664 == 2) {
         A_order_open_price_12 = -1;
         order_total_24 = OrdersTotal();
         for (int pos_20 = 0; pos_20 < order_total_24; pos_20++) {
            if (OrderSelect(pos_20, SELECT_BY_POS, MODE_TRADES)) {
               if (OrderSymbol() == G_symbol_2524) {
                  if (f0_15()) {
                     if (OrderType() == OP_BUY) {
                        order_open_price_36 = OrderOpenPrice();
                        if (A_order_open_price_12 == -1.0 || MathAbs(Ad_0 - order_open_price_36) < MathAbs(Ad_0 - A_order_open_price_12)) A_order_open_price_12 = order_open_price_36;
                     }
                  }
               }
            }
         }
         if (A_order_open_price_12 != -1.0) {
            Ld_28 = A_order_open_price_12 * Gd_2672 / 100.0;
            if (MathAbs(Ad_0 - A_order_open_price_12) < Ld_28) return (0);
         }
      }
      if (Gi_2664 == 3) {
         A_order_open_price_12 = Gda_3116[Ai_8];
         Ld_28 = Gda_3116[Ai_8] * Gd_2672 / 100.0;
         if (Ad_0 < A_order_open_price_12 + Ld_28) return (0);
      }
   }
   if (Ai_8 == Gi_3312) {
      if (Gi_2668 == 1) {
         A_order_open_price_12 = Gda_3116[Ai_8];
         Ld_28 = Gda_3116[Ai_8] * Gd_2680 / 100.0;
         if (Ad_0 < A_order_open_price_12 + Ld_28) return (0);
      }
      if (Gi_2668 == 2) {
         A_order_open_price_12 = -1;
         order_total_24 = OrdersTotal();
         for (pos_20 = 0; pos_20 < order_total_24; pos_20++) {
            if (OrderSelect(pos_20, SELECT_BY_POS, MODE_TRADES)) {
               if (OrderSymbol() == G_symbol_2524) {
                  if (f0_15()) {
                     if (OrderType() == OP_SELL) {
                        order_open_price_36 = OrderOpenPrice();
                        if (A_order_open_price_12 == -1.0 || MathAbs(Ad_0 - order_open_price_36) < MathAbs(Ad_0 - A_order_open_price_12)) A_order_open_price_12 = order_open_price_36;
                     }
                  }
               }
            }
         }
         if (A_order_open_price_12 != -1.0) {
            Ld_28 = A_order_open_price_12 * Gd_2680 / 100.0;
            if (MathAbs(Ad_0 - A_order_open_price_12) < Ld_28) return (0);
         }
      }
      if (Gi_2668 == 3) {
         A_order_open_price_12 = Gda_3112[Ai_8];
         Ld_28 = Gda_3112[Ai_8] * Gd_2680 / 100.0;
         if (Ad_0 > A_order_open_price_12 - Ld_28) return (0);
      }
   }
   return (1);
}

bool f0_41(double Ad_0, int Ai_8) {
   for (int index_20 = 0; index_20 < Gi_2748; index_20++) {
      switch (index_20) {
      case 0:
         Gd_3156 = Gd_2752;
         break;
      case 1:
         Gd_3156 = Gd_2768;
         break;
      default:
         continue;
         if (Ai_8 == Gi_3308 && Gda_3140[index_20] > 0.0 && Ad_0 >= Gda_3140[index_20] + Ad_0 * Gd_3156 / 100.0) return (FALSE);
         if (!(Ai_8 == Gi_3312 && Gda_3144[index_20] > 0.0 && Ad_0 <= Gda_3144[index_20] - Ad_0 * Gd_3156 / 100.0)) continue;
         return (FALSE);
      }
   }
   return (TRUE);
}

double f0_0(int Ai_0) {
   double Ld_ret_4;
   if (Gda_2244[Ai_0] > 0.0) Ld_ret_4 = f0_28(AccountFreeMargin() / 1000.0 * Gda_2244[Ai_0], Gda_2500[Ai_0]);
   else Ld_ret_4 = Gda_2492[Ai_0];
   if (Ld_ret_4 < Gda_2492[Ai_0]) Ld_ret_4 = Gda_2492[Ai_0];
   if (Ld_ret_4 > Gda_2496[Ai_0]) Ld_ret_4 = Gda_2496[Ai_0];
   return (Ld_ret_4);
}

bool f0_39() {
   int cmd_16;
   double order_open_price_20;
   double order_lots_28;
   string Ls_36;
   string Ls_44;
   string Ls_52;
   int order_total_12 = OrdersTotal();
   for (int pos_0 = 0; pos_0 < Gi_3072; pos_0++) {
      Gda_3084[pos_0] = 0;
      Gda_3088[pos_0] = 0;
      Gda_3100[pos_0] = 0;
      Gda_3104[pos_0] = 0;
   }
   Gd_3216 = Gd_3148 * Gd_3148;
   for (pos_0 = 0; pos_0 < order_total_12; pos_0++) {
      if (!OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES)) return (FALSE);
      cmd_16 = OrderType();
      order_open_price_20 = OrderOpenPrice();
      order_lots_28 = OrderLots();
      if (f0_14(OrderSymbol(), CustomNameForCurrencyPair)) {
         for (int count_4 = 0; count_4 < 2; count_4++) {
            Ls_36 = f0_49(OrderSymbol(), count_4 + 1, CustomNameForCurrencyPair);
            for (int index_8 = 0; index_8 < Gi_3072; index_8++) {
               if (Gsa_3080[index_8] == Ls_36) {
                  if ((cmd_16 == OP_BUY && count_4 == 0) || (cmd_16 == OP_SELL && count_4 == 1)) {
                     Gda_3100[index_8] += order_lots_28;
                     if (!(f0_15())) break;
                     Gda_3084[index_8] += order_lots_28;
                     break;
                  }
                  if (!((cmd_16 == OP_BUY && count_4 == 1) || (cmd_16 == OP_SELL && count_4 == 0))) break;
                  Gda_3104[index_8] += order_lots_28;
                  if (!(f0_15())) break;
                  Gda_3088[index_8] += order_lots_28;
                  break;
               }
            }
         }
      }
   }
   if (PrintInfoOpenValPosition && order_total_12 != G_order_total_3076) {
      Ls_44 = "\nOpen VAL-position:";
      for (index_8 = 0; index_8 < Gi_3072; index_8++) {
         if (Gda_3084[index_8] - Gda_3088[index_8] == 0.0) Ls_52 = "0";
         else Ls_52 = DoubleToStr(Gda_3084[index_8] - Gda_3088[index_8], 2);
         if (Gda_3100[index_8] - Gda_3104[index_8] - (Gda_3084[index_8] - Gda_3088[index_8]) == 0.0) Ls_52 = Ls_52 + " / 0";
         else Ls_52 = Ls_52 + " / " + DoubleToStr(Gda_3100[index_8] - Gda_3104[index_8] - (Gda_3084[index_8] - Gda_3088[index_8]), 2);
         if (Gda_3100[index_8] - Gda_3104[index_8] == 0.0) Ls_52 = Ls_52 + " / 0";
         else Ls_52 = Ls_52 + " / " + DoubleToStr(Gda_3100[index_8] - Gda_3104[index_8], 2);
         Ls_44 = Ls_44 
            + "\n" 
         + Gsa_3080[index_8] + ": " + Ls_52;
      }
      Comment(Ls_44);
   }
   G_order_total_3076 = order_total_12;
   return (TRUE);
}

bool f0_3() {
   int cmd_16;
   int Li_20;
   double order_open_price_24;
   double order_lots_32;
   int order_total_12 = OrdersTotal();
   for (int pos_0 = 0; pos_0 < 6; pos_0++) {
      Gda_3112[pos_0] = -1;
      Gda_3116[pos_0] = -1;
      Gda_3120[pos_0] = 0;
      Gia_3108[pos_0] = 0;
   }
   for (pos_0 = 0; pos_0 < order_total_12; pos_0++) {
      if (!OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES)) return (FALSE);
      if (OrderSymbol() == G_symbol_2524) {
         if (f0_15()) {
            cmd_16 = OrderType();
            order_open_price_24 = OrderOpenPrice();
            order_lots_32 = OrderLots();
            Li_20 = f0_30(cmd_16);
            if (Li_20 == -1) return (FALSE);
            Gia_3108[Li_20]++;
            if (Gda_3112[Li_20] == -1.0 || order_open_price_24 < Gda_3112[Li_20]) Gda_3112[Li_20] = order_open_price_24;
            if (Gda_3116[Li_20] == -1.0 || order_open_price_24 > Gda_3116[Li_20]) Gda_3116[Li_20] = order_open_price_24;
            Gda_3120[Li_20] += order_lots_32;
         }
      }
   }
   return (TRUE);
}

int f0_48(string &Asa_0[], string As_4, string As_12 = ";", string As_20 = "<def>", string As_28 = "") {
   int Li_40;
   string Ls_48;
   string str_concat_56;
   string Ls_64;
   int count_44 = 0;
   ArrayResize(Asa_0, Gi_2200);
   for (int index_36 = 0; index_36 < Gi_2200; index_36++) {
      str_concat_56 = StringConcate

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

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

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

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

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

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

Стоимость полного кода
11 583,30₽ ≈ $141.57