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

autoprofitscalper@amazing_owner.mq4

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

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

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

О программе

Этот советник для MetaTrader 4 предназначен для автоматической торговли валютными парами. Он отслеживает разницу между котировками брокера и внешнего источника (Saxo Bank), получаемого через стороннюю DLL, и открывает позиции BUY или SELL, когда спред достигает заданного порога. Советник поддерживает как автоматическое исполнение ордеров через торговый API MetaTrader, так и ручной режим, имитирующий ввод с клавиатуры в окно торговли.

Система управляет открытыми позициями, устанавливая или модифицируя уровни TakeProfit и StopLoss, а также закрывает позиции при достижении фиксированных порогов прибыли или убытка. Количество одновременных сделок ограничено, а размер лота рассчитывается как фиксированное значение или как процент от депозита с учётом минимальных и максимальных ограничений. Настройки сохраняются между сессиями с помощью глобальных переменных терминала.

Советник предоставляет визуальную информацию на графике, включая горизонтальные линии уровней bid/ask, текстовые метки с текущим спредом и значениями сигналов, а также цветовые индикаторы. Реализованы звуковые оповещения о торговых событиях, отрисовка сетки на графике и мониторинг состояния связи с внешним источником котировок с уведомлениями о проблемах.

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

НастройкаОписание
read_pr_nastr Чтение настроек — Включает загрузку параметров из глобальных переменных терминала при запуске для восстановления настроек предыдущей сессии
trade Торговля — Включает или отключает возможность размещения и управления торговыми ордерами
MinUr Минимальный уровень — Минимальный порог спреда в пунктах для генерации торгового сигнала
Slippage Проскальзывание — Допустимое отклонение цены исполнения ордера от запрошенной
Lots Лот — Фиксированный размер лота для открытия позиции
LotsPercent Процент от депозита — Процент от свободного маржи для расчёта размера лота
max_lots Максимальный лот — Верхний предел размера лота при автоматическом расчёте
TakeProfit Тейк-профит — Уровень фиксации прибыли в пунктах для открытых позиций
StopLoss Стоп-лосс — Уровень ограничения убытка в пунктах для открытых позиций
FixTP Фиксированный ТП — Фиксированный уровень в пунктах для принудительного закрытия позиции по прибыли
FixSL Фиксированный СЛ — Фиксированный уровень в пунктах для принудительного закрытия позиции по убытку
sdvig_bid Сдвиг bid — Смещение значения bid, полученного от внешнего источника, в пунктах
luft Лофт — Дополнительное смещение цены исполнения ордера в пунктах от текущей рыночной цены
Fixspred Фиксированный спред — Фиксированное значение спреда в пунктах для расчётов вместо реального
whc Режим ТП/СЛ — Активирует специальный режим управления уровнями TakeProfit и StopLoss
NTrades Макс. сделок — Максимальное количество одновременно открытых ордеров на одном символе
sound Звук — Включает звуковые оповещения при торговых событиях
spred_saxo Спред Saxo — Использует спред Saxo Bank для расчёта пороговых значений сигналов
visual Визуализация — Включает отображение графических элементов на графике
visual_bid Визуализация bid — Отображает текстовую метку текущего значения bid на графике
visual_pr_kotir Проблемы котировок — Показывает уведомления о проблемах с получением котировок от внешнего источника
new_kot Новый режим котировок — Переключает расчёт спреда и сигналов на альтернативный метод на основе средних котировок
ruka Ручной режим — Активирует ручное управление через имитацию ввода в окно торговли MetaTrader
Dig Точность — Количество знаков после запятой при вводе размера лота в ручном режиме
setka Сетка — Включает отрисовку горизонтальной сетки линий на графике
mt_setka_vykl Сетка MT4 — Включает отображение стандартной сетки MetaTrader через вызов окна настроек
Получить полный код

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

#property show_inputs

#include <WinUser32.mqh>

#import "stdlib.ex4"
   string ErrorDescription(int a0); // DA69CBAFF4D38B87377667EEC549DE5A
#import "user32.dll"
   int GetDlgItem(int a0, int a1);
   int GetAncestor(int a0, int a1);
#import "newest.dll"
   string val_bid_ask(string a0);
   string inits(string a0);
#import

