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

wallstreetforexrobot_v4.5_nodll

wallstreetforexrobot_v4.5_nodll.mq4
Вы автор или правообладатель?

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

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

О программе

Wall Street Forex Robot — торговый советник для MetaTrader 4, который анализирует ценовые данные с использованием индикаторов (Moving Average, Williams %R, ATR, CCI) на таймфрейме M15 и автоматически открывает и закрывает позиции на основании сформированных торговых сигналов. Советник поддерживает управление рисками через стоп-лосс, тейк-профит и secure profit, а также включает фильтр новостей, скачивающий данные экономического календаря с wallstreet-forex.com для предотвращения торговли важных событий.

Робот предлагает функции управления капиталом: AutoMM для автоматического расчёта лотов на основе свободного маржинального баланса, режим восстановления позиций после убытков, а также скрытый режим торговли. Торговля может ограничиваться по времени (час начала в понедельник, выход в пятницу) и правилами NFA/FIFO. Поддерживаются пользовательские настройки для различных валютных пар с индивидуальными оптимизационными параметрами.

Версия «nodll» исключает зависимость от проприетарной библиотеки WALLSTREET.dll (ее импорт закомментирован), реализуя логику сигналов непосредственно в MQL4-коде. Для работы фильтра новостей по-прежнему используется интернет-соединение через стандартный WinInet API.

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

