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

Cobra Adrenaline ver 1.11

cobra adrenaline 111.mq4
Вы автор или правообладатель?

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

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

О программе

Cobra Adrenaline ver 1.11 — торговый советник для MetaTrader 4, разработанный CoolMan (2010–2011). Советник работает на основе скользящей средней (SMA) с настраиваемым периодом и использует внешнюю DLL-библиотеку cobra.dll для расчёта шагов и возврата в пипах. Основная логика сосредоточена в функции start(), вызываемой на каждом тике.

Советник выставляет лимитные ордера Buy Limit и Sell Limit с возможностью сетки (lim_setup) и динамического расчёта лота (Dinamic_lot). Имеются функции модификации стоп-лосса и тейк-профита, а также закрытия позиций при достижении определённых условий. Встроена защита по балансу и эквити (balance, balance_f, balance_p).

На графике отображается информационная панель с данными о счёте, балансе, эквити, направлении BUY/SELL и параметрах работы. Доступен временной фильтр (t1, t2), переключатели части сигналов (part_buy, part_sell) и магический номер для идентификации ордеров. Для работы требуется разрешение на использование DLL.

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

НастройкаОписание
Name Название советника, отображаемое на графике
Cop Строка копирайта, отображаемая в заголовке советника
no Текстовый параметр-заглушка для информационной панели на графике
n1 Текстовая метка для информационной панели на графике
n_s1 Текстовая метка-разделитель для информационной панели на графике
n2 Текстовая метка для информационной панели на графике
n2_ Текстовая метка для информационной панели на графике
Dinamic_lot Коэффициент динамического расчёта размера позиции на основе свободного маржинального баланса (0 — отключено)
Lots Фиксированный размер лота для открытия ордеров
n_s7 Текстовая метка-разделитель для информационной панели на графике
n7 Текстовая метка для информационной панели на графике
n7_ Текстовая метка для информационной панели на графике
balance Минимальный баланс для работы советника (при достижении — остановка)
n11 Текстовая метка для информационной панели на графике
n11_ Текстовая метка для информационной панели на графике
balance_f Минимальный эквити для работы советника (при достижении — полная остановка)
n12 Текстовая метка для информационной панели на графике
n12_ Текстовая метка для информационной панели на графике
balance_p Процент от баланса для фильтрации (проверка баланса в процентах)
n_s9 Текстовая метка-разделитель для информационной панели на графике
part_ind Заголовок индикатора направления BUY/SELL на информационной панели
part_buy Переключатель включения/отключения покупочных сигналов (TRUE/FALSE)
part_sell Переключатель включения/отключения продажных сигналов (TRUE/FALSE)
n_s8 Текстовая метка-разделитель для информационной панели на графике
n9 Текстовая метка для информационной панели на графике
greed Коэффициент для расчёта расстояния до тейк-профита (в пипах)
n_s2 Текстовая метка-разделитель для информационной панели на графике
n3 Текстовая метка для информационной панели на графике
lim_step Шаг в пунктах между лимитными ордерами в сетке
n_s3 Текстовая метка-разделитель для информационной панели на графике
n8 Текстовая метка для информационной панели на графике
lim_setup Количество лимитных ордеров в сетке при открытии
n_s4 Текстовая метка-разделитель для информационной панели на графике
n4 Текстовая метка для информационной панели на графике
Op_step Шаг в пунктах для расчёта условий открытия лимитных ордеров
n_s5 Текстовая метка-разделитель для информационной панели на графике
n5 Текстовая метка для информационной панели на графике
period Период скользящей средней (SMA) для анализа ценовых данных
n_s6 Текстовая метка-разделитель для информационной панели на графике
n6 Текстовая метка для информационной панели на графике
MagicNumber Магический номер для идентификации ордеров, управляемых советником
n13 Текстовая метка для информационной панели на графике
extended Расширение диапазона проверки тейк-профита в пунктах
n14 Текстовая метка для информационной панели на графике
n15 Текстовая метка для информационной панели на графике
time_f Переключатель временного фильтра (TRUE — торговля только в заданном интервале часов)
t1 Час начала торговой сессии для временного фильтра
t2 Час окончания торговой сессии для временного фильтра
n16 Текстовая метка для информационной панели на графике
p1 Цвет для отображения заголовка информационной панели на графике
p2 Цвет для отображения данных информационной панели на графике
p3 Цвет для отображения разделителей информационной панели на графике
p4 Цвет для отображения статуса информационной панели на графике
Получить полный код

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

