GEPARD 8
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «gepard8_edu.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.