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

wallstreetforexrobot_v3.6_nointern.mq4

Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой торгового советника (Expert Advisor) для платформы MetaTrader 4, написанного на языке MQL4. Основная торговая логика и расчёты сигналов выполняются через внешнюю DLL-библиотеку WALLSTREET.dll, которая подключается через механизм импорта. Советник обрабатывает каждый тик цены в функции start(), анализируя данные стандартных встроенных индикаторов (MA, WPR, ATR, CCI) на таймфрейме M15.

Робот управляет открытыми позициями BUY и SELL: размещает ордера через OrderSend, модифицирует их через OrderModify (установка/сдвиг StopLoss и TakeProfit) и закрывает через OrderClose. Поддерживаются режимы StealthMode и CloseOnlyOnProfit, а также механизм паузы при убытках (CheckLossPause), запрещающий новые сделки после серии убыточных закрытий.

Встроены функции автоматического управления размером позиции (AutoMM) с ограничением максимального лота, а также режим RecoveryMode, рассчитывающий лоты на основе истории сделок. Советник проверяет текущий спред против параметра MaxSpread и корректирует уровни StopLoss/TakeProfit с учётом минимального стоп-левела рынка. Параметры индикаторов и часть торговых настроек могут загружаться из внешней сессии через DLL.

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

НастройкаОписание
Magic Магический Номер — Магический номер ордеров, используемый для идентификации позиций, управляемых данным советником.
MaxSpread Максимальный Спред — Максимально допустимый спред в пунктах. При превышении советник не открывает новые позиции.
Slippage Проскальзывание — Допустимое проскальзывание в пунктах при открытии и модификации ордеров.
StealthMode Скрытый Режим — Переключатель: при TRUE скрывается StopLoss/TakeProfit при открытии ордера (установка 0.0), они добавляются позже.
CloseOnlyOnProfit Закрытие Только При Прибыли — Переключатель: при TRUE советник закрывает позиции только при достижении прибыли.
SS Заголовок Пользовательских Настроек — Строковый параметр-заголовок для пользовательских настроек.
StopLoss Стоп-Лосс — Размер стоп-лосса в пунктах для новых ордеров. Если меньше минимального стоп-левела, корректируется автоматически.
TakeProfit Тейк-Профит — Размер тейк-профита в пунктах для новых ордеров. Если меньше минимального стоп-левела, корректируется автоматически.
SecureProfit Безубыточная Прибыль — Количество пунктов для перевода позиции в безубыток после достижения определённой прибыли.
SecureProfitTriger Триггер Безубытка — Количество пунктов прибыли, которое должно быть достигнуто для активации перевода в безубыток.
UseCustomPair Использовать Настройки Пары — Переключатель: при TRUE параметры загружаются из пары, указанной в UseSettingsFrom; при FALSE — из текущего символа.
UseSettingsFrom Источник Настроек — Название валютной пары (например, EURUSD), из которой загружаются параметры индикаторов и торговых настроек через DLL.
MM Заголовок Управления Рисками — Строковый параметр-заголовок для группы настроек управления рисками.
RecoveryMode Режим Восстановления — Переключатель: при TRUE размер лота рассчитывается автоматически на основе истории сделок (алгоритм CalcLots).
FixedLots Фиксированный Лот — Фиксированный размер лота, используемый при отключённом AutoMM (AutoMM = 0.0).
AutoMM Авто-Управление Объёмом — Автоматическое управление размером позиции (в долларах от свободного маржинального баланса). При значении 0.0 авто-лоты отключены и используется FixedLots.
AutoMM_Max Макс. Авто-Лот — Максимально допустимый размер позиции при автоматическом управлении лотами.
PeriodInd Заголовок Индикаторов — Строковый параметр-заголовок для группы настроек индикаторов.
g_period_ma Период Скользящей Средней — Период скользящей средней (Moving Average), используемой для анализа тренда.
g_period_wpr Период Williams %R — Период индикатора WPR (Williams Percent Range), используемого для определения перекупленности/перепроданности.
g_period_atr Период ATR — Период индикатора ATR (Average True Range), используемого для фильтрации волатильности.
g_period_cci Период CCI — Период индикатора CCI (Commodity Channel Index), используемого для определения сигналов.
Получить полный код

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

/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: 
   E-mail : p******m*@gmail.com