string Gs_76 = "The Skyla Foundation ||  Best EA ||  Version 3.2";
extern bool read_pr_nastr = FALSE;
extern bool trade = TRUE;
extern double MinUr = 5.0;
extern double Slippage = 2.0;
extern double Lots = 0.1;
extern int LotsPercent = 40;
extern double max_lots = 2.9;
extern int TakeProfit = 0;
extern int StopLoss = 0;
extern double FixTP = 1.0;
extern double FixSL = 7.0;
extern int sdvig_bid = 0;
extern int luft = 0;
extern int Fixspred = 0;
extern bool whc = FALSE;
extern int NTrades = 3;
extern bool sound = TRUE;
extern bool spred_saxo = TRUE;
extern bool visual = TRUE;
extern bool visual_bid = TRUE;
extern bool visual_pr_kotir = FALSE;
extern bool new_kot = FALSE;
extern bool ruka = FALSE;
extern int Dig = 1;
extern bool setka = FALSE;
extern bool mt_setka_vykl = FALSE;
string Gs_212 = "";
int Gi_220 = 3;
double Gd_224 = 0.0;
int Gi_232 = 300;
double Gd_236;
double Gd_244;
double Gd_252;
int Gi_260;
color G_color_264 = Green;
string Gs_268 = "expert.wav";
double G_point_276;
string Gs_dummy_284;
string Gs_dummy_292;
int G_fontsize_300;
int G_fontsize_304;
double Gd_308;
double Gd_316;
int G_magic_324;
int Gi_328;
int Gi_332;
double Gd_336;
int G_ticket_344;
int G_pos_348;
int G_count_352;
string Gs_dummy_356;
string Gs_dummy_364;
string Gs_372;
string Gs_380;
string Gs_388;
double Gd_unused_396 = 0.0;
double Gd_404;
double Gd_412;
double Gd_420;
double Gd_428;
double Gd_436;
double Gd_444;
double Gd_452;
string Gs_dummy_460;
string Gs_468;
double Gd_476;
double Gd_484;
int Gi_492;
int Gi_unused_496 = 0;
int Gi_500;
int Gi_504;
int Gi_508;
int Gi_512;
extern int Account = 99460;
string Gs_520;
double Gd_528;
double G_ask_536;
double G_marginrequired_544;
double G_lotstep_552;
double Gd_560;
double Gd_568;
string Gs_576 = "";
string Gs_584;
string Gs_592;
string G_symbol_600;
string Gs_608;
string Gs_616;
string Gs_dummy_624;
bool Gi_632 = FALSE;
int Gi_unused_636;

int start() {
      // код доступен только после оплаты
   }

string f0_2(string As_0, int Ai_8) {
   string Ls_ret_12;
   if (Ai_8 == -1) Ls_ret_12 = StringSubstr(As_0, 0, 2);
   else Ls_ret_12 = StringSubstr(As_0, 7 * Ai_8 + 3, 6);
   return (Ls_ret_12);
}

double f0_3(string As_0, int Ai_8) {
   double str2dbl_12;
   int Li_20 = StringFind(As_0, "!", 0);
   if (Ai_8 == 0) str2dbl_12 = StrToDouble(StringSubstr(As_0, 0, Li_20));
   else str2dbl_12 = StrToDouble(StringSubstr(As_0, Li_20 + 1, 7));
   return (str2dbl_12);
}

int f0_11() {
   double Ld_0;
   double Ld_8;
   double Ld_16;
   int Li_24;
   if (LotsPercent > 0) {
      Ld_0 = NormalizeDouble(NormalizeDouble(AccountEquity() / G_marginrequired_544, 2) * LotsPercent / 100.0, 2);
      Ld_8 = Ld_0;
      Li_24 = Ld_8 / G_lotstep_552;
      Ld_16 = Li_24 * G_lotstep_552;
      Gd_336 = Ld_16;
      if (Gd_336 < Gd_560) Gd_336 = Gd_560;
      if (Gd_336 > Gd_568) Gd_336 = Gd_568;
      Lots = Gd_336;
   }
   if (Lots > max_lots) Lots = max_lots;
   return (0);
}

int f0_9() {
   double price_0;
   if (OrdersTotal() > 0) {
      for (int pos_8 = 0; pos_8 < OrdersTotal(); pos_8++) {
         OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES);
         if (OrderType() == OP_BUY) {
            if (OrderMagicNumber() == G_magic_324) {
               price_0 = NormalizeDouble(OrderOpenPrice(), Gi_328) + TakeProfit * G_point_276;
               if (NormalizeDouble(OrderTakeProfit(), Gi_328) != price_0) OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), price_0, 0, Red);
            }
         }
      }
   }
   return (0);
}

int f0_8() {
   double price_0;
   if (OrdersTotal() > 0) {
      for (int pos_8 = 0; pos_8 < OrdersTotal(); pos_8++) {
         OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES);
         if (OrderType() == OP_SELL) {
            if (OrderMagicNumber() == G_magic_324) {
               price_0 = NormalizeDouble(OrderOpenPrice(), Gi_328) - TakeProfit * G_point_276;
               if (NormalizeDouble(OrderTakeProfit(), Gi_328) != price_0) OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), price_0, 0, Red);
            }
         }
      }
   }
   return (0);
}

int f0_0() {
   double price_0;
   if (OrdersTotal() > 0) {
      for (int pos_8 = 0; pos_8 < OrdersTotal(); pos_8++) {
         OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES);
         if (OrderType() == OP_BUY) {
            if (OrderMagicNumber() == G_magic_324) {
               price_0 = NormalizeDouble(OrderOpenPrice(), Gi_328) - StopLoss * G_point_276;
               if (NormalizeDouble(OrderStopLoss(), Gi_328) != price_0) OrderModify(OrderTicket(), OrderOpenPrice(), price_0, OrderTakeProfit(), 0, Red);
            }
         }
      }
   }
   return (0);
}