/*
   Generated by ex4-to-mq4 decompiler FREEWARE 4.0.451.7
   Website: Ht tp:// w w W. m eT AQ U oT ES . n E t
   E-mail :  SU pPo r t@me ta qUO tES. neT
*/

#import "cobra.dll"
   string check_acc(int a0);
   bool ma_step_sell(double a0, double a1, double a2, double a3, int a4);
   bool ma_step_buy(double a0, double a1, double a2, double a3, int a4);
   double get_ret_pip(int a0, double a1, double a2, double a3);
   double get_ret_p_pip(double a0, double a1, double a2, double a3, double a4);
#import

extern string Name = "+++++++++ Cobra Adrenaline ver 1.11 +++++++++";
extern string Cop = "++++++++ Copyright ? 2010, CoolMan +++++++++";
extern string no = "";
extern string n1 = "??????? ?????????";
extern string n_s1 = "------------------------------------------";
extern string n2 = "???????????? ???";
extern string n2_ = "???? 0, ?? ????????";
extern double Dinamic_lot = 0.0;
extern double Lots = 0.1;
extern string n_s7 = "------------------------------------------";
extern string n7 = "???????? ??????. ?????????? ?????";
extern string n7_ = "???? 0, ?? ????????";
extern double balance = 0.0;
extern string n11 = "????????????? ??????. ?????????? ?????";
extern string n11_ = "???? 0, ?? ????????";
extern double balance_f = 0.0;
extern string n12 = "?????????? ??????. ????????? % ? ????";
extern string n12_ = "???? 0, ?? ????????";
extern double balance_p = 0.0;
extern string n_s9 = "------------------------------------------";
extern string part_ind = "??????????? ???????? BUY/SELL";
extern bool part_buy = TRUE;
extern bool part_sell = TRUE;
extern string n_s8 = "------------------------------------------";
extern string n9 = "????????? ???????? ?????";
extern double greed = 1.0;
extern string n_s2 = "------------------------------------------";
extern string n3 = "??? ????? ????????";
extern int lim_step = 50;
extern string n_s3 = "------------------------------------------";
extern string n8 = "?????????? ??????????";
extern int lim_setup = 5;
extern string n_s4 = "------------------------------------------";
extern string n4 = "?????? ?? ?????????? ???????";
extern int Op_step = 10;
extern string n_s5 = "------------------------------------------";
extern string n5 = "?????? ?????????? ???????";
extern int period = 144;
extern string n_s6 = "------------------------------------------";
extern string n6 = "?????????? ?????";
extern int MagicNumber = D'14.02.2009 04:31:30';
extern string n13 = "??? ??????? ????????? ? 1 ?? 10";
extern int extended = 1;
extern string n14 = "??????? ??????? ? ?????. ???????? ? t1 ?? t2";
extern string n15 = "?? ???????? ?????????, ????????, ?? 23 ?? 2";
extern bool time_f = FALSE;
extern int t1 = 7;
extern int t2 = 11;
extern string n16 = "?????????????? ??????";
extern color p1 = DarkTurquoise;
extern color p2 = DodgerBlue;
extern color p3 = MediumSeaGreen;
extern color p4 = Red;
string Gs_440 = "Cobra Adrenaline ver 1.11";
datetime Gt_448;
int Gi_452 = 0;
int Gi_464 = 0;
string Gs_468;
int Gi_492 = 0;
double Gd_496 = 0.0;
double Gd_504 = 0.0;
double Gd_512;
double Gd_520;
double Gd_528;

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

int deinit() {
   return (0);
}