*/

#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 int MaxSpread = 4;
extern int Slippage = 2;
int gi_88 = 3;
int gi_92 = 3;
extern bool StealthMode = FALSE;
bool gi_100 = TRUE;
extern bool CloseOnlyOnProfit = FALSE;
extern string SS = "==== Custom Settings ====";
extern int StopLoss = 120;
extern int TakeProfit = 0;
extern int SecureProfit = 0;
extern int SecureProfitTriger = 0;
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;
int gi_180 = 50;
double gd_184 = 25.0;
double gd_192 = 1.1;
extern string PeriodInd = "====Indicator==========";
extern int g_period_ma = 0;
int gi_204 = 0;//
int gi_208 = 0;//
int gi_212 = 0;//
int gi_216 = 0;//
int gi_220 = 0;//
int gi_224 = 0;// --CloseOnlyOnProfit=TRUE = 0
extern int g_period_wpr = 0;
int gi_232 = 0;//
int gi_236 = 0;//
int gi_240 = 0;//
int gi_244 = 0;//
int gi_248 = 0;// --???????? ?????-----
extern int g_period_atr = 14;
int gi_256 = 0;//??? & 1000
extern int g_period_cci = 0;
int gi_264 = 0;//????????
int gi_268 = 0;//??? ?? ? Time
int gi_272 = -1;
bool gi_276 = TRUE;//???? ????? ??
bool gi_280 = FALSE;
int g_stoplevel_284 = 0;
double g_minlot_288 = 0.01;
double g_maxlot_296 = 0.01;
double g_lotstep_304 = 0.01;
int g_lotsize_312 = 100000;
double g_marginrequired_316 = 1000.0;
double gd_324 = 0.0001;
double gd_unused_332 = 0.1;
double gd_unused_340 = 1.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_272 != -1) gi_272 = MyDeinit();
   return (0);
}

