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

ea stec avg backup v5.mq4

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

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

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

О программе

Советник для MetaTrader 4, реализующий стратегию усреднения позиций с возможностью автоматического управления лотами, стоп-лоссами и тейк-профитами. Поддерживает два временных окна фильтрации торговли, режим пирамидирования и накопления прибыли по покупкам и продажам. Работает с обычными и ECN-брокерами, отображает информационную панель на графике с текущими показателями баланса, прибыли и статистикой сделок.

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

НастройкаОписание
Setting_______________0 Разделитель группы 0 — Текстовый разделитель, обозначающий начало списка настроек.
EA_OFF_AfterClear Отключение после очистки — Переключатель: при включении советник автоматически прекращает работу после закрытия всех текущих ордеров.
BrokerIsECN Брокер ECN — Переключатель для корректной работы с ECN-брокерами через дополнительную модификацию ордеров после размещения.
MagicNumber Магический номер — Целочисленный идентификатор, используемый для фильтрации и управления собственными ордерами советника.
Setting_______________1 Разделитель группы 1 — Текстовый разделитель, обозначающий начало группы настроек управления лотами.
Use_Compound Использовать сложный расчёт лота — Переключатель: при включении размер лота рассчитывается на основе свободного маржи и параметра Ketahanan; при выключении используется фиксированный Manual_LotSize.
Ketahanan Параметр устойчивости — Числовой параметр, участвующий в расчёте размера лота при включённом режиме сложного управления.
Manual_LotSize Ручной размер лота — Фиксированный размер лота, используемый при отключённом режиме сложного расчёта.
Setting_______________2a Разделитель группы 2a — Текстовый разделитель, обозначающий начало группы настроек PipStep и фильтра по времени.
UsePipStepWithCandle Использовать PipStep со свечами — Переключатель выбора метода расчёта шага усреднения: с привязкой к текущей свече или к текущей цене.
PipStepTime1 PipStep первого окна — Значение pipstep, применяемое в первом временном окне торговли.
Start1 Начало первого окна — Время начала первого торгового окна фильтрации.
End1 Конец первого окна — Время окончания первого торгового окна фильтрации.
PipStepTime2 PipStep второго окна — Значение pipstep, применяемое во втором временном окне торговли.
Start2 Начало второго окна — Время начала второго торгового окна фильтрации.
End2 Конец второго окна — Время окончания второго торгового окна фильтрации.
Setting_______________2b Разделитель группы 2b — Текстовый разделитель, обозначающий начало группы настроек усреднения.
UsePyramiding Использовать пирамидирование — Переключатель режима усреднения: при включении советник добавляет позиции при движении против открытой сделки.
Multiply Множитель лота — Множитель, определяющий увеличение размера лота при каждом последующем уровне усреднения.
MaxLevels Максимум уровней — Максимальное допустимое количество уровней усреднения.
Setting_______________3 Разделитель группы 3 — Текстовый разделитель, обозначающий начало группы настроек управления стоп-лосс и тейк-профит.
Accumulative_BuySell_Profit Накопление прибыли BUY/SELL — Переключатель: при включении целевая прибыль накапливается по совокупной прибыли покупок и продаж, а не по каждой стороне отдельно.
TakeProfit_in_Pips Тейк-профит в пунктах — Размер тейк-профита, заданный в пунктах цены.
TargetPercent_PerTrade Целевой процент на сделку — Целевой процент прибыли от баланса, достижение которого инициирует закрытие сделок.
TargetPercent_PerDay Целевой процент за день — Целевой процент прибыли за торговый день, достижение которого приводит к остановке советника.
Получить полный код

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

/*

*/

#import "stdlib.ex4"
   string ErrorDescription(int a0); // DA69CBAFF4D38B87377667EEC549DE5A
#import

string Gs_76 = "EA STEC AVERAGING BACKUP v5";
extern string Setting_______________0 = "--------------------------";
extern bool EA_OFF_AfterClear = FALSE;
extern bool BrokerIsECN = FALSE;
extern int MagicNumber = 123123123;
string Gs_104 = "avg backup v5";
extern string Setting_______________1 = "---------- Lot Management";
extern bool Use_Compound = TRUE;
extern double Ketahanan = 50000.0;
extern double Manual_LotSize = 0.01;
extern string Setting_______________2a = "---------- PipStep + TimeFilter";
extern bool UsePipStepWithCandle = TRUE;
extern double PipStepTime1 = 20.0;
extern string Start1 = "00:00";
extern string End1 = "12:00";
extern double PipStepTime2 = 20.0;
extern string Start2 = "12:00";
extern string End2 = "23:59";
extern string Setting_______________2b = "---------- Averaging";
extern bool UsePyramiding = TRUE;
extern double Multiply = 1.6;
extern int MaxLevels = 20;
extern string Setting_______________3 = "---------- SL & TP Management";
extern bool Accumulative_BuySell_Profit = FALSE;
extern int TakeProfit_in_Pips = 1000;
extern double TargetPercent_PerTrade = 0.5;
extern double TargetPercent_PerDay = 3.0;
int Gi_256 = 0;
int Gi_260 = 2;
int Gi_264 = 10;
double Gd_268 = 0.0;
double Gd_276;
double Gd_284;
double Gd_292;
double Gd_300;
string Gs_308;
string Gs_316;
string Gs_324;
string Gs_332;
int Gi_344;
int Gi_372;
int Gi_380;
string Gs_384;
double Gd_392;
double Gd_400;
string Gs_416;
string Gs_424;
string Gs_432;
string Gs_440;
string Gs_448;
string Gs_456;
double Gd_464;
double Gd_472;
double Gd_480;
bool Gi_488;
bool Gi_492;
int Gi_496;
int Gi_500;
int Gi_504;

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

