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

bismillah hedge..mq4

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

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

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

О программе

Советник для MetaTrader 4, который размещает отложенные ордера BUYSTOP и SELLSTOP на нескольких ценовых уровнях от начальной цены. Количество уровней и расстояние между ними задаются параметрами. При достижении ценой заданных уровней советник завершает сессию, удаляя отложенные ордера.
Внутренняя функция CheckProfits рассчитывает прибыль по открытым позициям с учётом типа ордера и текущей цены. При достижении определённых условий сессия может быть завершена досрочно или продолжена в зависимости от настроек.
Советник отображает информацию на графике через текстовые метки: объём лота, количество уровней, начальную цену, уровни тейк-профита, текущую прибыль по направлениям и общее число сделок. Также выводится комментарий с данными счёта и маржинальной информацией.
Для идентификации своих ордеров используется магический номер. При завершении сессии удаляются только отложенные ордера, а при принудительном завершении также закрываются рыночные позиции.

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

НастройкаОписание
EAName Имя советника — Текстовый параметр, используемый в качестве имени для отображения на графике.
pips Шаг в пунктах — Целочисленный параметр, задающий расстояние между уровнями ордеров в пунктах.
lots Размер лота — Числовой параметр, задающий размер лота для размещения ордеров.
FixedSpread Фиксированный спред — Целочисленный параметр, задающий пороговое значение спреда для корректировки минимального расстояния ордеров.
NbLevels Количество уровней — Целочисленный параметр, определяющий количество уровней отложенных ордеров, размещаемых в каждом направлении.
ContinueTrading Продолжение торговли — Переключатель продолжения торговли после завершения сессии. Если FALSE, после завершения сессии торговля не возобновляется.
Получить полный код

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

extern string EAName = "hedge close";
extern int pips = 100;
extern double lots = 0.01;
extern int FixedSpread = 3;
extern int NbLevels = 10;
extern bool ContinueTrading = TRUE;
bool gi_108 = FALSE;
bool gi_112 = FALSE;
int gi_116 = 0;
string gs_unused_120 = " Setting Tampilan EA";
int g_corner_128 = 1;
int g_color_132 = Green;
int g_fontsize_136 = 10;
string gs_calibri_140 = "Calibri";
int gi_148 = 15;
int gi_152 = 2;
bool gi_156 = TRUE;
bool gi_160 = TRUE;
bool gi_unused_164 = TRUE;
int g_magic_168 = 123321;
int gi_172 = 0;
int gi_unused_176 = 0;
int gi_unused_180 = 0;
int gi_unused_184 = 10;

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

int deinit() {
   ObjectDelete("ObjLots_Label");
   ObjectDelete("ObjBuyGoal_Label");
   ObjectDelete("ObjBuyGoalProfit_Label");
   ObjectDelete("ObjSellGoal_Label");
   ObjectDelete("ObjSellGoalProfit_Label");
   ObjectDelete("ObjLevels_Label");
   ObjectDelete("ObjPairTotal_Label");
   ObjectDelete("ObjInitialprice_Label");
   ObjectDelete("ObjSellGoalStop_Label");
   ObjectDelete("ObjBuyGoalStop_Label");
   ObjectDelete("ObjContinueTrading_Label");
   return (0);
}