НастройкаОписание
Magic Магический номер — Магический номер для идентификации ордеров, открытых данным советником
EA_Comment Комментарий советника — Текстовый комментарий, добавляемый к открытым ордерам
MaxSpread Максимальный спред — Максимально допустимый спред в пунктах для открытия позиций
Slippage Проскальгивание — Допустимое проскальгивание в пунктах при исполнении ордеров
StealthMode Скрытый режим — При включении скрывает ордера от счётчика позиций и отключает отображение стоп-лосса/тейк-профита при открытии
CloseOnlyOnProfit Закрытие только при прибыли — При включении закрывает позиции только при наличии прибыли
NFA Ограничение NFA/FIFO — При включении запрещает открытие нескольких позиций в одном направлении (правила FIFO/NFA)
No_Hedge Запрет хеджирования — При включении запрещает открытие позиции в направлении, противоположном существующей (без хеджирования)
CS Заголовок пользовательских настроек — Заголовок секции пользовательских настроек
StopLoss Стоп-лосс — Стоп-лосс в пунктах (если >= 0, переопределяет пользовательские настройки)
TakeProfit Тейк-профит — Тейк-профит в пунктах (если >= 0, переопределяет пользовательские настройки)
SecureProfit Гарантированная прибыль — Уровень прибыли для активации secure profit (при использовании пользовательских настроек)
SecureProfitTriger Триггер гарантированной прибыли — Порог срабатывания для перемещения стоп-лосса в безубыток (при использовании пользовательских настроек)
UseCustomPair Использовать пользовательскую пару — При включении использует параметры из UseSettingsFrom вместо автоматического определения по символу
UseSettingsFrom Источник настроек пары — Название валютной пары, из которой берутся оптимизационные параметры (например, EURUSD, GBPUSD)
MM Заголовок управления рисками — Заголовок секции управления рисками
RecoveryMode Режим восстановления — Включает режим восстановления позиций с пересчётом лотов на основе истории убытков
FixedLots Фиксированный лот — Фиксированный размер лота при отключённом AutoMM
AutoMM Автоматическое управление лотом — Автоматический расчёт размера лота на основе процента от свободного маржинального баланса (0 = отключено)
AutoMM_Max Максимальный лот AutoMM — Максимальный размер лота при автоматическом управлении
FE Заголовок правил торговли по дням — Заголовок секции правил торговли с понедельника по пятницу
MondayStartHour Час начала торговли в понедельник — Час начала торговли в понедельник (0 = открытие в любое время)
FridayExit Выход из торговли в пятницу — При включении закрывает все позиции в пятницу в соответствии с ExitHour
LastTradeHour Последний час торговли в пятницу — Последний допустимый час для открытия новых позиций в пятницу
ExitHour Час выхода из торговли — Час завершения торговли в конце торгового дня
NF Заголовок настроек фильтра новостей — Заголовок секции настроек фильтра новостей
Avoid_News Фильтр новостей — Включает фильтр экономических новостей с сайта wallstreet-forex.com для блокировки торговли в период важных событий
GMT_Offset Смещение GMT — Смещение часового пояса сервера относительно GMT для фильтра новостей
DST_Usage Использование перехода на летнее время — Учёт летнего/зимнего времени при расчёте часового пояса для фильтра новостей
Include_Medium_News Включить новости средней важности — Включает новости средней важности в фильтр (по умолчанию — только высокая важность)
Wait_Before_News Ожидание перед новостью — Время ожидания в минутах до публикации новости для блокировки торговли
Wait_After_News Ожидание после новости — Время ожидания в минутах после публикации новости перед возобновлением торговли
//////////////////////////////////////////////////////////////////////////////////////////////////// (O1) Метка оптимизационных настроек 1 — Текстовый параметр-метка для группы оптимизационных настроек
/|EURUSD|EURUSD| EUR33 |GBPUSD|GBPUSD| GBP52 |GBP52T| GBP30 |USDJPY|USDJPY|USDCHF|USDCAD|AUDUSD|NZDU (O2) Метка оптимизационных настроек 2 — Текстовый параметр-метка для группы оптимизационных настроек
/////|------| _new |-------|------| _new |-------|------|-------|------| _new |------|------|------| (O3) Метка оптимизационных настроек 3 — Текстовый параметр-метка для группы оптимизационных настроек
/|//////|///////|//////|//////|///////|//////|///////|//////|//////|//////|//////|//////|//////| (O4) Метка оптимизационных настроек 4 — Текстовый параметр-метка для группы оптимизационных настроек
1 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 75 | 85 | 85 | 70 | 65 | 75 | 45 | (iMA_Period) Период MA (пользовательские) — Период расчёта скользящей средней (при использовании пользовательских настроек)
2 | 39 | 30 | 42 | 33 | 34 | 30 | 21 | 39 | 21 | 10 | 25 | 15 | 33 | 70 | (iMA_Filter_Open_b) Фильтр MA открытия b — Параметр фильтра открытия на основе скользящей средней (при использовании пользовательских настроек)
3 | 5 | 5 | 5 | 6 | 6 | 6 | 6 | 6 | 5 | 3 | 9 | 11 | 2 | 2 | (iWPR_Filter_OpenSignal_b) Сигнальный фильтр WPR открытия b — Параметр сигнального фильтра WPR для открытия (при использовании пользовательских настроек)
4 | 15 | 17 | 42 | 12 | 12 | 12 | 3 | 13 | 5 | -14 | 8 | 5 | 13 | 14 | (iMA_Filter_Open_a) Фильтр MA открытия a — Параметр фильтра открытия на основе скользящей средней (при использовании пользовательских настроек)
5 | 1 | 1 | 5 | 1 | 1 | 2 | 3 | 2 | 1 | 1 | 5 | 1 | 2 | 2 | (iWPR_Filter_OpenSignal_a) Сигнальный фильтр WPR открытия a — Параметр сигнального фильтра WPR для открытия (при использовании пользовательских настроек)
6 | 19 | 15 | 14 | 19 | 19 | 25 | 33 | 22 | 27 | 28 | 22 | 6 | 12 | -5 | (iWPR_Filter_Close) Фильтр WPR закрытия — Параметр фильтра закрытия на основе Williams %R (при использовании пользовательских настроек)
7 | -65 | 0 | -5 |-200 | -30 | -30 | -25 | -50 | -80 |-200 | -40 | -30 | -40 | -40 | (MaxLossPoints) Максимальный убыток в пунктах — Максимальный допустимый убыток в пунктах для закрытия позиции (при использовании пользовательских настроек)
8 | 11 | 11 | 10 | 12 | 12 | 12 | 12 | 22 | 12 | 12 | 12 | 16 | 18 | 15 | (iWPR_Period) Период WPR (пользовательские) — Период расчёта индикатора Williams %R (при использовании пользовательских настроек)
9 | 14 | 14 | 14 | 18 | 13 | 10 | 13 | 11 | 13 | 10 | 11 | 14 | 8 | 20 | (Price_Filter_Close) Ценовой фильтр закрытия — Параметр ценового фильтра при закрытии позиций (при использовании пользовательских настроек)
10 | 1 | 3 | 5 | 2 | 14 | 4 | 7 | 0 | 2 | 13 | 0 | 2 | 1 | 10 | (SecureProfit_) Гарантированная прибыль (пользовательские) — Уровень прибыли для активации secure profit (при использовании пользовательских настроек)
11 | 10 | 11 | 13 | 24 | 23 | 20 | 20 | 20 | 14 | 15 | 15 | 10 | 16 | 40 | (SecureProfitTriger_) Триггер гарантированной прибыли (пользовательские) — Порог срабатывания для перемещения стоп-лосса в безубыток (при использовании пользовательских настроек)
12 | -1 | -1 | -2 | -1 | -1 | -5 | -3 | -3 | -1 | -1 | -2 | -4 | -1 | -2 | (iWPR_Filter_Open_unknown) Неизвестный фильтр WPR открытия — Неизвестный параметр фильтра WPR открытия (при использовании пользовательских настроек)
13 | -1 | -1 | -5 | -1 | 0 | 0 | 0 | 0 | -2 | -2 | -1 | -1 | -1 | -5 | (iWPR_Filter_Close_unknown) Неизвестный фильтр WPR закрытия — Неизвестный параметр фильтра WPR закрытия (при использовании пользовательских настроек)
14 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | (iWPR_Close_Period) Период WPR закрытия (пользовательские) — Период расчёта Williams %R для фильтра закрытия (при использовании пользовательских настроек)
15 | 6 | 6 | 6 | 6 | 5 | 5 | 5 | 5 | 0 | 8 | 3 | 4 | 0 | 0 | (FilterATR) Фильтр ATR для открытия — Минимальное значение ATR для допуска новой позиции (фильтр волатильности)
16 | 14 | 14 | 14 | 14 | 14 | 14 | 14 | 14 | 14 | 36 | 14 | 14 | 14 | 14 | (iATR_Period) Период ATR (пользовательские) — Период расчёта индикатора ATR (при использовании пользовательских настроек)
17 | 150 | 155 | 190 | 290 | 250 | 240 | 160 | 240 |2000 | 190 | 170 | 130 | 140 | 120 | (iCCI_OpenFilter) Фильтр CCI для открытия — Пороговое значение CCI для фильтра открытия позиций (при использовании пользовательских настроек)
18 | 18 | 18 | 5 | 12 | 11 | 10 | 12 | 10 | 12 | 12 | 14 | 12 | 18 | 18 | (iCCI_Period) Период CCI (пользовательские) — Период расчёта индикатора CCI (при использовании пользовательских настроек)
19 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | (Unknown_1) Неизвестный параметр 1 — Неизвестный параметр, не используется в текущей версии (значение по умолчанию 0)
20 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | (Unknown_2) Неизвестный параметр 2 — Неизвестный параметр, не используется в текущей версии (значение по умолчанию 0)
21 | 120 | 80 | 33 | 120 | 95 | 52 | 52 | 30 | 130 | 120 | 120 | 150 | 150 | 130 | (StopLoss_) Стоп-лосс (пользовательские) — Стоп-лосс в пунктах (при использовании пользовательских настроек)
22 | 26 | 30 | 30 | 50 | 50 | 70 | 40 | 90 | 27 | 65 | 17 | 14 | 70 | 50 | (TakeProfit_) Тейк-профит (пользовательские) — Тейк-профит в пунктах (при использовании пользовательских настроек)
Получить полный код

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

