Aladdin 5 FX
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «aladdin5fx.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Aladdin 5 FX — торговый советник для MetaTrader 4, разработанный компанией Finans Plus (2011). Советник анализирует ценовые данные с помощью набора технических индикаторов (скользящие средние, CCI, ATR, WPR, стохастик) на таймфрейме M15 и формирует сигналы на открытие и закрытие позиций. Поддерживает автоматическое управление размером лота с функцией восстановления баланса на основе истории сделок.
Основные возможности включают открытие ордеров BUY/SELL с установкой Stop Loss и Take Profit, размещение лимитных и стоп-ордеров, скользящий стоп-лосс (trailing stop), а также мониторинг спреда. Советник предоставляет гибкие фильтры для открытия и закрытия позиций, множественные магические номера и подробное логирование торговых операций.
Реализована система управления рисками с учётом свободного маржинального обеспечения, нормализация лотов и защита от превышения максимального размера позиции. Советник работает на текущем символе графика и позволяет настраивать параметры для длинных и коротких позиций независимо.
Настройки программы
| Настройка | Описание |
|---|---|
| EA_Name | Имя советника — Строковый параметр с именем торгового советника. |
| Creator | Автор — Строковый параметр с информацией об авторе. |
| Options1 | Настройки торговли — Строковый параметр группы торговых настроек. |
| CloseOnlyProfit | Закрытие только при прибыли — Переключатель: закрывать позиции только при наличии прибыли. |
| TakeProfit | Тейк-профит в пунктах — Расстояние тейк-профита в пунктах от цены открытия. |
| StopLoss | Стоп-лосс в пунктах — Расстояние стоп-лосса в пунктах от цены открытия. |
| MaxSpread | Максимальный спред — Допустимый максимальный спред в пунктах для торговли. |
| Slippage | Проскальгивание — Допустимое проскальгивание в пунктах. |
| Options2 | Настройки управления лотом — Строковый параметр группы настроек управления лотом. |
| AutoMM | Автоматическое управление лотом — Автоматическое управление лотом на основе свободного маржинального обеспечения (в долларах). |
| AutoMM_Max | Максимальный лот при авто-управлении — Максимальный размер лота при автоматическом управлении. |
| FixedLot | Фиксированный лот — Фиксированный размер лота при отключённом автоматическом управлении. |
| StartLot | Начальный лот — Начальный размер лота для расчёта при автоматическом управлении. |
| MaximalLot | Максимальный лот — Максимально допустимый размер лота. |
| RecoveryMode | Режим восстановления баланса — Переключатель: включить режим восстановления баланса с динамическим расчётом лота. |
| Options3 | Настройки восстановления — Строковый параметр группы настроек восстановления. |
| MaxAnalizCount | Максимум сделок для анализа — Максимальное количество исторических сделок для анализа при расчёте лота. |
| Risk | Процент риска — Процент риска для расчёта размера лота в режиме восстановления. |
| RiskFreeMargin | Коэффициент свободной маржи — Коэффициент свободного маржинального обеспечения для расчёта лота. |
| RiskMargin | Коэффициент маржинального ограничения — Коэффициент маржинального обеспечения для ограничения торговли. |
| MultiLotPercent | Множитель лота восстановления — Процентный множитель для расчёта лота в режиме восстановления баланса. |
| Options4 | Параметры ордеров — Строковый параметр группы параметров ордеров. |
| UseStopLevels | Использовать уровни стопа и профита — Переключатель: использовать ли уровни стоп-лосса и тейк-профита при открытии. |
| StopOrder | Расстояние стоп-ордера — Расстояние в пунктах для стоп-ордера открытия позиции. |
| TimeStopOrder | Время жизни стоп-ордера — Время жизни стоп-ордера в минутах. |
| IFStop | Расстояние стоп-ордера — Расстояние в пунктах для стоп-ордера открытия позиции. |
| KStop | Множитель стоп-ордера — Множитель для расчёта размера стоп-ордера. |
| ModifStop | Модификация стоп-ордеров — Переключатель: модифицировать ли стоп-ордера при удалении от цены. |
| OrderDol | Расстояние долларовой модели — Расстояние в пунктах для долларовой модели управления ордерами. |
| KDol | Множитель долларового лота — Множитель для расчёта размера лота при долларовой модели управления. |
| ModifDol | Модификация по долларовой модели — Переключатель: модифицировать ли ордера при смещении цены (долларовая модель). |
| ModifTake | Модификация тейк-профита — Переключатель: модифицировать ли тейк-профит при смещении цены. |
| LimitOrder | Расстояние лимитного ордера — Расстояние в пунктах для размещения лимитного ордера. |
| TimeL | Время жизни лимитного ордера — Время жизни лимитного ордера в минутах. |
| KLimit | Множитель лимитного ордера — Множитель для расчёта размера лимитного ордера. |
| DeleteLimit | Удаление лимитных ордеров — Переключатель: удалять ли лимитные ордера при определённых условиях. |
| DeleteLimitU | Удаление лимитных ордеров по фильтрам — Переключатель: удалять ли лимитные ордера при несработке фильтров. |
| ReversOrder | Расстояние реверсивного ордера — Расстояние в пунктах для реверсивного стоп-ордера. |
| KRevers | Множитель реверсивного ордера — Множитель для расчёта размера реверсивного стоп-ордера. |
| TimeRewers | Время жизни реверсивного ордера — Время жизни реверсивного ордера в минутах. |
| Options5 | Настройки trailing stop — Строковый параметр группы настроек скользящего стопа. |
| TrailingStop | Расстояние скользящего стопа — Расстояние в пунктах для активации скользящего стоп-лосса. |
| TrailingStep | Шаг скользящего стопа — Шаг приращения для скользящего стоп-лосса. |
| Utral | Расстояние активации скользящего стопа — Расстояние в пунктах для активации скользящего стоп-лосса (альтернативный параметр). |
| Options6 | Профессиональные настройки — Строковый параметр группы профессиональных настроек. |
| Long | Разрешить длинные позиции — Переключатель: разрешить открытие длинных позиций (BUY). |
| Short | Разрешить короткие позиции — Переключатель: разрешить открытие коротких позиций (SELL). |
| NormalizeLot | Нормализация лота — Разрядность нормализации размера лота. |
| WriteLog | Торговый журнал — Переключатель: записывать ли торговый журнал. |
| WriteDebugLog | Журнал отладки — Переключатель: записывать ли подробный журнал отладки. |
| PrintLogOnChart | Логи на графике — Переключатель: отображать ли логи на графике. |
| MagicNumber | Магический номер основной — Магический номер для идентификации ордеров основного типа. |
| MagicNumber1 | Магический номер дополнительный 1 — Магический номер для идентификации ордеров дополнительного типа 1. |
| MagicNumber2 | Магический номер дополнительный 2 — Магический номер для идентификации ордеров дополнительного типа 2. |
| MagicNumber3 | Магический номер дополнительный 3 — Магический номер для идентификации ордеров дополнительного типа 3. |
| MagicNumber4 | Магический номер дополнительный 4 — Магический номер для идентификации ордеров дополнительного типа 4. |
| Options7 | Настройки оптимизации — Строковый параметр группы настроек оптимизации. |
| _NotLoss | Настройка отсутствия убытка — Строковый параметр настройки отсутствия убытка. |
| SecProfit | Расстояние корректировки стоп-лосса — Расстояние в пунктах для корректировки стоп-лосса после получения прибыли. |
| SecProfitTr | Расстояние корректировки при большой прибыли — Расстояние в пунктах для корректировки стоп-лосса после значительной прибыли. |
| MaxLossPoints | Максимальный убыток в пунктах — Максимальный убыток в пунктах для фильтра закрытия позиции. |
| _Indicator_Long | Индикатор для длинных позиций — Строковый параметр выбора индикатора для длинных позиций. |
| iMA_PeriodLONG | Период СМА для длинной позиции — Период индикатора скользящей средней для длинной позиции. |
| iCCI_PeriodLONG | Период CCI для длинной позиции — Период индикатора CCI для расчёта сигнала длинной позиции. |
| iATR_PeriodLONG | Период ATR для длинной позиции — Период индикатора ATR для расчёта сигнала длинной позиции. |
| iWPR_PeriodLONG | Период WPR для длинной позиции — Период индикатора WPR для длинной позиции. |
| iMA_LONG_Open_a | Параметр СМА длинной позиции (а) — Параметр скользящей средней для сигнала открытия длинной позиции (значение а). |
| iMA_LONG_Open_b | Параметр СМА длинной позиции (b) — Параметр скользящей средней для сигнала открытия длинной позиции (значение b). |
| iWPR_LONG_Open_a | Параметр WPR длинной позиции (а) — Параметр WPR для сигнала открытия длинной позиции (значение а). |
| iWPR_LONG_Open_b | Параметр WPR длинной позиции (b) — Параметр WPR для сигнала открытия длинной позиции (значение b). |
| _Indicator_Short | Индикатор для коротких позиций — Строковый параметр выбора индикатора для коротких позиций. |
| iMA_PeriodShort | Период СМА для короткой позиции — Период индикатора скользящей средней для короткой позиции. |
| iCCI_PeriodShort | Период CCI для короткой позиции — Период индикатора CCI для расчёта сигнала короткой позиции. |
| iATR_PeriodShort | Период ATR для короткой позиции — Период индикатора ATR для расчёта сигнала короткой позиции. |
| iWPR_PeriodShort | Период WPR для короткой позиции — Период индикатора WPR для короткой позиции. |
| iMA_Short_Open_a | Параметр СМА короткой позиции (а) — Параметр скользящей средней для сигнала открытия короткой позиции (значение а). |
| iMA_Short_Open_b | Параметр СМА короткой позиции (b) — Параметр скользящей средней для сигнала открытия короткой позиции (значение b). |
| iWPR_Short_Open_a | Параметр WPR короткой позиции (а) — Параметр WPR для сигнала открытия короткой позиции (значение а). |
| iWPR_Short_Open_b | Параметр WPR короткой позиции (b) — Параметр WPR для сигнала открытия короткой позиции (значение b). |
| _AddOpenFilters | Дополнительные фильтры открытия — Строковый параметр дополнительных фильтров открытия. |
| FilterATR | Фильтр ATR — Множитель фильтра ATR для определения достаточной волатильности при открытии позиций. |
| iCCI_OpenFilter | Порог CCI для фильтра открытия — Пороговое значение CCI для фильтра открытия позиции. |
| _CloseOrderFilters | Дополнительные фильтры закрытия — Строковый параметр дополнительных фильтров закрытия. |
| Price_Filter_Close | Фильтр закрытия по цене — Расстояние в пунктах для фильтра закрытия позиции по цене. |
| iWPR_Filter_Close | Порог WPR для фильтра закрытия — Пороговое значение WPR для фильтра закрытия позиции. |
| End | Завершение — Строковый параметр-завершение. |
Поиск по коду файла
extern string EA_Name = "Aladdin 5 FX";
extern string Creator = "Copyright ? 2011, Finans Plus Company";
extern string Options1 = "-------Trading-------";
int gi_104 = 3;
extern bool CloseOnlyProfit = TRUE;
extern int TakeProfit = 34;
extern int StopLoss = 22;
extern double MaxSpread = 2.0;
extern double Slippage = 2.0;
extern string Options2 = "-------MoneyManagement-------";
extern double AutoMM = 10.0;
extern double AutoMM_Max = 20.0;
extern double FixedLot = 0.01;
extern double StartLot = 0.0;
extern double MaximalLot = 1000.0;
extern bool RecoveryMode = TRUE;
extern string Options3 = "---If RecoveryMode = TRUE, setup---";
extern int MaxAnalizCount = 50;
extern double Risk = 25.0;
extern double RiskFreeMargin = 0.5;
extern double RiskMargin = 0.0;
extern double MultiLotPercent = 2.0;
extern string Options4 = "-------Parametres Orders-------";
extern bool UseStopLevels = TRUE;
extern double StopOrder = 0.0;
extern double TimeStopOrder = 20.0;
extern int IFStop = 20;
extern double KStop = 1.0;
extern bool ModifStop = TRUE;
bool gi_276 = TRUE;
extern double OrderDol = 2.0;
extern double KDol = 2.0;
extern bool ModifDol = FALSE;
extern bool ModifTake = FALSE;
extern double LimitOrder = 0.0;
extern double TimeL = 11.0;
extern double KLimit = 1.5;
extern bool DeleteLimit = TRUE;
extern bool DeleteLimitU = TRUE;
extern int ReversOrder = 0;
extern double KRevers = 2.0;
extern double TimeRewers = 11.0;
extern string Options5 = "-------Trailing-------";
extern double TrailingStop = 0.0;
extern double TrailingStep = 0.0;
extern double Utral = 10.0;
extern string Options6 = "-------Professional options-------";
extern bool Long = TRUE;
extern bool Short = TRUE;
extern int NormalizeLot = 2;
int g_timeframe_408 = PERIOD_M5;
double gd_412 = 10.0;
bool gi_420 = FALSE;
extern bool WriteLog = TRUE;
extern bool WriteDebugLog = TRUE;
extern bool PrintLogOnChart = TRUE;
string gs_unused_436 = "????? ???????? ?????";
bool gi_444 = FALSE;
double gd_448 = 14.0;
double gd_456 = 1.0;
double gd_464 = 5.0;
double gd_472 = 1.0;
double gd_480 = 0.0;
double gd_488 = 6.0;
extern int MagicNumber = 567833;
extern int MagicNumber1 = 567834;
extern int MagicNumber2 = 567835;
extern int MagicNumber3 = 567836;
extern int MagicNumber4 = 567837;
int g_color_516 = Gold;
int g_color_520 = Lime;
extern string Options7 = "-------Optimization-------";
extern string _NotLoss = "---";
extern int SecProfit = 2;
extern int SecProfitTr = 8;
extern int MaxLossPoints = -65;
double g_pips_552 = 0.0;
extern string _Indicator_Long = "---";
extern int iMA_PeriodLONG = 55;
extern int iCCI_PeriodLONG = 18;
extern int iATR_PeriodLONG = 14;
extern int iWPR_PeriodLONG = 11;
extern int iMA_LONG_Open_a = 18;
extern int iMA_LONG_Open_b = 39;
extern int iWPR_LONG_Open_a = 1;
extern int iWPR_LONG_Open_b = 5;
extern string _Indicator_Short = "---";
extern int iMA_PeriodShort = 55;
extern int iCCI_PeriodShort = 18;
extern int iATR_PeriodShort = 14;
extern int iWPR_PeriodShort = 11;
extern int iMA_Short_Open_a = 15;
extern int iMA_Short_Open_b = 39;
extern int iWPR_Short_Open_a = 1;
extern int iWPR_Short_Open_b = 5;
extern string _AddOpenFilters = "---";
extern int FilterATR = 6;
extern double iCCI_OpenFilter = 150.0;
extern string _CloseOrderFilters = "---";
extern int Price_Filter_Close = 14;
extern int iWPR_Filter_Close = 90;
extern string End = "*** Good Luck ***";
double gd_684;
int gi_692;
int gi_unused_696 = 0;
int gi_700;
double gd_704;
string gs_712;
double gd_720 = 3.0;
int g_slippage_728;
int g_slippage_732;
int gi_736 = 1;
double gd_740;
bool gi_748;
string g_comment_752 = "Aladdin5FX";
int gi_760 = 0;
double g_minlot_764 = 0.01;
double gd_772 = 0.01;
double g_lotstep_780 = 0.01;
int gi_788 = 100000;
double g_marginrequired_792 = 1000.0;
double gd_800 = 1.0;
double gd_808;
int gi_816;
int gi_820;
int gi_824;
int gi_828;
int gi_832;
int gi_836;
int g_color_840 = Green;
int g_color_844 = Red;
int g_color_848 = DodgerBlue;
int g_color_852 = DeepPink;
bool gi_856 = TRUE;
string gs_860 = "alert.wav";
string gs_unused_868 = "alert.wav";
int gi_876 = 1;
bool gi_880 = FALSE;
void init() {
// код доступен только после оплаты
}
int deinit() {
if (ObjectFind("BKGR") >= 0) ObjectDelete("BKGR");
if (ObjectFind("BKGR2") >= 0) ObjectDelete("BKGR2");
if (ObjectFind("BKGR3") >= 0) ObjectDelete("BKGR3");
if (ObjectFind("BKGR4") >= 0) ObjectDelete("BKGR4");
if (ObjectFind("LV") >= 0) ObjectDelete("LV");
return (0);
}
int start() {
// код доступен только после оплаты
}
void f0_0() {
if (f0_9() == 1) {
if ((!gi_748) && WriteDebugLog) {
Print("???????? ?????? ???????? ??-?? ???????? ??????.");
Print("??????? ????? = ", DoubleToStr((Ask - Bid) / gd_684, 1), ", MaxSpread = ", DoubleToStr(MaxSpread, 1));
Print("??????? ????? ????????? ?????, ????? ????? ?????? ??????????.");
}
gi_748 = TRUE;
return;
}
gi_748 = FALSE;
if (f0_4() && f0_11() && Long) f0_1(OP_BUY);
if (f0_5() && f0_11() && Short) f0_1(OP_SELL);
}
int f0_1(int a_cmd_0) {
int li_40;
double order_open_price_44;
color color_52;
int ticket_56;
int error_60;
string ls_64;
double order_open_price_72;
double ld_80;
double ld_88;
bool li_4 = FALSE;
bool li_8 = FALSE;
bool li_12 = FALSE;
bool li_16 = FALSE;
int li_unused_20 = 0;
int li_unused_24 = 0;
for (int pos_28 = OrdersTotal() - 1; pos_28 >= 0; pos_28--) {
if (OrderSelect(pos_28, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == Symbol()) {
if (OrderType() == OP_BUYLIMIT && OrderMagicNumber() == MagicNumber) li_4 = TRUE;
if (OrderType() == OP_SELLLIMIT && OrderMagicNumber() == MagicNumber) li_8 = TRUE;
if (OrderType() == OP_SELLSTOP && OrderMagicNumber() == MagicNumber) li_16 = TRUE;
if (OrderType() == OP_BUYSTOP && OrderMagicNumber() == MagicNumber) li_12 = TRUE;
}
}
bool li_32 = FALSE;
bool li_36 = FALSE;
double ld_96 = NormalizeDouble(TakeProfit * gd_684, gi_692);
double ld_104 = NormalizeDouble(StopLoss * gd_684, gi_692);
if (gi_760 > 0) {
MathSrand(TimeLocal());
li_40 = MathRand() % gi_760;
if (WriteLog) Print("DelayRandomiser: ???????? ", li_40, " ??????.");
Sleep(1000 * li_40);
}
double ld_112 = gd_808;
if (StartLot > 0.0) ld_112 = StartLot;
if (AccountFreeMarginCheck(gs_712, a_cmd_0, ld_112) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) {
if (!(WriteDebugLog)) return (-1);
Print("??? ???????? ?????? ???????????? ????????? ?????.");
Comment("??? ???????? ?????? ???????????? ????????? ?????.");
return (-1);
}
RefreshRates();
if (a_cmd_0 == OP_BUY) {
li_32 = TRUE;
order_open_price_72 = NormalizeDouble(Ask, Digits);
color_52 = g_color_840;
if (UseStopLevels) {
ld_80 = NormalizeDouble(order_open_price_72 + ld_96, Digits);
ld_88 = NormalizeDouble(order_open_price_72 - ld_104, Digits);
} else {
ld_80 = 0;
ld_88 = 0;
}
} else {
li_36 = TRUE;
order_open_price_72 = NormalizeDouble(Bid, Digits);
color_52 = g_color_844;
if (UseStopLevels) {
ld_80 = NormalizeDouble(order_open_price_72 - ld_96, Digits);
ld_88 = NormalizeDouble(order_open_price_72 + ld_104, Digits);
} else {
ld_80 = 0;
ld_88 = 0;
}
}
int li_120 = gi_736;
while (li_120 > 0 && f0_11()) {
if (gi_276 == TRUE && li_32 == TRUE) OrderSend(gs_712, OP_BUY, ld_112, NormalizeDouble(Ask, Digits), g_slippage_728, 0, 0, g_comment_752, MagicNumber, 0, color_52);
if (gi_276 == TRUE && li_36 == TRUE) OrderSend(gs_712, OP_SELL, ld_112, NormalizeDouble(Bid, Digits), g_slippage_728, 0, 0, g_comment_752, MagicNumber, 0, color_52);
if (LimitOrder > 0.0 && li_32 == TRUE && li_4 == FALSE) OrderSend(gs_712, OP_BUYLIMIT, ld_112, NormalizeDouble(Bid - LimitOrder * Point * gi_700, Digits), g_slippage_728, 0, 0, g_comment_752, MagicNumber, 0, color_52);
if (LimitOrder > 0.0 && li_36 == TRUE && li_8 == FALSE) OrderSend(gs_712, OP_SELLLIMIT, ld_112, NormalizeDouble(Ask + LimitOrder * Point * gi_700, Digits), g_slippage_728, 0, 0, g_comment_752, MagicNumber, 0, color_52);
if (ReversOrder > 0 && li_32 == TRUE && li_16 == FALSE) {
OrderSend(gs_712, OP_SELLSTOP, KRevers * ld_112, NormalizeDouble(Bid - ReversOrder * Point * gi_700, Digits), g_slippage_728, 0, 0, "R", MagicNumber, TimeCurrent() +
60.0 * TimeRewers, color_52);
}
if (ReversOrder > 0 && li_36 == TRUE && li_12 == FALSE) {
OrderSend(gs_712, OP_BUYSTOP, KRevers * ld_112, NormalizeDouble(Ask + ReversOrder * Point * gi_700, Digits), g_slippage_728, 0, 0, "R", MagicNumber, TimeCurrent() +
60.0 * TimeRewers, color_52);
}
Sleep(MathRand() / 1000);
if (ticket_56 < 0) {
error_60 = GetLastError();
if (WriteDebugLog) {
if (a_cmd_0 == OP_BUY) ls_64 = "OP_BUY";
else ls_64 = "OP_SELL";
Print("????????: OrderSend(", ls_64, ") ?????? = ", f0_16(error_60));
}
if (error_60 != 136/* OFF_QUOTES */) break;
if (!(gi_880)) break;
Sleep(6000);
RefreshRates();
if (a_cmd_0 == OP_BUY) order_open_price_44 = NormalizeDouble(Ask, Digits);
else order_open_price_44 = NormalizeDouble(Bid, Digits);
if (NormalizeDouble(MathAbs((order_open_price_44 - order_open_price_72) / gd_684), 0) > gi_876) break;
order_open_price_72 = order_open_price_44;
li_120--;
if (li_120 > 0)
if (WriteLog) Print("... ???????? ??????? ?????.");
} else {
if (OrderSelect(ticket_56, SELECT_BY_TICKET)) order_open_price_72 = OrderOpenPrice();
if (!(gi_856)) break;
PlaySound(gs_860);
break;
}
}
return (ticket_56);
}
void f0_2() {
bool bool_0;
int error_8;
int li_12;
string ls_16;
int li_4 = OrdersTotal() - 1;
for (int pos_24 = li_4; pos_24 >= 0; pos_24--) {
if (OrderSelect(pos_24, SELECT_BY_POS, MODE_TRADES)) {
if (OrderType() == OP_BUY) {
if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() == 0.0 && OrderTakeProfit() == 0.0) {
bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - StopLoss * Point * gi_700, Digits), NormalizeDouble(OrderOpenPrice() + TakeProfit * Point * gi_700,
Digits), 0, Blue);
}
}
if (OrderType() == OP_SELL) {
if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() == 0.0 && OrderTakeProfit() == 0.0) {
bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + StopLoss * Point * gi_700, Digits), NormalizeDouble(OrderOpenPrice() - TakeProfit * Point * gi_700,
Digits), 0, Blue);
}
}
if (OrderType() == OP_BUY)
if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() == 0.0 && OrderTakeProfit() != 0.0) bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - StopLoss * Point * gi_700, Digits), OrderTakeProfit(), 0, Blue);
if (OrderType() == OP_SELL)
if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() == 0.0 && OrderTakeProfit() != 0.0) bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + StopLoss * Point * gi_700, Digits), OrderTakeProfit(), 0, Blue);
if (OrderType() == OP_BUY)
if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() != 0.0 && OrderTakeProfit() == 0.0) bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(OrderOpenPrice() + TakeProfit * Point * gi_700, Digits), 0, Blue);
if (OrderType() == OP_SELL)
if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712 && OrderStopLoss() != 0.0 && OrderTakeProfit() == 0.0) bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(OrderOpenPrice() - TakeProfit * Point * gi_700, Digits), 0, Blue);
if (OrderType() == OP_BUY) {
if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712) {
if (Bid - OrderOpenPrice() > SecProfitTr * gd_684 && MathAbs(OrderOpenPrice() + SecProfit * gd_684 - OrderStopLoss()) >= Point && NormalizeDouble(OrderOpenPrice() +
SecProfit * gd_684, Digits) - Point >= OrderStopLoss()) {
bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + SecProfit * gd_684, Digits), OrderTakeProfit(), 0, Blue);
if (!bool_0) {
error_8 = GetLastError();
if (WriteDebugLog) Print("????????? ?????? ?? ????? ??????????? ?????? (", ls_16, ",", li_12, "). ???????: ", f0_16(error_8));
}
}
}
}
if (OrderType() == OP_SELL) {
if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1 && OrderSymbol() == gs_712) {
if (OrderOpenPrice() - Ask > SecProfitTr * gd_684 && MathAbs(OrderOpenPrice() - SecProfit * gd_684 - OrderStopLoss()) >= Point && NormalizeDouble(OrderOpenPrice() - SecProfit * gd_684,
Digits) + Point <= OrderStopLoss()) {
bool_0 = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - SecProfit * gd_684, Digits), OrderTakeProfit(), 0, Red);
if (!bool_0) {
error_8 = GetLastError();
if (WriteDebugLog) Print("????????? ?????? ?? ????? ??????????? ?????? (", ls_16, ",", li_12, "). ???????: ", f0_16(error_8));
}
}
}
}
if (TrailingStop > 1.0 && OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1) {
if (OrderType() == OP_SELL && OrderOpenPrice() - Ask > Utral * Point * gi_700) {
if (TrailingStop > 0.0 && TrailingStop > 1.0) {
if (OrderOpenPrice() - Ask > TrailingStop * Point * gi_700)
if (OrderStopLoss() - Point * TrailingStep * gi_700 > Ask + Point * TrailingStop * gi_700 && Ask + Point * TrailingStop * gi_700 <= OrderStopLoss() - Point) OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop * gi_700, OrderTakeProfit(), 0, CLR_NONE);
}
} else {
if (OrderType() == OP_BUY && Bid - OrderOpenPrice() > Utral * Point * gi_700) {
if (TrailingStop > 0.0 && TrailingStop > 1.0) {
if (Bid - OrderOpenPrice() > TrailingStop * Point * gi_700)
if (OrderStopLoss() + Point * TrailingStep * gi_700 < Bid - Point * TrailingStop * gi_700 && Bid - Point * TrailingStop * gi_700 >= OrderStopLoss() + Point) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop * gi_700, OrderTakeProfit(), 0, CLR_NONE);
}
}
}
}
if (TrailingStop < 1.0 && OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1) {
if (OrderType() == OP_SELL && TrailingStop < 1.0) {
if (TrailingStop <= 0.0) continue;
if (OrderOpenPrice() - Ask <= Utral * Point * gi_700) continue;
if (!(OrderStopLoss() - Point * TrailingStep * gi_700 > Ask + (OrderOpenPrice() - Ask) * TrailingStop && Ask + (OrderOpenPrice() - Ask) * TrailingStop <= OrderStopLoss() - Point)) continue;
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + (OrderOpenPrice() - Ask) * TrailingStop, OrderTakeProfit(), 0, CLR_NONE);
continue;
}
if (OrderType() == OP_BUY) {
if (TrailingStop > 0.0 && TrailingStop < 1.0) {
if (Bid - OrderOpenPrice() > Utral * Point * gi_700) {
if (OrderStopLoss() + Point * TrailingStep * gi_700 < Bid - (Bid - OrderOpenPrice()) * TrailingStop && Bid - (Bid - OrderOpenPrice()) * TrailingStop >= OrderStopLoss() +
Point) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - (Bid - OrderOpenPrice()) * TrailingStop, OrderTakeProfit(), 0, CLR_NONE);
}
}
}
}
}
}
}
void f0_3() {
int error_28;
int ticket_32;
string cmd_36;
int li_unused_0 = 0;
int li_unused_4 = 0;
int li_12 = OrdersTotal() - 1;
int count_16 = 0;
int count_20 = 0;
int li_24 = 3;
for (int pos_48 = li_12; pos_48 >= 0; pos_48--) {
if (OrderSelect(pos_48, SELECT_BY_POS, MODE_TRADES)) {
ticket_32 = OrderTicket();
cmd_36 = OrderType();
if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber1) {
if (OrderType() == OP_BUY && OrderSymbol() == gs_712) {
count_16++;
if (CloseOnlyProfit == FALSE) {
if (Bid >= OrderOpenPrice() + TakeProfit * gd_684 || Bid <= OrderOpenPrice() - StopLoss * gd_684 || f0_6(OrderOpenPrice(), f0_10())) {
for (int li_44 = 1; li_44 <= MathMax(1, li_24); li_44++) {
RefreshRates();
if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), g_slippage_732, g_color_848)) {
count_16--;
break;
}
error_28 = GetLastError();
if (WriteDebugLog) Print("????????? ?????? ?? ????? ???????? ?????? (", cmd_36, ",", ticket_32, "). ???????: ", f0_16(error_28));
}
}
}
if (CloseOnlyProfit == TRUE) {
if (Bid >= OrderOpenPrice() + gi_700 * Point && Bid >= OrderOpenPrice() + TakeProfit * gd_684 || Bid <= OrderOpenPrice() - StopLoss * gd_684 || f0_6(OrderOpenPrice(),
f0_10())) {
for (li_44 = 1; li_44 <= MathMax(1, li_24); li_44++) {
RefreshRates();
if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), g_slippage_732, g_color_848)) {
count_16--;
break;
}
error_28 = GetLastError();
if (WriteDebugLog) Print("????????? ?????? ?? ????? ???????? ?????? (", cmd_36, ",", ticket_32, "). ???????: ", f0_16(error_28));
}
}
}
}
if (OrderType() == OP_SELL && OrderSymbol() == gs_712) {
count_20++;
if (CloseOnlyProfit == FALSE) {
if (Ask <= OrderOpenPrice() - TakeProfit * gd_684 || Ask >= OrderOpenPrice() + StopLoss * gd_684 || f0_7(OrderOpenPrice(), f0_10())) {
for (li_44 = 1; li_44 <= MathMax(1, li_24); li_44++) {
RefreshRates();
if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), g_slippage_732, g_color_852)) {
count_20--;
break;
}
error_28 = GetLastError();
if (WriteDebugLog) Print("????????? ?????? ?? ????? ???????? ?????? (", cmd_36, ",", ticket_32, "). ???????: ", f0_16(error_28));
}
}
}
if (CloseOnlyProfit == TRUE) {
if (Ask <= OrderOpenPrice() - gi_700 * Point && Ask <= OrderOpenPrice() - TakeProfit * gd_684 || Ask >= OrderOpenPrice() + StopLoss * gd_684 || f0_7(OrderOpenPrice(),
f0_10())) {
for (li_44 = 1; li_44 <= MathMax(1, li_24); li_44++) {
RefreshRates();
if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), g_slippage_732, g_color_852)) {
count_20--;
break;
}
error_28 = GetLastError();
if (WriteDebugLog) Print("????????? ?????? ?? ????? ???????? ?????? (", cmd_36, ",", ticket_32, "). ???????: ", f0_16(error_28));
}
}
}
}
}
}
}
}
int f0_4() {
int li_unused_0 = 0;
bool li_ret_4 = FALSE;
bool li_8 = FALSE;
bool li_12 = FALSE;
bool li_16 = FALSE;
double iclose_20 = iClose(NULL, PERIOD_M15, 1);
double ima_28 = iMA(NULL, PERIOD_M15, iMA_PeriodLONG, 0, MODE_SMMA, PRICE_HIGH, 1);
double istochastic_36 = iStochastic(NULL, PERIOD_M15, iWPR_PeriodLONG, 1, 1, MODE_SMA, 0, MODE_MAIN, 1);
double iatr_44 = iATR(NULL, PERIOD_M15, iATR_PeriodLONG, 1);
double icci_52 = iCCI(NULL, PERIOD_M15, iCCI_PeriodLONG, PRICE_TYPICAL, 1);
double ld_60 = NormalizeDouble(iMA_LONG_Open_a * gd_684, gi_692);
double ld_68 = NormalizeDouble(iMA_LONG_Open_b * gd_684, gi_692);
double bid_76 = Bid;
if (iatr_44 <= FilterATR * gd_684) return (0);
if (iclose_20 - ima_28 > ld_60 && iclose_20 - bid_76 >= (-gd_704) && gi_816 > istochastic_36) li_8 = TRUE;
else li_8 = FALSE;
if (iclose_20 - ima_28 > ld_68 && iclose_20 - bid_76 >= (-gd_704) && (-iCCI_OpenFilter) > icci_52) li_12 = TRUE;
else li_12 = FALSE;
if (iclose_20 - ima_28 > ld_68 && iclose_20 - bid_76 >= (-gd_704) && gi_820 > istochastic_36) li_16 = TRUE;
else li_16 = FALSE;
if (li_8 == TRUE || li_12 == TRUE || li_16 == TRUE) li_ret_4 = TRUE;
else li_ret_4 = FALSE;
return (li_ret_4);
}
int f0_5() {
int li_unused_0 = 0;
bool li_ret_4 = FALSE;
bool li_8 = FALSE;
bool li_12 = FALSE;
bool li_16 = FALSE;
double iclose_20 = iClose(NULL, PERIOD_M15, 1);
double ima_28 = iMA(NULL, PERIOD_M15, iMA_PeriodShort, 0, MODE_SMMA, PRICE_LOW, 1);
double istochastic_36 = iStochastic(NULL, PERIOD_M15, iWPR_PeriodShort, 1, 1, MODE_SMA, 0, MODE_MAIN, 1);
double iatr_44 = iATR(NULL, PERIOD_M15, iATR_PeriodShort, 1);
double icci_52 = iCCI(NULL, PERIOD_M15, iCCI_PeriodShort, PRICE_TYPICAL, 1);
double ld_60 = NormalizeDouble(iMA_Short_Open_a * gd_684, gi_692);
double ld_68 = NormalizeDouble(iMA_Short_Open_b * gd_684, gi_692);
double bid_76 = Bid;
if (iatr_44 <= FilterATR * gd_684) return (0);
if (ima_28 - iclose_20 > ld_60 && iclose_20 - bid_76 <= gd_704 && istochastic_36 > gi_824) li_8 = TRUE;
else li_8 = FALSE;
if (ima_28 - iclose_20 > ld_68 && iclose_20 - bid_76 <= gd_704 && icci_52 > iCCI_OpenFilter) li_12 = TRUE;
else li_12 = FALSE;
if (ima_28 - iclose_20 > ld_68 && iclose_20 - bid_76 <= gd_704 && istochastic_36 > gi_828) li_16 = TRUE;
else li_16 = FALSE;
if (li_8 == TRUE || li_12 == TRUE || li_16 == TRUE) li_ret_4 = TRUE;
else li_ret_4 = FALSE;
return (li_ret_4);
}
int f0_6(double ad_0, int ai_8) {
bool li_ret_12 = FALSE;
bool li_16 = FALSE;
bool li_20 = FALSE;
double istochastic_24 = iStochastic(NULL, PERIOD_M15, iWPR_PeriodLONG, 1, 1, MODE_SMA, 0, MODE_SIGNAL, 1);
double iclose_32 = iClose(NULL, PERIOD_M15, 1);
double iopen_40 = iOpen(NULL, PERIOD_M1, 1);
double iclose_48 = iClose(NULL, PERIOD_M1, 1);
double ld_56 = NormalizeDouble((-MaxLossPoints) * gd_684, gi_692);
double ld_64 = NormalizeDouble(Price_Filter_Close * gd_684, gi_692);
double bid_72 = Bid;
if (ad_0 - bid_72 <= ld_56 && iclose_32 - bid_72 <= gd_704 && istochastic_24 > gi_832 && ai_8 == 1) li_16 = TRUE;
else li_16 = FALSE;
if (iopen_40 > iclose_48 && bid_72 - ad_0 >= ld_64 && ai_8 == 1) li_20 = TRUE;
else li_20 = FALSE;
if (li_16 == TRUE || li_20 == TRUE) li_ret_12 = TRUE;
else li_ret_12 = FALSE;
return (li_ret_12);
}
int f0_7(double ad_0, int ai_8) {
bool li_ret_12 = FALSE;
bool li_16 = FALSE;
bool li_20 = FALSE;
double istochastic_24 = iStochastic(NULL, PERIOD_M15, iWPR_PeriodShort, 1, 1, MODE_SMA, 0, MODE_SIGNAL, 1);
double iclose_32 = iClose(NULL, PERIOD_M15, 1);
double iopen_40 = iOpen(NULL, PERIOD_M1, 1);
double iclose_48 = iClose(NULL, PERIOD_M1, 1);
double ld_56 = NormalizeDouble((-MaxLossPoints) * gd_684, gi_692);
double ld_64 = NormalizeDouble(Price_Filter_Close * gd_684, gi_692);
double bid_72 = Bid;
double ask_80 = Ask;
if (ask_80 - ad_0 <= ld_56 && iclose_32 - bid_72 >= (-gd_704) && istochastic_24 < gi_836 && ai_8 == 1) li_16 = TRUE;
else li_Показано первые 50% кода (символов: 43324)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.