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

WallStreetForexRobot v3.9

wallstreetforexrobot_v3.9.mq4

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

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

WallStreetForexRobot v3.9 — торговый советник для MetaTrader 4, написанный на языке MQL4. Советник использует внешние DLL-библиотеки (wininet.dll и WALLSTREET.dll) для установления интернет-соединения и управления торговой сессией, а также подключает модули PlusEasy, PlusSwiss и PlusLinex для расчёта лотов, управления линиями и защитой прибыли. Торговля ведётся на таймфрейме M15 с использованием индикаторов WPR, CCI, ATR и скользящей средней. Советник поддерживает автоматический расчёт лотов, трейлинг-стоп через SecureProfit, выход по пятницам, режим восстановления позиции и скрытый режим работы.

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

НастройкаОписание
s1 Заголовок PlusEasy — Текстовый заголовок раздела настроек модуля PlusEasy.
EasyLot Размер лота Easy — Базовый размер лота, используемый при открытии сделок через модуль PlusEasy.
s2 Заголовок PlusSwiss — Текстовый заголовок раздела настроек модуля PlusSwiss.
s3 Заголовок PlusLinex — Текстовый заголовок раздела настроек модуля PlusLinex.
s3_1 Настройка Stop/Limit — Определяет тип ордера: 0 — Stop, 1 — Limit для входа в позицию.
LinexLimit Лимит Linex — Целочисленный параметр, задающий направление смещения цены входа при расчёте уровня входа.
Magic Магический номер — Уникальный идентификатор ордеров советника для их отслеживания и управления.
EA_Comment Комментарий советника — Строка комментария, добавляемая к открываемым ордерам.
MaxSpread Максимальный спред — Допустимый максимальный спред в пунктах; при превышении новые сделки не открываются.
Slippage Допустимое проскальзывание — Максимально допустимое проскальзывание цены в пунктах при исполнении ордеров.
StealthMode Скрытый режим — При включении советник не модифицирует стоп-лосс и тейк-профит открытых позиций.
CloseOnlyOnProfit Закрытие только в прибыли — При включении советник закрывает позиции только при наличии положительной прибыли.
NFA NFA-ограничение — При включении запрещает открытие новых позиций, если уже есть активные ордера советника.
No_Hedge Запрет хеджирования — При включении запрещает открытие встречных позиций в противоположном направлении.
CS Раздел пользовательских настроек — Текстовый заголовок раздела пользовательских настроек.
StopLoss Стоп-лосс — Размер стоп-лосса в пунктах для новых позиций.
TakeProfit Тейк-профит — Размер тейк-профита в пунктах для новых позиций.
SecureProfit Защита прибыли — Расстояние в пунктах для перемещения стоп-лосса в прибыльную зону при срабатывании триггера.
SecureProfitTriger Триггер защиты прибыли — Расстояние в пунктах от цены входа, при достижении которого активируется перемещение стоп-лосса.
UseCustomPair Использовать пользовательскую пару — При включении советник берёт название пары из параметра UseSettingsFrom.
UseSettingsFrom Источник настроек — Название валютной пары, для которой загружаются параметры сессии.
MM Раздел управления рисками — Текстовый заголовок раздела настроек управления рисками.
RecoveryMode Режим восстановления — При включении активируется специальный расчёт размера лота для восстановления позиции.
FixedLots Фиксированный лот — Фиксированный размер лота при отключённом автоматическом расчёте.
AutoMM Автоматический лот — Процент свободного маржи, используемый для автоматического расчёта размера лота.
AutoMM_Max Максимальный автолот — Максимально допустимый размер автоматически рассчитанного лота.
FE Раздел правил выхода в пятницу — Текстовый заголовок раздела настроек выхода в пятницу.
FridayExit Выход в пятницу — При включении советник закрывает все позиции в указанный час в пятницу.
LastTradeHour Последний час торговли — Последний час, в котором советник может открывать новые сделки в пятницу.
ExitHour Час выхода — Час в пятницу, к которому советник закрывает все открытые позиции.
Получить полный код

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

#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 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 string s1="-->PlusEasy Settings<--";
#include <pluseasy.mqh>
extern double EasyLot = 0.1;