/*
   Generated by ex4-to-mq4 decompiler FREEWARE 4.0.451.7
   Website: h t t P : //WwW . m E tAQuotES.N e T
   E-mail :  S U ppo r t @M E t AQuOT ES .neT
*/

#import "wininet.dll"
   int InternetOpenA(string a0, int a1, string a2, string a3, int a4);
   int InternetOpenUrlA(int a0, string a1, string a2, int a3, int a4, int a5);
   int InternetReadFile(int a0, string a1, int a2, int& a3[]);
   int InternetCloseHandle(int a0);
/*#import "WALLSTREET.dll"
   int SessionInit(int a0, int a1, int a2, int a3, string a4);
   int SessionDeinit(int a0, int a1, int a2, int a3, string a4);
   int ParamValue(int a0, int a1);
   bool CheckCloseLong(int a0, double a1, double a2, double a3, double a4, double a5, double a6, double a7, double a8, double a9);
   bool CheckCloseShort(int a0, double a1, double a2, double a3, double a4, double a5, double a6, double a7, double a8, double a9);
   bool CheckOpenLong(int a0, double a1, double a2, double a3, double a4, double a5, double a6, double a7, double a8);
   bool CheckOpenShort(int a0, double a1, double a2, double a3, double a4, double a5, double a6, double a7, double a8);
#import */

extern int Magic = 4698523;
extern string EA_Comment = "";
extern double MaxSpread = 3.5;
extern int Slippage = 2;
int Gi_100 = 3;
int Gi_104 = 3;
extern bool StealthMode = FALSE;
bool Gi_112 = TRUE;
extern bool CloseOnlyOnProfit = FALSE;
extern bool NFA = FALSE;
extern bool No_Hedge = FALSE;
extern string CS = "==== Custom Settings ====";
extern int StopLoss = -1;
extern int TakeProfit = -1;
extern int SecureProfit = -1;
extern int SecureProfitTriger = -1;
extern bool UseCustomPair = TRUE;
extern string UseSettingsFrom = "EURUSD";
extern string MM = "==== Risk Management ====";
extern bool RecoveryMode = FALSE;
extern double FixedLots = 0.1;
extern double AutoMM = 0.0;
extern double AutoMM_Max = 20.0;
extern int MaxAccountTrades = 0;
extern string FE = "==== Monday-Friday Rules ====";
extern int MondayStartHour = 0;
extern bool FridayExit = FALSE;
extern int LastTradeHour = 19;
extern int ExitHour = 20;
extern string NF = "==== News Filter Settings ====";
extern bool Avoid_News = FALSE;
extern int GMT_Offset = 2;
extern bool DST_Usage = TRUE;
extern bool Include_Medium_News = TRUE;
extern int Wait_Before_News = 30;
extern int Wait_After_News = 30;