int deinit() {
   return (0);
}

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

int f0_4(int Ai_0, string As_4, double Ad_12, double Ad_20, double Ad_28, double Ad_36, int Ai_44, color Ai_48) {
   int Li_56;
   bool Li_60;
   int Li_64;
   string Ls_68;
   int Li_52 = 0;
   if (!BrokerIsECN) Li_56 = OrderSend(Symbol(), Ai_0, Ad_12, Ad_20, Gi_264, Ad_28, Ad_36, As_4, Ai_44, Li_52, Ai_48);
   if (BrokerIsECN) {
      Li_56 = OrderSend(Symbol(), Ai_0, Ad_12, Ad_20, Gi_264, 0, 0, As_4, Ai_44, Li_52, Ai_48);
      if (Li_56 > 0) {
         if (Ad_36 > 0.0 && Ad_28 > 0.0) {
            while (IsTradeContextBusy()) Sleep(100);
            Li_60 = OrderModify(Li_56, OrderOpenPrice(), Ad_28, Ad_36, OrderExpiration(), CLR_NONE);
            if (!Li_60) {
               Li_64 = GetLastError();
               Print(Symbol(), " ||=========================> ECN SL/TP  order modify failed with error(", Li_64, "): ", ErrorDescription(Li_64));
            }
         }
         if (Ad_36 != 0.0 && Ad_28 == 0.0) {
            while (IsTradeContextBusy()) Sleep(100);
            Li_60 = OrderModify(Li_56, OrderOpenPrice(), OrderStopLoss(), Ad_36, OrderExpiration(), CLR_NONE);
            if (!Li_60) {
               Li_64 = GetLastError();
               Print(Symbol(), " ||=========================> ECN TP  order modify failed with error(", Li_64, "): ", ErrorDescription(Li_64));
            }
         }
         if (Ad_36 == 0.0 && Ad_28 != 0.0) {
            while (IsTradeContextBusy()) Sleep(100);
            Li_60 = OrderModify(Li_56, OrderOpenPrice(), Ad_28, OrderTakeProfit(), OrderExpiration(), CLR_NONE);
            if (!Li_60) {
               Li_64 = GetLastError();
               Print(Symbol(), " ||=========================> ECN SL  order modify failed with error(", Li_64, "): ", ErrorDescription(Li_64));
            }
         }
      }
   }
   if (Li_56 < 0) {
      if (Ai_0 == OP_BUY) Ls_68 = "OP_BUY 1";
      if (Ai_0 == OP_SELL) Ls_68 = "OP_SELL 1";
      Li_64 = GetLastError();
      Print(Symbol(), " ||=========================> ", Ls_68, " order send error(", Li_64, "): ", ErrorDescription(Li_64));
      return (0);
   }
   return (1);
}

int f0_7() {
   Gi_344 = -1;
   if (OrdersTotal() == 0) return (0);
   for (int Li_0 = OrdersTotal() - 1; Li_0 >= 0; Li_0--) {
      if (OrderSelect(Li_0, SELECT_BY_POS)) {
         if (OrderSymbol() == Symbol()) {
            if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == MagicNumber) {
               Gi_344 = OrderTicket();
               return (1);
            }
         }
      }
   }
   return (0);
}

int f0_8() {
   Gi_344 = -1;
   if (OrdersTotal() == 0) return (0);
   for (int Li_0 = OrdersTotal() - 1; Li_0 >= 0; Li_0--) {
      if (OrderSelect(Li_0, SELECT_BY_POS)) {
         if (OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber) {
            Gi_344 = OrderTicket();
            return (1);
         }
      }
   }
   return (0);
}

int f0_21() {
   Gi_344 = -1;
   if (OrdersTotal() == 0) return (0);
   for (int Li_0 = OrdersTotal() - 1; Li_0 >= 0; Li_0--) {
      if (OrderSelect(Li_0, SELECT_BY_POS)) {
         if (OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber) {
            Gi_344 = OrderTicket();
            return (1);
         }
      }
   }
   return (0);
}