int start() {
      // код доступен только после оплаты
   }
   double Ld_92;
   double Ld_100;
   double Ld_108;
   double Ld_116;
   bool Li_124;
   bool Li_128;
   double Ld_132;
   double Ld_140;
   double Ld_180;
   double Ld_188;
   if (!IsDllsAllowed()) {
      Comment("????? dll ????????. ????????? ?????????.");
      Print("????? dll ????????. ????????? ?????????.");
      return (0);
   }
   int Li_0 = OrdersTotal() - 1;
   int Li_8 = 0;
   int Li_12 = 0;
   for (int Li_4 = 0; Li_4 <= Li_0; Li_4++) {
      OrderSelect(Li_4, SELECT_BY_POS);
      if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
         if (OrderType() < OP_BUYLIMIT) Li_8++;
         if (OrderType() > OP_SELL && OrderType() < OP_BUYSTOP) Li_12++;
      }
   }
   if (Li_8 != Gi_492 && Li_8 == 0) CloseLimit();
   bool Li_16 = TRUE;
   if (time_f == TRUE) {
      if (Hour() >= t1 && Hour() <= t2) Li_16 = TRUE;
      else Li_16 = FALSE;
   }
   bool Li_20 = TRUE;
   if (Time[0] == Gi_448) Li_20 = FALSE;
   Gt_448 = Time[0];
   int Li_24 = 0;
   while (IsTradeContextBusy()) {
      Sleep(60000);
      Li_24++;
      if (Li_24 >= 10) {
         Print("???????? ????? ?????");
         break;
      }
   }
   HideTestIndicators(FALSE);
   if (Seconds() % 60 == 0) Gd_512 = ND(iMA(Symbol(), 0, period, 0, MODE_SMA, PRICE_CLOSE, 1));
   HideTestIndicators(FALSE);
   if (Gd_512 == 0.0) return (0);
   double Ld_28 = MarketInfo(Symbol(), MODE_MINLOT);
   double Ld_36 = MarketInfo(Symbol(), MODE_MARGININIT);
   double Ld_44 = MarketInfo(Symbol(), MODE_STOPLEVEL);
   double Ld_52 = (Gd_520 + Ld_36) * Ld_28;
   double Ld_60 = Ld_28;
   for (double Ld_68 = 0; Ld_60 < 1.0; Ld_68++) Ld_60 = 10.0 * Ld_60;
   int Li_80 = 0;
   Li_8 = 0;
   Li_12 = 0;
   for (Li_4 = Li_0; Li_4 >= 0; Li_4--) {
      OrderSelect(Li_4, SELECT_BY_POS);
      if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
         if (OrderType() < OP_BUYLIMIT) Li_8++;
         if (OrderType() > OP_SELL && OrderType() < OP_BUYSTOP) Li_12++;
      }
   }
   Gi_492 = Li_8;
   if ((Li_8 == 0 && Li_20 == TRUE) || (Li_8 == 0 && Li_12 < lim_setup)) CloseLimit();
   bool Li_88 = TRUE;
   if (balance != 0.0 || balance_f != 0.0 || balance_p != 0.0) {
      if (AccountEquity() < balance && Li_8 == 0) {
         Print("???????? ???????? balance. ???????? ?????? ?????? ????????");
         Comment("???????? ???????? balance. ???????? ?????? ?????? ????????");
         Alert("???????? ???????? balance. ???????? ?????? ?????? ????????");
         return (0);
      }
      if (AccountEquity() <= balance_f) {
         Print("???????? ???????? balance_f. ?????? ?????? ???????????? ??????");
         Comment("???????? ???????? balance_f. ?????? ?????? ???????????? ??????");
         Alert("???????? ???????? balance_f. ?????? ?????? ???????????? ??????");
         Li_88 = FALSE;
         return (0);
      }
      Ld_92 = 0;
      if (balance != 0.0 && balance_f == 0.0 && balance_p == 0.0) Ld_92 = balance;
      if (balance == 0.0 && balance_f != 0.0 && balance_p == 0.0) Ld_92 = AccountBalance() - balance_f;
      if (balance == 0.0 && balance_f == 0.0 && balance_p != 0.0) Ld_92 = AccountBalance() * balance_p / 100.0;
      Ld_100 = 0;
      Ld_100 = get_ret_pip(lim_step, Lots, Gd_528, Ld_92);
      Ld_108 = 0;
      Ld_116 = 100000;
      for (Li_4 = Li_0; Li_4 >= 0; Li_4--) {
         OrderSelect(Li_4, SELECT_BY_POS);
         if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
            if (OrderType() == OP_BUY)
               if (Ld_108 < OrderOpenPrice()) Ld_108 = OrderOpenPrice();
            if (OrderType() == OP_SELL)
               if (Ld_116 > OrderOpenPrice()) Ld_116 = OrderOpenPrice();
         }
      }
      if (Ld_100 != 0.0 && Ld_108 != 0.0 || Ld_116 != 100000.0 && Li_8 <= 1) {
         Gd_496 = ND(Ld_108 - Ld_100 * Point);
         Gd_504 = ND(Ld_116 + Ld_100 * Point);
      }
      if (Li_8 <= 1) modify_order(Gd_496, Gd_504);
      else {
         for (Li_4 = Li_0; Li_4 >= 0; Li_4--) {
            OrderSelect(Li_4, SELECT_BY_POS);
            if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
               if (OrderStopLoss() != 0.0) {
                  if (OrderType() == OP_BUY) Gd_496 = OrderStopLoss();
                  if (OrderType() == OP_SELL) Gd_504 = OrderStopLoss();
               }
            }
         }
         modify_order(Gd_496, Gd_504);
      }
      lim_setup = MathFloor(Ld_100 / lim_step);
      Control(Ld_100);
   }
   if (Dinamic_lot != 0.0) {
      if (balance == 0.0 && balance_f == 0.0 && balance_p == 0.0) Lots = NormalizeDouble(AccountFreeMargin() * Dinamic_lot / 1000.0 / Gd_520, Ld_68);
      else Lots = NormalizeDouble(Ld_92 * Dinamic_lot / 1000.0 / Gd_520, Ld_68);
   }
   if (Lots < Ld_28) Lots = Ld_28;
   Li_12 = 0;
   for (Li_4 = Li_0; Li_4 >= 0; Li_4--) {
      OrderSelect(Li_4, SELECT_BY_POS);
      if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
         if (OrderType() < OP_BUYLIMIT) Li_8++;
         if (OrderType() > OP_SELL && OrderType() < OP_BUYSTOP) Li_12++;
      }
   }
   if (Li_20 == TRUE && Li_16 == TRUE) {
      Li_124 = FALSE;
      Li_128 = FALSE;
      if (Op_step < Ld_44) Op_step = Ld_44;
      Li_124 = ma_step_buy(Ask, Bid, Point, Gd_512, Op_step);
      Li_128 = ma_step_sell(Ask, Bid, Point, Gd_512, Op_step);
      Ld_132 = ND(Gd_512 - Op_step * Point);
      if (Ld_132 > Bid - Ld_44 * Point) Ld_132 = Bid - Ld_44 * Point;
      if (Li_124 && Li_8 == 0 && Li_12 == 0 && Li_88 && part_buy) OpenBuyLim(Ld_132);
      Ld_140 = ND(Gd_512 + Op_step * Point);
      if (Ld_140 < Ask + Ld_44 * Point) Ld_140 = Ask + Ld_44 * Point;
      if (Li_128 && Li_8 == 0 && Li_12 == 0 && Li_88 && part_sell) OpenSellLim(Ld_140);
   }
   Li_8 = 0;
   for (Li_4 = Li_0; Li_4 >= 0; Li_4--) {
      OrderSelect(Li_4, SELECT_BY_POS);
      if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol())
         if (OrderType() < OP_BUYLIMIT) Li_8++;
   }
   double Ld_148 = 0;
   double Ld_156 = 0;
   double Ld_164 = 1000000;
   double Ld_172 = 0;
   if (Li_8 != 0) {
      for (Li_4 = Li_0; Li_4 >= 0; Li_4--) {
         OrderSelect(Li_4, SELECT_BY_POS);
         if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
            if (OrderType() < OP_BUYLIMIT) Ld_148 += OrderLots();
            Ld_156 += OrderProfit() + OrderSwap();
            if (OrderType() == OP_BUY)
               if (OrderOpenPrice() < Ld_164) Ld_164 = OrderOpenPrice();
            if (OrderType() == OP_SELL)
               if (OrderOpenPrice() > Ld_172) Ld_172 = OrderOpenPrice();
         }
      }
      Ld_188 = get_ret_p_pip(greed, Gd_520, Ld_148, Ld_156, Gd_528);
      if (Ld_188 != 0.0) {
         if (Ld_172 == 0.0 && Ld_164 != 0.0) Ld_180 = ND(Bid + Ld_188 * Point);
         if (Ld_172 != 0.0 && Ld_164 == 1000000.0) Ld_180 = ND(Ask - Ld_188 * Point);
      }
      modify_order_take(Ld_180);
   }
   bool Li_196 = FALSE;
   double Ld_200 = 1000000;
   double Ld_208 = 0;
   double Ld_216 = Lots;
   if (Li_8 != Gi_452) {
      if (Li_8 > Gi_452) {
         Gi_452 = Li_8;
         Li_196 = TRUE;
      }
      if (Li_8 < Gi_452) Gi_452 = Li_8;
   }
   if (Li_196 == TRUE) {
      for (Li_4 = Li_0; Li_4 >= 0; Li_4--) {
         OrderSelect(Li_4, SELECT_BY_POS);
         if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
            if (OrderType() == OP_BUYLIMIT) {
               if (OrderOpenPrice() < Ld_200) {
                  Ld_200 = OrderOpenPrice();
                  Ld_216 = OrderLots();
               }
            }
            if (OrderType() == OP_SELLLIMIT) {
               if (OrderOpenPrice() > Ld_208) {
                  Ld_208 = OrderOpenPrice();
                  Ld_216 = OrderLots();
               }
            }
         }
      }
      if (Ld_200 != 1000000.0 && balance == 0.0 && balance_f == 0.0 && balance_p == 0.0) OpenBuyLim_plus(Ld_216, Ld_200);
      if (Ld_208 != 0.0 && balance == 0.0 && balance_f == 0.0 && balance_p == 0.0) OpenSellLim_plus(Ld_216, Ld_208);
   }
   double Ld_224 = 0;
   double Ld_232 = 0;
   double Ld_240 = 0;
   double Ld_248 = 0;
   for (Li_4 = Li_0; Li_4 >= 0; Li_4--) {
      OrderSelect(Li_4, SELECT_BY_POS);
      if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
         if (OrderType() == OP_BUY) {
            Ld_224 += OrderLots();
            Ld_240 = OrderStopLoss();
            Ld_248 = OrderTakeProfit();
            continue;
         }
         if (OrderType() == OP_SELL) {
            Ld_224 -= OrderLots();
            Ld_240 = OrderStopLoss();
            Ld_248 = OrderTakeProfit();
         }
      }
   }
   if (MarketInfo(Symbol(), MODE_TICKVALUE) * Ld_224 != 0.0) Ld_232 = ND(Bid - AccountEquity() / (MarketInfo(Symbol(), MODE_TICKVALUE) * Ld_224) * Point);
   int Li_256 = 10;
   int Li_260 = 4;
   int Li_264 = 50;
   int Li_268 = 50;
   ObjectCreate("Comment_info_n1", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Comment_info_n1", "Cobra Adrenaline ver 1.11", Li_256, "Verdana", p1);
   ObjectSet("Comment_info_n1", OBJPROP_CORNER, Li_260);
   ObjectSet("Comment_info_n1", OBJPROP_XDISTANCE, Li_264);
   ObjectSet("Comment_info_n1", OBJPROP_YDISTANCE, Li_268);
   ObjectCreate("Comment_info_n2", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Comment_info_n2", "???????? ?????? forex-shop.net", Li_256, "Verdana", p1);
   ObjectSet("Comment_info_n2", OBJPROP_CORNER, Li_260);
   ObjectSet("Comment_info_n2", OBJPROP_XDISTANCE, Li_264);
   ObjectSet("Comment_info_n2", OBJPROP_YDISTANCE, Li_268 + 1.5 * Li_256);
   ObjectCreate("Comment_info_n3", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Comment_info_n3", "_________________________________________", Li_256, "Verdana", p3);
   ObjectSet("Comment_info_n3", OBJPROP_CORNER, Li_260);
   ObjectSet("Comment_info_n3", OBJPROP_XDISTANCE, Li_264);
   ObjectSet("Comment_info_n3", OBJPROP_YDISTANCE, Li_268 + 2.5 * Li_256);
   ObjectCreate("Comment_info_n4", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Comment_info_n4", "????? ?????:                                 " + DoubleToStr(AccountNumber(), 0), Li_256, "Verdana", p2);
   ObjectSet("Comment_info_n4", OBJPROP_CORNER, Li_260);
   ObjectSet("Comment_info_n4", OBJPROP_XDISTANCE, Li_264);
   ObjectSet("Comment_info_n4", OBJPROP_YDISTANCE, Li_268 + 4.5 * Li_256);
   ObjectCreate("Comment_info_n6", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Comment_info_n6", "_________________________________________", Li_256, "Verdana", p3);
   ObjectSet("Comment_info_n6", OBJPROP_CORNER, Li_260);
   ObjectSet("Comment_info_n6", OBJPROP_XDISTANCE, Li_264);
   ObjectSet("Comment_info_n6", OBJPROP_YDISTANCE, Li_268 + 6 * Li_256);
   ObjectCreate("Comment_info_n5", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("Comment_info_n5", "???????? ??? ???????? ???????:     " + DoubleToStr(Ld_148, 2), Li_256, "Verdana", p2);
   ObjectSet("Comment_info_n5", OBJPROP_CORNER, Li_260);
   ObjectSet("Comment_info_n5", OBJPROP_XDISTANCE, Li_264);
   ObjectSet("Comment_info_n5", OBJPROP_YDISTANCE, Li_268 + 7.5 * Li_256);
   ObjectCreate("Comment_info_n9", OBJ_

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

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

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

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

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

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

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