extern string O1="==== OPTIMIZATION PARAMETERS ====";///////////////////////////////////////////////////////////////////////////////////////////////////////////|
extern string O2="=========== DISABLED IF ============";///|EURUSD|EURUSD| EUR33 |GBPUSD|GBPUSD| GBP52 |GBP52T| GBP30 |USDJPY|USDJPY|USDCHF|USDCAD|AUDUSD|NZDUSD|
extern string O3="==== <USECUSTOMPAIR> = TRUE ====";///////|------| _new |-------|------| _new |-------|------|-------|------| _new |------|------|------|------|
extern string O4="======= Use it only for optimization ======";///|//////|///////|//////|//////|///////|//////|///////|//////|//////|//////|//////|//////|//////|
extern int iMA_Period = 75;                        //   1  |  75  |  75  |  75   |  75  |  75  |  75   |  75  |  75   |  85  |  85  |  70  |  65  |  75  |  45  |
extern int iMA_Filter_Open_b = 39;                 //   2  |  39  |  30  |  42   |  33  |  34  |  30   |  21  |  39   |  21  |  10  |  25  |  15  |  33  |  70  |
extern int iWPR_Filter_OpenSignal_b = 5;           //   3  |   5  |   5  |   5   |   6  |   6  |   6   |   6  |   6   |   5  |   3  |   9  |  11  |   2  |   2  |
extern int iMA_Filter_Open_a = 15;                 //   4  |  15  |  17  |  42   |  12  |  12  |  12   |   3  |  13   |   5  | -14  |   8  |   5  |  13  |  14  |
extern int iWPR_Filter_OpenSignal_a = 1;           //   5  |   1  |   1  |   5   |   1  |   1  |   2   |   3  |   2   |   1  |   1  |   5  |   1  |   2  |   2  |
extern int iWPR_Filter_Close = 19;                 //   6  |  19  |  15  |  14   |  19  |  19  |  25   |  33  |  22   |  27  |  28  |  22  |   6  |  12  |  -5  |
extern int MaxLossPoints = -65;                    //   7  | -65  |   0  |  -5   |-200  | -30  | -30   | -25  | -50   | -80  |-200  | -40  | -30  | -40  | -40  |
extern int iWPR_Period = 11;                       //   8  |  11  |  11  |  10   |  12  |  12  |  12   |  12  |  22   |  12  |  12  |  12  |  16  |  18  |  15  |
extern int Price_Filter_Close = 14;                //   9  |  14  |  14  |  14   |  18  |  13  |  10   |  13  |  11   |  13  |  10  |  11  |  14  |   8  |  20  |
extern int SecureProfit_ = 1;                      //  10  |   1  |   3  |   5   |   2  |  14  |   4   |   7  |   0   |   2  |  13  |   0  |   2  |   1  |  10  |
extern int SecureProfitTriger_ = 10;               //  11  |  10  |  11  |  13   |  24  |  23  |  20   |  20  |  20   |  14  |  15  |  15  |  10  |  16  |  40  |
extern int iWPR_Filter_Open_unknown = -1;          //  12  |  -1  |  -1  |  -2   |  -1  |  -1  |  -5   |  -3  |  -3   |  -1  |  -1  |  -2  |  -4  |  -1  |  -2  |
extern int iWPR_Filter_Close_unknown = -1;         //  13  |  -1  |  -1  |  -5   |  -1  |   0  |   0   |   0  |   0   |  -2  |  -2  |  -1  |  -1  |  -1  |  -5  |
extern int iWPR_Close_Period = 0;                  //  14  |   0  |   0  |   1   |   0  |   0  |   0   |   0  |   0   |   0  |   1  |   0  |   0  |   0  |   0  |
extern int FilterATR = 6;                          //  15  |   6  |   6  |   6   |   6  |   5  |   5   |   5  |   5   |   0  |   8  |   3  |   4  |   0  |   0  |
extern int iATR_Period = 14;                       //  16  |  14  |  14  |  14   |  14  |  14  |  14   |  14  |  14   |  14  |  36  |  14  |  14  |  14  |  14  |
extern int iCCI_OpenFilter = 150;                  //  17  | 150  | 155  | 190   | 290  | 250  | 240   | 160  | 240   |2000  | 190  | 170  | 130  | 140  | 120  |
extern int iCCI_Period = 18;                       //  18  |  18  |  18  |   5   |  12  |  11  |  10   |  12  |  10   |  12  |  12  |  14  |  12  |  18  |  18  |
extern int Unknown_1 = 0;                          //  19  |   0  |   0  |   0   |   0  |   0  |   0   |   0  |   0   |   0  |   0  |   0  |   0  |   0  |   0  |
extern int Unknown_2 = 0;                          //  20  |   0  |   0  |   0   |   0  |   0  |   0   |   0  |   0   |   0  |   0  |   0  |   0  |   0  |   0  |
extern int StopLoss_ = 120;                        //  21  | 120  |  80  |  33   | 120  |  95  |  52   |  52  |  30   | 130  | 120  | 120  | 150  | 150  | 130  |
extern int TakeProfit_ = 26;                       //  22  |  26  |  30  |  30   |  50  |  50  |  70   |  40  |  90   |  27  |  65  |  17  |  14  |  70  |  50  |