int f0_28() {
   Gi_344 = -1;
   if (OrdersTotal() == 0) return (0);
   for (int Li_0 = OrdersTotal() - 1; Li_0 >= 0; Li_0--) {
      if (OrderSelect(Li_0, SELECT_BY_POS)) {
         if (OrderSymbol() == Symbol() && OrderType() == OP_BUYLIMIT && OrderMagicNumber() == MagicNumber) {
            Gi_344 = OrderTicket();
            return (1);
         }
      }
   }
   return (0);
}

int f0_24() {
   Gi_344 = -1;
   if (OrdersTotal() == 0) return (0);
   for (int Li_0 = OrdersTotal() - 1; Li_0 >= 0; Li_0--) {
      if (OrderSelect(Li_0, SELECT_BY_POS)) {
         if (OrderSymbol() == Symbol() && OrderType() == OP_SELLLIMIT && OrderMagicNumber() == MagicNumber) {
            Gi_344 = OrderTicket();
            return (1);
         }
      }
   }
   return (0);
}

double f0_1(double Ad_0) {
   double Ld_8 = MarketInfo(Symbol(), MODE_MAXLOT);
   double Ld_16 = MarketInfo(Symbol(), MODE_MINLOT);
   double Ld_24 = MarketInfo(Symbol(), MODE_LOTSTEP);
   double Ld_32 = Ld_24 * NormalizeDouble(Ad_0 / Ld_24, 0);
   Ld_32 = MathMax(MathMin(Ld_8, Ld_32), Ld_16);
   return (Ld_32);
}

int f0_26() {
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() != OP_BUY && OrderType() != OP_SELL) OrderDelete(OrderTicket());
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() != OP_BUY && OrderType() != OP_SELL) OrderDelete(OrderTicket());
      }
   }
   return (0);
}

int f0_0() {
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   return (0);
}

int f0_13() {
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   return (0);
}

int f0_10() {
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_SELL && OrderProfit() > 0.0) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_SELL && OrderProfit() > 0.0) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   return (0);
}

int f0_9() {
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_BUY && OrderProfit() > 0.0) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   for (Gi_380 = OrdersTotal(); Gi_380 >= 0; Gi_380--) {
      OrderSelect(Gi_380, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_BUY && OrderProfit() > 0.0) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
      }
   }
   return (0);
}

void f0_17() {
   int Li_12;
   double Ld_20;
   double Ld_28;
   int Li_36;
   double Ld_40;
   double Ld_60;
   int Li_68;
   int Li_0 = 0;
   int Li_4 = 0;
   int Li_8 = 0;
   for (Li_0 = 0; Li_0 < OrdersTotal(); Li_0++) {
      OrderSelect(Li_0, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
            Ld_20 = OrderOpenPrice();
            Ld_28 = OrderLots();
            Li_36 = OrderOpenTime();
            Gs_384 = OrderComment();
            Li_12 = OrderMagicNumber();
            Li_4++;
         }
      }
   }
   for (Li_0 = 0; Li_0 < OrdersTotal(); Li_0++) {
      OrderSelect(Li_0, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
            Ld_40 += OrderProfit();
            Li_8++;
         }
      }
   }
   string Ls_48 = Gs_104;
   int Li_56 = (Ld_20 - Close[1]) / Gd_268;
   if ((!Accumulative_BuySell_Profit) && Li_4 > 0 && Li_36 < Time[0] && Li_56 >= f0_5() && Li_4 < MaxLevels) {
      ObjectCreate("textpo1" + Time[0], OBJ_TEXT, 0, Time[0] - 60 * (1 * Period()), Low[1] - 5.0 * Gd_268);
      ObjectSetText("textpo1" + Time[0], "" + Li_56 + "p", 7, "Arial", Red);
      Ld_60 = Ask;
      if (TakeProfit_in_Pips > 0) Gd_392 = NormalizeDouble(Ld_60 + TakeProfit_in_Pips * Gd_268, Digits);
      else Gd_392 = 0;
      if (Gi_256 > 0) Gd_400 = NormalizeDouble(Ld_60 - Gi_256 * Gd_268, Digits);
      else Gd_400 = 0;
      Gi_372 = f0_4(OP_BUY, Ls_48, f0_1(Multiply * Ld_28), Ld_60, Gd_400, Gd_392, Li_12, Blue);
      for (Li_0 = 0; Li_0 < OrdersTotal(); Li_0++) {
         OrderSelect(Li_0, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol())
            if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) Li_68++;
      }
      if (Li_8 < Li_68 && Ld_40 > 0.0) f0_13();
   } else {
      if (Accumulative_BuySell_Profit && Li_4 > 0 && Li_8 <= Li_4 && Li_36 < Time[0] && Li_56 >= f0_5() && Li_4 < MaxLevels) {
         ObjectCreate("textpo1" + Time[0], OBJ_TEXT, 0, Time[0] - 60 * (1 * Period()), Low[1] - 5.0 * Gd_268);
         ObjectSetText("textpo1" + Time[0], "" + Li_56 + "p", 7, "Arial", Red);
         Ld_60 = Ask;
         if (Ta

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

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

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

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

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

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

Стоимость полного кода
3 418,10₽ ≈ $41.78