extern string s2="-->PlusSwiss Settings<--";
#include <plusswiss.mqh>

extern string s3="-->PlusLinex Settings<--";
#include <pluslinex.mqh>
extern string s3_1=" Set Buy/Sell Stop=0 or Limit=1.";
extern int LinexLimit=0;
extern int Magic = 4698523;
extern int AccountNo = 961648;
extern string EA_Comment = "";
extern int MaxSpread = 4;
extern int Slippage = 2;
int OrRetry = 3;
int gi_100 = 3;
extern bool StealthMode = FALSE;
bool gi_108 = TRUE;
extern bool CloseOnlyOnProfit = FALSE;
extern bool NFA = FALSE;
extern bool No_Hedge = FALSE;
extern string CS = "==== Custom Settings ====";
extern int StopLoss = 0;
extern int TakeProfit = 0;
extern int SecureProfit = 0;
extern int SecureProfitTriger = 0;
extern bool UseCustomPair = FALSE;
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 = 3;
extern string FE = "==== Friday Exit Rules ====";
extern bool FridayExit = FALSE;
extern int LastTradeHour = 19;
extern int ExitHour = 20;
int gi_220 = 50;
double gd_224 = 25.0;
double gd_232 = 1.1;
int MaPeriod = 0;
int gi_244 = 0;
int gi_248 = 0;
int gi_252 = 0;
int gi_256 = 0;
int gi_260 = 0;
int gi_264 = 0;
int WprPeriod = 0;
int gi_272 = 0;
int gi_276 = 0;
int gi_280 = 0;
int gi_284 = 0;
int AtrLevel = 0;
int AtrPeriod = 0;
int gi_296 = 0;
int CciPeriod = 0;
int gi_304 = 0;
int Hr = 0;
int SymbolType = -1;
string gs_316 = "";
bool gi_324 = TRUE;
bool gi_328 = FALSE;
int g_stoplevel_332 = 0;
double g_minlot_336 = 0.01;
double g_maxlot_344 = 0.01;
double g_lotstep_352 = 0.01;
int g_lotsize_360 = 100000;
double g_marginrequired_364 = 1000.0;
double Pt = 0.0001;
double gd_unused_380 = 0.1;
double gd_unused_388 = 1.0;

int CheckWWW() {
   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 (SymbolType != -1) SymbolType = MyDeinit();
   return (0);
}