int Gi_260 = 50;
double Gd_264 = 25.0;
double Gd_272 = 1.1;
int p1 = 0;
int p2 = 0;
int p3 = 0;
int p4 = 0;
int p5 = 0;
int p6 = 0;
int p7 = 0;
int p8 = 0;
int p9 = 0;
int p10;
int p11;
int p12 = 0;
int p13 = 0;
int p14 = 0;
int p15 = 0;
int p16 = 0;
int p17 = 0;
int p18 = 0;
int p19 = 0;
int p20 = 0;
int p21;
int p22;
int Gi_352 = -1;
string Gs_356 = "";
bool Gi_364 = TRUE;
bool Gi_368 = FALSE;
int G_stoplevel_372 = 0;
double G_minlot_376 = 0.01;
double G_maxlot_384 = 0.01;
double G_lotstep_392 = 0.01;
int G_lotsize_400 = 100000;
double G_marginrequired_404 = 1000.0;
double Gd_412 = 0.0001;
double Gd_unused_420 = 0.1;
string Gs_428 = "";
string Gs_436 = "";
int G_datetime_444 = 0;
int G_datetime_448 = 0;
int G_datetime_452 = 0;
double Gd_unused_456 = 1.0;
int G_index_464 = 0;
int Gia_468[1000];
string Gsa_472[1000];
string Gsa_476[1000];
/*
int f0_0() {
   int Li_20;
   bool Li_ret_0 = TRUE;
   string Ls_4 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)";
   bool Li_12 = FALSE;
   int Li_16 = InternetOpenA(Ls_4, Li_12, "0", "0", 0);
   if (Li_16 != 0) {
      Li_20 = InternetOpenUrlA(Li_16, "", "0", 0, -2080374528, 0);
      if (Li_20 == 0) Li_ret_0 = FALSE;
      else InternetCloseHandle(Li_20);
      InternetCloseHandle(Li_16);
   } else Li_ret_0 = FALSE;
   return (Li_ret_0);
}
*/
void init() {
      // код доступен только после оплаты
   }

int deinit() {
   Comment("");
   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");
   if (Gi_352 != -1) Gi_352 = f0_7();
   return (0);
}