int f0_7() {
   double price_0;
   if (OrdersTotal() > 0) {
      for (int pos_8 = 0; pos_8 < OrdersTotal(); pos_8++) {
         OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES);
         if (OrderType() == OP_SELL) {
            if (OrderMagicNumber() == G_magic_324) {
               price_0 = NormalizeDouble(OrderOpenPrice(), Gi_328) + StopLoss * G_point_276;
               if (NormalizeDouble(OrderStopLoss(), Gi_328) != price_0) OrderModify(OrderTicket(), OrderOpenPrice(), price_0, OrderTakeProfit(), 0, Red);
            }
         }
      }
   }
   return (0);
}

void f0_6() {
   for (int pos_0 = 0; pos_0 < OrdersTotal(); pos_0++) {
      if (OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == G_symbol_600 && OrderMagicNumber() == G_magic_324) {
            if (OrderType() == OP_BUY) {
               Gd_436 = MarketInfo(OrderSymbol(), MODE_BID) - OrderOpenPrice();
               Gd_452 = Gd_484 * G_point_276;
               Gd_452 = NormalizeDouble(Gd_452, Gi_328);
               if (Gd_436 >= Gd_452) {
                  OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID) + luft * G_point_276, Slippage);
                  return;
               }
            }
            if (OrderType() == OP_SELL) {
               Gd_444 = OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_ASK);
               Gd_452 = Gd_484 * G_point_276;
               Gd_452 = NormalizeDouble(Gd_452, Gi_328);
               if (Gd_444 >= Gd_452) {
                  OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK) - luft * G_point_276, Slippage);
                  return;
               }
            }
         }
      }
   }
}

void f0_4() {
   for (int pos_0 = 0; pos_0 < OrdersTotal(); pos_0++) {
      if (OrderSelect(pos_0, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol() == G_symbol_600 && OrderMagicNumber() == G_magic_324) {
            if (OrderType() == OP_BUY) {
               Gd_436 = OrderOpenPrice() - MarketInfo(OrderSymbol(), MODE_BID);
               Gd_436 = NormalizeDouble(Gd_436, Gi_328);
               Gd_452 = FixSL * G_point_276;
               Gd_452 = NormalizeDouble(Gd_452, Gi_328);
               if (Gd_436 >= Gd_452) {
                  OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID) + luft * G_point_276, Slippage);
                  return;
               }
            }
            if (OrderType() == OP_SELL) {
               Gd_444 = MarketInfo(OrderSymbol(), MODE_ASK) - OrderOpenPrice();
               Gd_444 = NormalizeDouble(Gd_444, Gi_328);
               Gd_452 = FixSL * G_point_276;
               Gd_452 = NormalizeDouble(Gd_452, Gi_328);
               if (Gd_444 >= Gd_452) {
                  OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK) - luft * G_point_276, Slippage);
                  return;
               }
            }
         }
      }
   }
}

int deinit() {
   ObjectDelete("BidMT");
   ObjectDelete("BidGL");
   ObjectDelete("RMTGL");
   ObjectDelete("RMTGLsig");
   ObjectDelete("bid_saxo");
   ObjectDelete("bid_mt");
   ObjectDelete("bid label");
   ObjectDelete("ask label");
   ObjectDelete("ask_saxo");
   Comment("");
   return (0);
}

int f0_12(int Ai_0) {
   G_symbol_600 = f0_2(Gs_584, Ai_0);
   string Ls_4 = G_symbol_600;
   if (Gi_632) Print("symb " + G_symbol_600);
   int Li_12 = StringFind(Symbol(), G_symbol_600, 0);
   if (Li_12 != 1) {
      if (Li_12 > 0) Gs_576 = StringSubstr(Symbol(), 0, Li_12 - 1);
      if (Li_12 == 0) {
         Li_12 += 6;
         if (Li_12 >= 6) Gs_576 = StringSubstr(Symbol(), Li_12, StringLen(Symbol()) - 1);
      }
   }
   G_symbol_600 = G_symbol_600 + Gs_576;
   RefreshRates();
   Gd_528 = MarketInfo(G_symbol_600, MODE_BID);
   G_ask_536 = MarketInfo(G_symbol_600, MODE_ASK);
   Gs_592 = Gs_592 + G_symbol_600 + " ";
   Gi_328 = MarketInfo(G_symbol_600, MODE_DIGITS);
   if (Gi_328 == 3) {
      Gi_328 = 2;
      Slippage = 10.0 * Slippage;
   }
   if (Gi_328 == 5) {
      Gi_328 = 4;
      Slippage = 10.0 * Slippage;
   }
   if (Gi_632) Print("symb " + G_s

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

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

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

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

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

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

Стоимость полного кода
2 415,40₽ ≈ $29.52