int start() {
      // код доступен только после оплаты
   }
   double l_price_0;
   double ld_8;
   double ld_16;
   color l_color_24;
   double l_lots_28;
   int l_ticket_36;
   double l_price_40;
   double l_price_48;
   string ls_56;
   string ls_64 = "";
   double ld_72 = 0;
   double ld_80 = 0;
   double ld_88 = 0;
   if (gi_276) {
      gi_276 = FALSE;
      g_stoplevel_284 = MarketInfo(Symbol(), MODE_STOPLEVEL);
      g_minlot_288 = MarketInfo(Symbol(), MODE_MINLOT);
      g_maxlot_296 = MarketInfo(Symbol(), MODE_MAXLOT);
      g_lotsize_312 = MarketInfo(Symbol(), MODE_LOTSIZE);
      g_lotstep_304 = MarketInfo(Symbol(), MODE_LOTSTEP);
      g_marginrequired_316 = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
      if (Digits <= 3) gd_324 = 0.01;
      else gd_324 = 0.0001;
      if (Digits == 3 || Digits == 5) gd_unused_332 = 0.1;
      else gd_unused_332 = 1;
      Comment("\nInitializing ...");
      Sleep(1000);
      gi_280 = TRUE;
      Sleep(1000);
   }
   if (!IsTesting() && IsStopped()) return (0);
   if (!IsTesting() && !IsTradeAllowed()) {
      Print("Trading is not Allowed ...");
      return (0);
   }
   if (!IsTesting() && IsTradeContextBusy()) {
      Print("Trade Context is Busy ...");
      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_272 <= 0) {
      if (!gi_280) {
         Comment("\nInternet connection problem");
         Alert("Internet connection problem");
         Sleep(10000);
         return (0);
      }
      Comment("\nUpdating settings ...");
      Sleep(2000);
      gi_272 = MyFirstInit();
      Sleep(2000);
      if (gi_272 < 0) Comment("\nInitializing ...");
   }
   if (gi_272 <= 0) {
      if (gi_272 == -8) {
         Comment("\nUnsupported currency pair " + Symbol());
         Alert("Unsupported currency pair " + Symbol());
      } else {
         Comment("\nInitialization is failed with error code " + DoubleToStr(gi_272, 0));
         Alert("Initialization is failed with error code " + DoubleToStr(gi_272, 0));
      }
      Sleep(10000);
      return (0);
   }
   if (g_period_ma <= 0 || g_period_wpr <= 0 || g_period_atr <= 0 || g_period_cci <= 0) {
      Comment("\nWrong initialization parameters for pair " + Symbol());
      Alert("Wrong initialization parameters for pair " + Symbol());
      Sleep(10000);
      return (0);
   }
   HideTestIndicators(FALSE);
   double l_iclose_96 = iClose(NULL, PERIOD_M15, 1);
   double l_ima_104 = iMA(NULL, PERIOD_M15, g_period_ma, 0, MODE_SMMA, PRICE_CLOSE, 1);
   double l_iwpr_112 = iWPR(NULL, PERIOD_M15, g_period_wpr, 1);
   double l_iatr_120 = iATR(NULL, PERIOD_M15, g_period_atr, 1);
   double l_icci_128 = iCCI(NULL, PERIOD_M15, g_period_cci, PRICE_TYPICAL, 1);
   HideTestIndicators(FALSE);
   if (AutoMM > 0.0 && !RecoveryMode) l_lots_28 = MathMax(g_minlot_288, MathMin(g_maxlot_296, MathCeil(MathMin(AutoMM_Max, AutoMM) / 100.0 * AccountFreeMargin() / g_lotstep_304 / (g_lotsize_312 / 100)) * g_lotstep_304));
   if (AutoMM > 0.0 && RecoveryMode) l_lots_28 = CalcLots();
   if (AutoMM == 0.0) l_lots_28 = FixedLots;
   ls_64 = ls_64 
      + "\n  " 
      + "\n " 
      + "\n  Authorization - OK!" 
      + "\n -----------------------------------------------" 
   + "\n  Spread = " + DoubleToStr((Ask - Bid) / gd_324, 1) + " pips";
   if (Ask - Bid > MaxSpread * gd_324) ls_64 = ls_64 + " - TOO HIGH";
   else ls_64 = ls_64 + " - NORMAL";
   ls_64 = ls_64 
   + "\n -----------------------------------------------";
   if (AutoMM > 0.0) {
      ls_64 = ls_64 
         + "\n  AutoMM - ENABLED" 
      + "\n  Risk = " + DoubleToStr(AutoMM, 1) + "%";
   }
   ls_64 = ls_64 
   + "\n  Trading Lots = " + DoubleToStr(l_lots_28, 2);
   ls_64 = ls_64 
   + "\n -----------------------------------------------";
   if (RecoveryMode) {
      ls_64 = ls_64 
      + "\n  Recovery Mode - ENABLED";
   } else {
      ls_64 = ls_64 
      + "\n  Recovery Mode - DISABLED";
   }
   if (StealthMode) {
      ls_64 = ls_64 
      + "\n  Stealth Mode - ENABLED";
   } else {
      ls_64 = ls_64 
      + "\n  Stealth Mode - DISABLED";
   }
   ls_64 = ls_64 
   + "\n -----------------------------------------------";
   Comment(ls_64);
   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", White);
      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, 73);
   }
   if (TakeProfit < g_stoplevel_284 * Point / gd_324) TakeProfit = g_stoplevel_284 * Point / gd_324;
   if (StopLoss < g_stoplevel_284 * Point / gd_324) StopLoss = g_stoplevel_284 * Point / gd_324;
   Slippage = Slippage * gd_324;
   int l_count_136 = 0;
   int l_count_140 = 0;
   if (CloseOnlyOnProfit) gi_224 = 0;
   for (int l_pos_144 = OrdersTotal() - 1; l_pos_144 >= 0; l_pos_144--) {
      if (!OrderSelect(l_pos_144, SELECT_BY_POS, MODE_TRADES)) Print("Error in OrderSelect! Position:", l_pos_144);
      else {
         if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() == Magic) {
               ld_88 += OrderProfit();
               if (OrderType() == OP_BUY) ld_72 = (Bid - OrderOpenPrice()) / gd_324;
               else ld_72 = (OrderOpenPrice() - Ask) / gd_324;
               ld_80 += ld_72;
               if (OrderType() == OP_BUY) {
                  l_count_136++;
                  if (OrderStopLoss() == 0.0 && StealthMode == FALSE) {
                     l_price_40 = NormalizeDouble(OrderOpenPrice() - StopLoss * gd_324, Digits);
               

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

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

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

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

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

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

Стоимость полного кода
1 500₽ ≈ $18.33