int start() {
      // код доступен только после оплаты
   }
   double price_8;
   double Ld_16;
   double Ld_24;
   color color_32;
   double lots_40;
   int Li_80;
   int Li_84;
   int Li_92;
   string Ls_96;
   int ticket_172;
   double price_184;
   double price_192;
   int Li_208;
   string Ls_212;
   string Ls_0 = "";
   double Ld_48 = 0;
   double Ld_56 = 0;
   double Ld_64 = 0;
   double Ld_72 = 1;
   if (DayOfWeek() == 1 && iVolume(NULL, PERIOD_D1, 0) < 5.0) return (0);
   if (StringLen(Symbol()) < 6) return (0);
   if (Gi_364) {
      Comment("\nInitializing ...");
      Sleep(1000);
      RefreshRates();
      Gi_364 = FALSE;
      Gs_428 = "";
      Gs_436 = "";
      G_datetime_444 = 0;
      G_stoplevel_372 = MarketInfo(Symbol(), MODE_STOPLEVEL);
      G_minlot_376 = MarketInfo(Symbol(), MODE_MINLOT);
      G_maxlot_384 = MarketInfo(Symbol(), MODE_MAXLOT);
      G_lotsize_400 = MarketInfo(Symbol(), MODE_LOTSIZE);
      G_lotstep_392 = MarketInfo(Symbol(), MODE_LOTSTEP);
      G_marginrequired_404 = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
      if (Digits <= 3) Gd_412 = 0.01;
      else Gd_412 = 0.0001;
      if (Digits == 3 || Digits == 5) Gd_unused_420 = 0.1;
      else Gd_unused_420 = 1;
      Sleep(1000);
      Gi_368 = 1;//f0_0();
      Sleep(1000);
      if (!Gi_368) Gi_364 = TRUE;
   }
   if ((!IsTesting()) && IsStopped()) return (0);
   if ((!IsTesting()) && !IsTradeAllowed()) return (0);
   if ((!IsTesting()) && IsTradeContextBusy()) return (0);
   if (IsDllsAllowed() == FALSE) {
      Comment("\nWarning: Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors.");
      Print("Warning: Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors.");
      Alert("Warning: Set Parameter **AllowDLL Imports** ON in menu Tools -> Options -> ExpertAdvisors.");
      Sleep(30000);
      return (0);
   }
   if (Gi_352 <= 0) {
      if (!Gi_368) {
         Comment("\nInternet connection problem");
         Alert("Internet connection problem");
         Sleep(10000);
         return (0);
      }
      Comment("\nUpdating settings. Please, wait! ...");
      Sleep(1000);
      Ls_96 = "";
      Li_80 = 1440 * TimeHour(TimeLocal()) + 60 * TimeMinute(TimeLocal()) + TimeSeconds(TimeLocal()) + MathMod(AccountNumber(), 10000);
      for (int Li_88 = 0; Li_88 < StringLen(Symbol()); Li_88++) {
         Li_92 = StringGetChar(Symbol(), Li_88);
         Li_80 += Li_92;
      }
      MathSrand(Li_80);
      Li_84 = MathMod(MathRand(), 60);
      for (int Li_104 = 1; Li_104 <= Li_84 + 1; Li_104++) {
         if (Li_104 > 2) Ls_96 = Ls_96 + ".";
         Comment("\nUpdating settings. Please, wait! ..." + Ls_96);
         Sleep(1000);
      }
      Gi_352 = f0_5();
      Sleep(1000);
      if (Gi_352 < 0) Comment("\nInitializing ...");
   }
   if (Gi_352 <= 0) {
      if (Gi_352 == -8) {
         Comment("\nUnsupported currency pair " + Gs_356 + ", Bid: " + DoubleToStr(Bid, Digits) + ", Ask: " + DoubleToStr(Ask, Digits));
         Alert("Unsupported currency pair " + Gs_356 + ", Bid: " + DoubleToStr(Bid, Digits) + ", Ask: " + DoubleToStr(Ask, Digits));
      } else {
         Comment("You  must  fill  in  <UseSettingsFrom>  if  <UseCustomPair>  =  true");
         Comment("????????? ???? <UseSettingsFrom> ???? <UseCustomPair> = true");

         Alert("You  must  fill  in  <UseSettingsFrom>  if  <UseCustomPair>  =  true");
         Alert("????????? ???? <UseSettingsFrom> ???? <UseCustomPair> = true");

      }
      Sleep(10000);
      return (0);
   }
   if (p1 <= 0 || p8 <= 0 || p16 <= 0 || p18 <= 0) {
      Comment("\nWrong initialization parameters for pair " + Symbol());
      Alert("Wrong initialization parameters for pair " + Symbol());
      Sleep(10000);
      return (0);
   }

   G_datetime_448 = iTime(NULL, PERIOD_M1, 0);
   HideTestIndicators(TRUE);
   double iclose_108 = iClose(NULL, PERIOD_M15, 1);
   double ima_116 = iMA(NULL, PERIOD_M15, p1, 0, MODE_SMMA, PRICE_CLOSE, 1);
   double iwpr_124 = iWPR(NULL, PERIOD_M15, p8, 1);
   double iatr_132 = iATR(NULL, PERIOD_M15, p16, 1);
   double icci_140 = iCCI(NULL, PERIOD_M15, p18, PRICE_TYPICAL, 1);
   HideTestIndicators(FALSE);
   double Ld_148 = 0;
   if (StringSubstr(AccountCurrency(), 0, 3) == "JPY") {
      Ld_148 = MarketInfo("USDJPY" + StringSubstr(Symbol(), 6), MODE_BID);
      if (Ld_148 > 0.1) Ld_72 = Ld_148;
      else Ld_72 = 94;
   }
   if (StringSubstr(AccountCurrency(), 0, 3) == "GBP") {
      Ld_148 = MarketInfo("GBPUSD" + StringSubstr(Symbol(), 6), MODE_BID);
      if (Ld_148 > 0.1) Ld_72 = 1 / Ld_148;
      else Ld_72 = 0.6622516556;
   }
   if (StringSubstr(AccountCurrency(), 0, 3) == "EUR") {
      Ld_148 = MarketInfo("EURUSD" + StringSubstr(Symbol(), 6), MODE_BID);
      if (Ld_148 > 0.1) Ld_72 = 1 / Ld_148;
      else Ld_72 = 0.78125;
   }
   if (AutoMM > 0.0 && (!RecoveryMode)) lots_40 = MathMax(G_minlot_376, MathMin(G_maxlot_384, MathCeil(MathMin(AutoMM_Max, AutoMM) / Ld_72 / 100.0 * AccountFreeMargin() / G_lotstep_392 / (G_lotsize_400 / 100)) * G_lotstep_392));
   if (AutoMM > 0.0 && RecoveryMode) lots_40 = f0_1();
   if (AutoMM == 0.0) lots_40 = FixedLots;
   Ls_0 = Ls_0 
      + "\n  " 
      + "\n " 
      + "\n  Authorization - OK!" 
      + "\n -----------------------------------------------" 
      + "\n  SL = " + p21 + " pips / TP = " + p22 + " pips" 
   + "\n  Spread = " + DoubleToStr((Ask - Bid) / Gd_412, 1) + " pips";
   if (Ask - Bid > MaxSpread * Gd_412) Ls_0 = Ls_0 + " - TOO HIGH";
   else Ls_0 = Ls_0 + " - NORMAL";
   Ls_0 = Ls_0 
   + "\n -----------------------------------------------";
   if (AutoMM > 0.0) {
      Ls_0 = Ls_0 
         + "\n  AutoMM - ENABLED" 
      + "\n  Risk = " + DoubleToStr(AutoMM, 1) + "%";
   }
   Ls_0 = Ls_0 
   + "\n  Trading Lots = " + DoubleToStr(lots_40, 2);
   Ls_0 = Ls_0 
   + "\n -----------------------------------------------";
   if (RecoveryMode) {
      Ls_0 = Ls_0 
      + "\n  Recovery Mode - ENABLED";
   } else {
      Ls_0 = Ls_0 
      + "\n  Recovery Mode - DISABLED";
   }
   if (StealthMode) {
      Ls_0 = Ls_0 
      + "\n  Stealth Mode - ENABLED";
   } else {
      Ls_0 = Ls_0 
      + "\n  Stealth Mode - DISABLED";
   }
   f0_2();
   Ls_0 = Ls_0 
   + "\n  " + Gs_428;
   Ls_0 = Ls_0 
   + "\n -----------------------------------------------";
   Comment(Ls_0);
   if (ObjectFind("BKGR") < 0) {
      ObjectCreate("BKGR", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("BKGR", "g", 110, "Webdings", LightSlateGray);
      ObjectSet("BKGR", OBJPROP_CORNER, 0);
      ObjectSet("BKGR", OBJPROP_BACK, TRUE);
      ObjectSet("BKGR", OBJPROP_XDISTANCE, 5);
      ObjectSet("BKGR", OBJPROP_YDISTANCE, 15);
   }
   if (ObjectFind("BKGR2") < 0) {
      ObjectCreate("BKGR2", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("BKGR2", "g", 110, "Webdings", DimGray);
      ObjectSet("BKGR2", OBJPROP_BACK, TRUE);
      ObjectSet("BKGR2", OBJPROP_XDISTANCE, 5);
      ObjectSet("BKGR2", OBJPROP_YDISTANCE, 60);
   }
   if (ObjectFind("BKGR3") < 0) {
      ObjectCreate("BKGR3", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("BKGR3", "g", 110, "Webdings", DimGray);
      ObjectSet("BKGR3", OBJPROP_CORNER, 0);
      ObjectSet("BKGR3", OBJPROP_BACK, TRUE);
      ObjectSet("BKGR3", OBJPROP_XDISTANCE, 5);
      ObjectSet("BKGR3", OBJPROP_YDISTANCE, 45);
   }
   if (ObjectFind("LV") < 0) {
      ObjectCreate("LV", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("LV", "WALL STREET ROBOT", 9, "Tahoma Bold", DarkOrange);
      ObjectSet("LV", OBJPROP_CORNER, 0);
      ObjectSet("LV", OBJPROP_BACK, FALSE);
      ObjectSet("LV", OBJPROP_XDISTANCE, 13);
      ObjectSet("LV", OBJPROP_YDISTANCE, 23);
   }
   if (ObjectFind("BKGR4") < 0) {
      ObjectCreate("BKGR4", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("BKGR4", "g", 110, "Webdings", DimGray);
      ObjectSet("BKGR4", OBJPROP_CORNER, 0);
      ObjectSet("BKGR4", OBJPROP_BACK, TRUE);
      ObjectSet("BKGR4", OBJPROP_XDISTANCE, 5);
      ObjectSet("BKGR4", OBJPROP_YDISTANCE, 96);
   }
   if (p22 < G_stoplevel_372 * Point / Gd_412) p22 = G_stoplevel_372 * Point / Gd_412;
   if (p21 < G_stoplevel_372 * Point / Gd_412) p21 = G_stoplevel_372 * Point / Gd_412;
   Slippage = Slippage * Gd_412;
   int count_156 = 0;
   int count_160 = 0;
   int count_164 = 0;
   int count_168 = 0;
   if (CloseOnlyOnProfit) p7 = FALSE;
   for (int pos_180 = OrdersTotal() - 1; pos_180 >= 0; pos_180--) {
      if (!OrderSelect(pos_180, SELECT_BY_POS, MODE_TRADES)) Print("Error in OrderSelect! Position:", pos_180);
      else {
         if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() != Magic) {
               if (OrderType() == OP_BUY) count_164++;
               else count_168++;
            }
            if (OrderMagicNumber() == Magic) {
               Ld_64 += OrderProfit();
               if (OrderType() == OP_BUY) Ld_48 = (Bid - OrderOpenPrice()) / Gd_412;
               else Ld_48 = (OrderOpenPrice() - Ask) / Gd_412;
               Ld_56 += Ld_48;
               if (OrderType() == OP_BUY) {
                  count_156++;
                  if (OrderStopLoss() == 0.0 && StealthMode == FALSE) {
                     price_184 = NormalizeDouble(Ask - p21 * Gd_412, Digits);
                     price_192 = NormalizeDouble(Ask + p22 * Gd_412, Digits);
                     OrderModify(OrderTicket(), OrderOpenPrice(), price_184, price_192, 0, Green);
                     continue;
                  }
                  if (Bid >= OrderOpenPrice() + p22 * Gd_412 || Bid <= OrderOpenPrice() - p21 * Gd_412 || (f0_10(OrderOpenPrice(), iwpr_124, iclose_108, iOpen(NULL, PERIOD_M1,
                     1), iClose(NULL, PERIOD_M1, 1)) && TimeCurrent() - OrderOpenTime() > 180) || (FridayExit && DayOfWeek() == 5 && Hour() >= ExitHour && TimeCurrent() - OrderOpenTime() > 180)) {
                     for (int Li_176 = 1; Li_176 <= MathMax(1, Gi_100); Li_176++) {
                        RefreshRates();
                        if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), Slippage, Violet)) {
                           count_156--;
                           break;
                        }
                        Sleep(MathMax(100, 1000 * Gi_104));
                     }
                     Sleep(5000);
                     continue;
                  }
                  if (!(Bid - OrderOpenPrice() > p11 * Gd_412 && MathAbs(OrderOpenPrice() + p10 * Gd_412 - OrderStopLoss()) >= Point)) continue;
                  OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + p10 * Gd_412, Digits), OrderTakeProfit(), 0, Blue);
                  continue;
               }
               count_160++;
               if (OrderStopLoss() == 0.0 && StealthMode == FALSE) {
                  price_184 = NormalizeDouble(Bid + p21 * Gd_412, Digits);
                  price_192 = NormalizeDouble(Bid - p22 * Gd_412, Digits);
                  OrderModify(OrderTicket(), OrderOpenPrice(), price_184, price_192, 0, Green);
                  continue;
               }
               if (Ask <= OrderOpenPrice() - p22 * Gd_412 || Ask >= OrderOpenPrice() + p21 * Gd_412 || (f0_11(OrderOpenPrice(), iwpr_124, iclose_108, iOpen(NULL, PERIOD_M1,
                  1), iClose(NULL, PERIOD_M1, 1)) && TimeCurrent() - OrderOpenTime() > 180) || (FridayExit && DayOfWeek() == 5 && Hour() >= ExitHour && TimeCurrent() - OrderOpenTime() > 180)) {
                  for (Li_176 = 1; Li_176 <= MathMax(1, Gi_100); Li_176++) {
                     RefreshRates();
                     if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), Slippage, Violet)) {
                        count_160--;
                        break;
                     }
                     Sleep(MathMax(100, 1000 * Gi_104));
                  }
                  Sleep(5000);
                  continue;
               }
               if (OrderOpenPrice() - Ask > p11 * Gd_412 && MathAbs(OrderOpenPrice() - p10 * Gd_412 - OrderStopLoss()) >= Point) OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - p10 * Gd_412, Digits), OrderTakeProfit(), 0, Red);
            }
         }
      }
   }
   Ls_0 = Ls_0 
   + "\n  Account Ballance = " + DoubleToStr(AccountBalance(), 2);
   if (co

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

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

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

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

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

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

Стоимость полного кода
2 854,10₽ ≈ $34.88