int start() {
      // код доступен только после оплаты
   }
   double OrPrice;
   double ld_16;
   double ld_24;
   color color_32;
   double OrLot;
   int OrTicket;
   double price_156;
   double price_164;
   string ls_180;
   string Cmt = "";
   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_324) {
      Comment("\nInitializing ...");
      Sleep(100);
      RefreshRates();
      gi_324 = FALSE;
      g_stoplevel_332 = MarketInfo(Symbol(), MODE_STOPLEVEL);
      g_minlot_336 = MarketInfo(Symbol(), MODE_MINLOT);
      g_maxlot_344 = MarketInfo(Symbol(), MODE_MAXLOT);
      g_lotsize_360 = MarketInfo(Symbol(), MODE_LOTSIZE);
      g_lotstep_352 = MarketInfo(Symbol(), MODE_LOTSTEP);
      g_marginrequired_364 = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
      if (Digits <= 3) Pt = 0.01;
      else Pt = 0.0001;
      if (Digits == 3 || Digits == 5) gd_unused_380 = 0.1;
      else gd_unused_380 = 1;
      Sleep(1000);
      gi_328 = CheckWWW();
      Sleep(1000);
      if (!gi_328) gi_324 = 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 (SymbolType <= 0) {
      if (!gi_328) {
         Comment("\nInternet connection problem");
         Alert("Internet connection problem");
         Sleep(10000);
         return (0);
      }
      Comment("\nUpdating settings ...");

      SymbolType = MyFirstInit();

      if (EasySL<=0) EasySL=StopLoss;
      if (EasyTP<=0) EasyTP=TakeProfit;      
      if (SymbolType < 0) Comment("\nInitializing ...");
   }
   if (SymbolType <= 0) {
      if (SymbolType == -8) {
         Comment("\nUnsupported currency pair " + gs_316 + ", Bid: " + DoubleToStr(Bid, Digits) + ", Ask: " + DoubleToStr(Ask, Digits));
         Alert("Unsupported currency pair " + gs_316 + ", Bid: " + DoubleToStr(Bid, Digits) + ", Ask: " + DoubleToStr(Ask, Digits));
      } else {
         Comment("\nInitialization is failed with error code " + DoubleToStr(SymbolType, 0));
         Alert("Initialization is failed with error code " + DoubleToStr(SymbolType, 0));
      }
      Sleep(10000);
      return (0);
   }
   if (MaPeriod <= 0 || WprPeriod <= 0 || AtrPeriod <= 0 || CciPeriod <= 0) {
      Comment("\nWrong initialization parameters for pair " + Symbol());
      Alert("Wrong initialization parameters for pair " + Symbol());
      Sleep(10000);
      return (0);
   }
   HideTestIndicators(TRUE);
   double M15_Close1 = iClose(NULL, PERIOD_M15, 1);
   double M15_Ma1 = iMA(NULL, PERIOD_M15, MaPeriod, 0, MODE_SMMA, PRICE_CLOSE, 1);
   double M15_Wpr1 = iWPR(NULL, PERIOD_M15, WprPeriod, 1);
   double M15_Atr1 = iATR(NULL, PERIOD_M15, AtrPeriod, 1);
   double M15_Cci1 = iCCI(NULL, PERIOD_M15, CciPeriod, PRICE_TYPICAL, 1);
   HideTestIndicators(FALSE);
   double ld_120 = 0;
   if (StringSubstr(AccountCurrency(), 0, 3) == "JPY") {
      ld_120 = MarketInfo("USDJPY" + StringSubstr(Symbol(), 6), MODE_BID);
      if (ld_120 > 0.1) ld_72 = ld_120;
      else ld_72 = 84;
   }
   if (StringSubstr(AccountCurrency(), 0, 3) == "GBP") {
      ld_120 = MarketInfo("GBPUSD" + StringSubstr(Symbol(), 6), MODE_BID);
      if (ld_120 > 0.1) ld_72 = 1 / ld_120;
      else ld_72 = 0.6211180124;
   }
   if (StringSubstr(AccountCurrency(), 0, 3) == "EUR") {
      ld_120 = MarketInfo("EURUSD" + StringSubstr(Symbol(), 6), MODE_BID);
      if (ld_120 > 0.1) ld_72 = 1 / ld_120;
      else ld_72 = 0.7042253521;
   }
   if (AutoMM > 0.0 && (!RecoveryMode)) OrLot = MathMax(g_minlot_336, MathMin(g_maxlot_344, MathCeil(MathMin(AutoMM_Max, AutoMM) / ld_72 / 100.0 * AccountFreeMargin() / g_lotstep_352 / (g_lotsize_360 / 100)) * g_lotstep_352));
   if (AutoMM > 0.0 && RecoveryMode) OrLot = CalcLots();
   if (AutoMM == 0.0) OrLot = FixedLots;
   Cmt = Cmt 
      + "\n  " 
      + "\n " 
      + "\n  Authorization - OK!" 
      + "\n -----------------------------------------------" 
      + "\n  SL = " + StopLoss + " pips / TP = " + TakeProfit + " pips" 
   + "\n  Spread = " + DoubleToStr((Ask - Bid) / Pt, 1) + " pips";
   if (Ask - Bid > MaxSpread * Pt) Cmt = Cmt + " - TOO HIGH";
   else Cmt = Cmt + " - NORMAL";
   Cmt = Cmt 
   + "\n -----------------------------------------------";
   if (AutoMM > 0.0) {
      Cmt = Cmt 
         + "\n  AutoMM - ENABLED" 
      + "\n  Risk = " + DoubleToStr(AutoMM, 1) + "%";
   }
   Cmt = Cmt 
   + "\n  Trading Lots = " + DoubleToStr(OrLot, 2);
   Cmt = Cmt 
   + "\n -----------------------------------------------";
   if (RecoveryMode) {
      Cmt = Cmt 
      + "\n  Recovery Mode - ENABLED";
   } else {
      Cmt = Cmt 
      + "\n  Recovery Mode - DISABLED";
   }
   if (StealthMode) {
      Cmt = Cmt 
      + "\n  Stealth Mode - ENABLED";
   } else {
      Cmt = Cmt 
      + "\n  Stealth Mode - DISABLED";
   }
   Cmt = Cmt 
   + "\n -----------------------------------------------";
   Comment(Cmt);
   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, 84);
   }
   if (TakeProfit < g_stoplevel_332 * Point / Pt) TakeProfit = g_stoplevel_332 * Point / Pt;
   if (StopLoss < g_stoplevel_332 * Point / Pt) StopLoss = g_stoplevel_332 * Point / Pt;
   Slippage = Slippage * Pt;
   int CountMyOpenedBuys = 0;
   int CountMyOpenedSells = 0;
   int CountOtherOpenedBuys = 0;
   int CountOtherOpenedSells = 0;
   if (CloseOnlyOnProfit) gi_264 = FALSE;
   for (int pos_152 = OrdersTotal() - 1; pos_152 >= 0; pos_152--) {
      if (!OrderSelect(pos_152, SELECT_BY_POS, MODE_TRADES)) Print("Error in OrderSelect! Position:", pos_152);
      else {
         if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() != Magic) {
               if (OrderType() == OP_BUY) CountOtherOpenedBuys++;
               else CountOtherOpenedSells++;
            }
            if (OrderMagicNumber() == Magic) {
               ld_64 += OrderProfit();
               if (OrderType() == OP_BUY) ld_48 = (Bid - OrderOpenPrice()) / Pt;
               else ld_48 = (OrderOpenPrice() - Ask) / Pt;
               ld_56 += ld_48;
               if (OrderType() == OP_BUY) {
                  CountMyOpenedBuys++;
                  if (OrderStopLoss() == 0.0 && StealthMode == FALSE) {
                     price_156 = NormalizeDouble(OrderOpenPrice() - StopLoss * Pt, Digits);
                     price_164 = NormalizeDouble(OrderOpenPrice() + TakeProfit * Pt, Digits);
                     OrderModify(OrderTicket(), OrderOpenPrice(), price_156, price_164, 0, Green);
                     continue;
                  }
                  if (Bid >= OrderOpenPrice() + TakeProfit * Pt || Bid <= OrderOpenPrice() - StopLoss * Pt || (CloseLong(OrderOpenPrice(), M15_Wpr1, M15_Close1, iOpen(NULL, PERIOD_M1,
                     1), iClose(NULL, PERIOD_M1, 1)) && TimeCurrent() - OrderOpenTime() > 180) || (FridayExit && DayOfWeek() == 5 && Hour() >= ExitHour && TimeCurrent() - OrderOpenTime() > 180)) {
                     for (int li_148 = 1; li_148 <= MathMax(1, OrRetry); li_148++) {
                        RefreshRates();
                        if (OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), Slippage, Violet)) {
                           CountMyOpenedBuys--;
                           break;
                        }
                        Sleep(MathMax(100, 1000 * gi_100));
                     }
                     Sleep(5000);
                     continue;
                  }
                  if (!(Bid - OrderOpenPrice() > SecureProfitTriger * Pt && MathAbs(OrderOpenPrice() + SecureProfit * Pt - OrderStopLoss()) >= Point)) continue;
                  OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + SecureProfit * Pt, Digits), OrderTakeProfit(), 0, Blue);
                  continue;
               }
               CountMyOpenedSells++;
               if (OrderStopLoss() == 0.0 && StealthMode == FALSE) {
                  price_156 = NormalizeDouble(OrderOpenPrice() + StopLoss * Pt, Digits);
                  price_164 = NormalizeDouble(OrderOpenPrice() - TakeProfit * Pt, Digits);
                  OrderModify(OrderTicket(), OrderOpenPrice(), price_156, price_164, 0, Green);
                  continue;
               }
               if (Ask <= OrderOpenPrice() - TakeProfit * Pt || Ask >= OrderOpenPrice() + StopLoss * Pt || (CloseShort(OrderOpenPrice(), M15_Wpr1, M15_Close1, iOpen(NULL,
                  PERIOD_M1, 1

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

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

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

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

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

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

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