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