int start() {
      // код доступен только после оплаты
   }
   int l_ticket_0 = 0;
   int l_pos_4 = 0;
   int li_unused_8 = 0;
   int li_unused_12 = 0;
   int l_count_16 = 0;
   int li_20 = 0;
   int li_24 = 0;
   double l_price_28 = 0;
   double l_price_36 = 0;
   double l_price_44 = 0;
   double l_price_52 = 0;
   double ld_60 = FixedSpread;
   double ld_68 = 0;
   if (pips < MarketInfo(Symbol(), MODE_STOPLEVEL) + ld_60) pips = MarketInfo(Symbol(), MODE_STOPLEVEL) + 1.0 + ld_60;
   if (lots < MarketInfo(Symbol(), MODE_MINLOT)) lots = MarketInfo(Symbol(), MODE_MINLOT);
   for (l_pos_4 = 0; l_pos_4 < OrdersTotal(); l_pos_4++) {
      OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_168) {
         l_count_16++;
         if (!ld_68) ld_68 = StrToDouble(OrderComment());
      }
   }
   if (gi_108 == TRUE) {
      KillSession();
      return (0);
   }
   if (gi_156 == TRUE && l_count_16 >= 1) {
      EndSession();
      return (0);
   }
   if (l_count_16 == 0 && gi_160 && !gi_112 || (gi_112 && Hour() == gi_116)) {
      gi_156 = FALSE;
      ld_68 = Ask;
      l_price_28 = ld_68 + (NbLevels + 1) * pips * Point;
      l_price_44 = ld_68 - (NbLevels + 1) * pips * Point;
      l_price_36 = l_price_44 - ld_60 * Point;
      l_price_52 = l_price_28 + ld_60 * Point;
      for (l_pos_4 = 1; l_pos_4 <= NbLevels; l_pos_4++) {
         OrderSend(Symbol(), OP_BUYSTOP, lots, ld_68 + l_pos_4 * pips * Point, 2, l_price_36, l_price_28, DoubleToStr(ld_68, MarketInfo(Symbol(), MODE_DIGITS)), g_magic_168, 0);
         OrderSend(Symbol(), OP_SELLSTOP, lots, ld_68 - l_pos_4 * pips * Point, 2, l_price_52, l_price_44, DoubleToStr(ld_68, MarketInfo(Symbol(), MODE_DIGITS)), g_magic_168, 0);
      }
   } else {
      l_price_28 = ld_68 + (NbLevels + 1) * pips * Point;
      l_price_44 = ld_68 - (NbLevels + 1) * pips * Point;
      l_price_36 = l_price_44 - ld_60 * Point;
      l_price_52 = l_price_28 + ld_60 * Point;
      if (Bid >= l_price_28) {
         gi_156 = TRUE;
         EndSession();
         return (0);
      }
      if (Ask <= l_price_44) {
         gi_156 = TRUE;
         EndSession();
         return (0);
      }
      if (gi_156 == TRUE) {
         EndSession();
         return (0);
      }
      li_20 = CheckProfits(lots, 0, 0, ld_68);
      li_24 = CheckProfits(lots, 1, 0, ld_68);
      if (li_20 < gi_172) {
         for (l_pos_4 = NbLevels; l_pos_4 >= 1; l_pos_4--) {
            if (Ask <= ld_68 + (l_pos_4 * pips - MarketInfo(Symbol(), MODE_STOPLEVEL)) * Point) l_ticket_0 = OrderSend(Symbol(), OP_BUYSTOP, l_pos_4 * lots, ld_68 + l_pos_4 * pips * Point, 2, l_price_36, l_price_28, DoubleToStr(ld_68, MarketInfo(Symbol(), MODE_DIGITS)), g_magic_168, 0);
            if (l_ticket_0 > 0) li_20 += lots * (l_price_28 - ld_68 - l_pos_4 * pips * Point) / Point;
         }
      }
      if (li_24 < gi_172) {
         for (l_pos_4 = NbLevels; l_pos_4 >= 1; l_pos_4--) {
            if (Bid >= ld_68 - (l_pos_4 * pips - MarketInfo(Symbol(), MODE_STOPLEVEL)) * Point) l_ticket_0 = OrderSend(Symbol(), OP_SELLSTOP, l_pos_4 * lots, ld_68 - l_pos_4 * pips * Point, 2, l_price_52, l_price_44, DoubleToStr(ld_68, MarketInfo(Symbol(), MODE_DIGITS)), g_magic_168, 0);
            if (l_ticket_0 > 0) li_24 += lots * (ld_68 - l_price_44 - l_pos_4 * pips * Point) / Point;
         }
      }
   }
   string l_dbl2str_76 = DoubleToStr(lots, 2);
   string ls_unused_84 = pips;
   string ls_92 = NbLevels;
   string l_dbl2str_100 = DoubleToStr(l_price_28, Digits);
   string ls_108 = li_20;
   string l_dbl2str_116 = DoubleToStr(l_price_44, Digits);
   string ls_124 = li_24;
   string ls_132 = l_count_16;
   string l_dbl2str_140 = DoubleToStr(ld_68, Digits);
   string l_dbl2str_148 = DoubleToStr(l_price_36, Digits);
   string l_dbl2str_156 = DoubleToStr(l_price_52, Digits);
   string l_bool_164 = ContinueTrading;
   int l_x_172 = gi_152;
   int l_y_176 = gi_148;
   int li_180 = 15;
   int l_y_184 = l_y_176 + li_180;
   int l_y_188 = l_y_184 + li_180 + 10;
   int l_y_192 = l_y_188 + li_180;
   int l_y_196 = l_y_192 + li_180;
   int l_y_200 = l_y_196 + li_180 + 10;
   int l_y_204 = l_y_200 + li_180;
   int l_y_208 = l_y_204 + li_180 + 10;
   int li_212 = l_y_208 + li_180;
   int li_216 = li_212 + li_180;
   ObjectCreate("ObjContinueTrading_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("ObjContinueTrading_Label", "Continuous Trade " + l_bool_164, g_fontsize_136, gs_calibri_140, g_color_132);
   ObjectSet("ObjContinueTrading_Label", OBJPROP_CORNER, g_corner_128);
   ObjectSet("ObjContinueTrading_Label", OBJPROP_XDISTANCE, l_x_172);
   ObjectSet("ObjContinueTrading_Label", OBJPROP_YDISTANCE, l_y_176);
   ObjectCreate("ObjLots_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("ObjLots_Label", "Lots " + l_dbl2str_76, g_fontsize_136, gs_calibri_140, g_color_132);
   ObjectSet("ObjLots_Label", OBJPROP_CORNER, g_corner_128);
   ObjectSet("ObjLots_Label", OBJPROP_XDISTANCE, l_x_172);
   ObjectSet("ObjLots_Label", OBJPROP_YDISTANCE, l_y_184);
   ObjectCreate("ObjLevels_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("ObjLevels_Label", "Levels " + ls_92, g_fontsize_136, gs_calibri_140, g_color_132);
   ObjectSet("ObjLevels_Label", OBJPROP_CORNER, g_corner_128);
   ObjectSet("ObjLevels_Label", OBJPROP_XDISTANCE, l_x_172 + 60);
   ObjectSet("ObjLevels_Label", OBJPROP_YDISTANCE, l_y_184);
   ObjectCreate("ObjInitialprice_Label", OBJ_LABEL, 0, 0, 0);
   ObjectSetText("ObjInitialprice_Label", "Start Price " + l_dbl2str_140, g_fon

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

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

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

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

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

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

Стоимость полного кода
1 038,60₽ ≈ $12.69