wallstreetforexrobot_v3.6~.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «wallstreetforexrobot_v3.6~.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, предназначенный для автоматической торговли на валютном рынке. Работает с использованием внешних динамических библиотек WALLSTREET.dll и wininet.dll для управления торговой сессией и проверки интернет-соединения. Анализирует рыночные данные на основе технических индикаторов, рассчитанных по минутному таймфрейму, и принимает торговые решения через вызовы функций внешней библиотеки.
Советник поддерживает ручное управление лотами, автоматическое управление рисками в процентах от свободного маржи, а также режим восстановления с корректировкой размера позиции. Предусмотрены стоп-лосс, тейк-профит, защита прибыли и возможность закрытия сделок только в прибыли. Работа советника зависит от разрешения DLL-импортов в настройках терминала.
Настройки программы
| Настройка | Описание |
|---|---|
| Magic | Магический номер — Уникальный идентификатор ордеров советника для их фильтрации и управления. |
| MaxSpread | Максимальный спред — Допустимый максимальный спред в пунктах; при превышении торговля блокируется. |
| Slippage | Допустимое проскальзывание — Максимальное допустимое проскальзывание цены при открытии и закрытии ордеров. |
| StealthMode | Стелс-режим — При включении не устанавливает стоп-лосс и тейк-профит сразу при открытии позиции. |
| CloseOnlyOnProfit | Закрытие только в прибыли — При включении ограничивает закрытие позиций только теми, которые находятся в прибыли. |
| SS | Настройки пользователя — Текстовый разделитель-заголовок для группы пользовательских настроек. |
| StopLoss | Стоп-лосс — Расстояние стоп-лосса от цены входа в пунктах. |
| TakeProfit | Тейк-профит — Расстояние тейк-профита от цены входа в пунктах. |
| SecureProfit | Защита прибыли — Размер смещения стоп-лосса в прибыльную зону при достижении условного уровня. |
| SecureProfitTriger | Триггер защиты прибыли — Пороговое расстояние в пунктах, при достижении которого активируется перемещение стоп-лосса. |
| UseCustomPair | Использовать пользовательскую пару — При включении для загрузки настроек используется пара из параметра UseSettingsFrom вместо текущего символа. |
| UseSettingsFrom | Источник настроек — Название валютной пары, из которой загружаются параметры сессии при включённом UseCustomPair. |
| MM | Управление рисками — Текстовый разделитель-заголовок для группы настроек управления рисками. |
| RecoveryMode | Режим восстановления — При включении активируется специальный алгоритм расчёта размера лота для восстановления позиции. |
| FixedLots | Фиксированный лот — Размер фиксированного лота, используемый при отключённом автоматическом управлении рисками. |
| AutoMM | Автоматическое управление рисками — Процент свободного маржи, используемый для автоматического расчёта размера лота. |
| AutoMM_Max | Максимум автоматического лота — Верхний предел размера лота при автоматическом управлении рисками. |
Поиск по коду файла
/*
Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
Website:
E-mail : p******m*@gmail.com
*/
#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 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 = 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;
int gi_180 = 50;
double gd_184 = 25.0;
double gd_192 = 1.1;
int g_period_200 = 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;
int g_period_228 = 0;
int gi_232 = 0;
int gi_236 = 0;
int gi_240 = 0;
int gi_244 = 0;
int gi_248 = 0;
int g_period_252 = 0;
int gi_256 = 0;
int g_period_260 = 0;
int gi_264 = 0;
int gi_268 = 0;
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;
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 (gi_272 != -1) gi_272 = MyDeinit();
return (0);
}
int start() {
// код доступен только после оплаты
}
double l_price_8;
double ld_16;
double ld_24;
color l_color_32;
double l_lots_40;
int l_ticket_120;
double l_price_132;
double l_price_140;
string ls_148;
string ls_0 = "";
double ld_48 = 0;
double ld_56 = 0;
double ld_64 = 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 = CheckWWW();
Sleep(1000);
if (!gi_280) gi_276 = TRUE;
}
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_200 <= 0 || g_period_228 <= 0 || g_period_252 <= 0 || g_period_260 <= 0) {
Comment("\nWrong initialization parameters for pair " + Symbol());
Alert("Wrong initialization parameters for pair " + Symbol());
Sleep(10000);
return (0);
}
HideTestIndicators(TRUE);
double l_iclose_72 = iClose(NULL, PERIOD_M15, 1);
double l_ima_80 = iMA(NULL, PERIOD_M15, g_period_200, 0, MODE_SMMA, PRICE_CLOSE, 1);
double l_iwpr_88 = iWPR(NULL, PERIOD_M15, g_period_228, 1);
double l_iatr_96 = iATR(NULL, PERIOD_M15, g_period_252, 1);
double l_icci_104 = iCCI(NULL, PERIOD_M15, g_period_260, PRICE_TYPICAL, 1);
HideTestIndicators(FALSE);
if (AutoMM > 0.0 && !RecoveryMode) l_lots_40 = 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_40 = CalcLots();
if (AutoMM == 0.0) l_lots_40 = FixedLots;
ls_0 = ls_0
+ "\n "
+ "\n "
+ "\n Authorization - OK!"
+ "\n -----------------------------------------------"
+ "\n Spread = " + DoubleToStr((Ask - Bid) / gd_324, 1) + " pips";
if (Ask - Bid > MaxSpread * gd_324) 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(l_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";
}
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", 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_112 = 0;
int l_count_116 = 0;
if (CloseOnlyOnProfit) gi_224 = 0;
for (int l_pos_128 = OrdersTotal() - 1; l_pos_128 >= 0; l_pos_128--) {
if (!OrderSelect(l_pos_128, SELECT_BY_POS, MODE_TRADES)) Print("Error in OrderSelect! Position:", l_pos_128);
else {
if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
if (OrderMagicNumber() == Magic) {
ld_64 += OrderProfit();
if (OrderType() == OP_BUY) ld_48 = (Bid - OrderOpenPrice()) / gd_324;
else ld_48 = (OrderOpenPrice() - Ask) / gd_324;
ld_56 += ld_48;
if (OrderType() == OP_BUY) {
l_count_112++;
if (OrderStopLoss() == 0.0 && Показано первые 50% кода (символов: 15494)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.