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

servant avg+++..mq4

Похожие материалы по тегам

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Сервисный советник для MetaTrader 4, который анализирует дневной тренд по индикатору RSI(14) и управляет торговыми позициями на текущем символе. При отсутствии стоп-лосса и тейк-профита на ордере советник устанавливает их согласно параметрам, а при наличии убытка — перемещает стоп-лосс в сторону прибыли (трейлинг-стоп) при активированной функции DiLockProfit.

Советник поддерживает усреднение позиций: если цена удаляется от открытого ордера на заданное расстояние Range, открывается дополнительный ордер с увеличенным лотом по множителю Lot_Multiplier. Количество допустимых позиций ограничивается параметром Level. Также реализована функция принудительного закрытия всех ордеров при достижении прибыли в денежном выражении TP_in_Money.

В качестве дополнительной информации на график выводятся авторские данные, текущий тренд, параметры советника и серверное время. Советник учитывает количество знаков после запятой у брокера (4 или 2/3/5) для корректного расчёта уровней стоп-лосса и тейк-профита.

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

НастройкаОписание
TakeProfit Тейк-профит — Уровень тейк-профита в пунктах, устанавливаемый на ордера при их открытии или модификации.
StopLoss Стоп-лосс — Уровень стоп-лосса в пунктах, устанавливаемый на ордера при их открытии или модификации.
DiLockProfit Блокировка прибыли — Переключатель функции перемещения стоп-лосса в сторону прибыли при достижении заданного уровня LockProfit.
LockProfit Расстояние блокировки прибыли — Расстояние в пунктах от открытой цены, при достижении которого активируется перемещение стоп-лосса.
Averaging Усреднение — Включает или отключает режим усреднения позиций при достижении ценового расстояния Range от открытого ордера.
Lot_Multiplier Множитель лота — Множитель для увеличения лота при усреднении позиции.
Range Диапазон для усреднения — Ценовое расстояние в пунктах от открытой цены, при котором открывается дополнительный усредняющий ордер.
Level Уровень количества позиций — Максимальное количество позиций, при превышении которого усреднение не выполняется.
Bila false maka TP_in_Money juga tidak berfungsi (Modify_TPSL) Модификация ТП/СЛ — Переключатель модификации тейк-профита и стоп-лосса существующих ордеров. При значении false параметр TP_in_Money не функционирует.
TP_in_Money Прибыль для закрытия в деньгах — Порог прибыли в денежном выражении, при достижении которого закрываются все позиции. Работает только при активном Modify_TPSL.
Получить полный код

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

extern int    TakeProfit  = 4;
extern int    StopLoss = 10;
extern bool   DiLockProfit = false;
extern int    LockProfit = 100;
extern bool   Averaging = true;
extern double Lot_Multiplier = 1.0;
extern double Range = 4;
extern int    Level = 100;
extern bool   Modify_TPSL = false;  //Bila false maka TP_in_Money juga tidak berfungsi
extern double TP_in_Money  = 0.40;
string gsa_88[4];
int ticket=0; 
int a=0;

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

int deinit() {
   ObjectDelete("ObjLabel1");
   ObjectDelete("ObjLabel2");
   ObjectDelete("ObjLabel3");
   ObjectDelete("ObjLabel4");
   return (0);
}

int start() {
      // код доступен только после оплаты
   }
   Info();
   double l_irsi_0 = iRSI(NULL, PERIOD_D1, 14, PRICE_CLOSE, 0);
   int l_pos_8 = 0;
   gsa_88[0] = "Dwi Malistyo - e*@dwim.web.id";
   gsa_88[1] = "";
   gsa_88[2] = "";
   gsa_88[4] = "";   
   gsa_88[3] = "";
   if (l_irsi_0 < 45.0) gsa_88[2] = "Daily Trend : Downtrend";
   else {
      if (l_irsi_0 > 55.0) gsa_88[4] = "Daily Trend : Uptrend";
      else gsa_88[2] = "Daily Trend : Sideways";
   }
   ObjectCreate("ObjLabel1", OBJ_LABEL, 0, 0, 0);
   ObjectSet("ObjLabel1", OBJPROP_CORNER, 1);
   ObjectSet("ObjLabel1", OBJPROP_XDISTANCE, 10);
   ObjectSet("ObjLabel1", OBJPROP_YDISTANCE, 15);
   ObjectSetText("ObjLabel1", gsa_88[0], 7, "Arial", SteelBlue);
   ObjectCreate("ObjLabel2", OBJ_LABEL, 0, 0, 0);
   ObjectSet("ObjLabel2", OBJPROP_CORNER, 1);
   ObjectSet("ObjLabel2", OBJPROP_XDISTANCE, 10);
   ObjectSet("ObjLabel2", OBJPROP_YDISTANCE, 25);
   ObjectSetText("ObjLabel2", gsa_88[1], 7, "Arial", SteelBlue);
   ObjectCreate("ObjLabel3", OBJ_LABEL, 0, 0, 0);
   ObjectSet("ObjLabel3", OBJPROP_CORNER, 1);
   ObjectSet("ObjLabel3", OBJPROP_XDISTANCE, 10);
   ObjectSet("ObjLabel3", OBJPROP_YDISTANCE, 35);
   ObjectSetText("ObjLabel3", gsa_88[2], 7, "Arial", Red);
   ObjectSetText("ObjLabel3", gsa_88[4], 7, "Arial", Lime);   
   ObjectCreate("ObjLabel4", OBJ_LABEL, 0, 0, 0);
   ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
   ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
   ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
   ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
   if (Digits == 4) {
      for (l_pos_8 = 0; l_pos_8 < OrdersTotal(); l_pos_8++) {
         OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol()) {
            if (OrderType() == OP_BUY) {
               if (OrderStopLoss() == 0.0 && OrderTakeProfit() == 0.0) {
                  if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - StopLoss * Point, OrderOpenPrice() + TakeProfit * Point, 0) == TRUE) gsa_88[3] = "Put SL and TP at trade BUY no: #" + OrderTicket();
                  else gsa_88[3] = "ERROR -- Put SL and TP at trade BUY no: #" + OrderTicket();
                  ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
                  ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
                  ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
                  ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
               } else {
                  if (DiLockProfit && Bid - OrderOpenPrice() > LockProfit * Point) {
                     if (OrderStopLoss() <= OrderOpenPrice()) {
                        if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + 1.0 * Point, OrderTakeProfit(), 0) == TRUE) gsa_88[3] = "Modify SL at trade BUY no: #" + OrderTicket();
                        else gsa_88[3] = "ERROR -- Modifying SL at trade BUY no: #" + OrderTicket();
                        ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
                        ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
                        ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
                        ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
                     } else {
                        if (DiLockProfit && Bid - OrderStopLoss() > LockProfit * Point) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - LockProfit * Point, OrderTakeProfit(), 0);
                        gsa_88[3] = "Trailing SL trade no: #" + OrderTicket();
                        ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
                        ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
                        ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
                        ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
                     }
                  }
               }
            } else {
               if (OrderType() == OP_SELL) {
                  if (OrderStopLoss() == 0.0 && OrderTakeProfit() == 0.0) {
                     if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + StopLoss * Point, OrderOpenPrice() - TakeProfit * Point, 0) == TRUE) gsa_88[3] = "Put SL and TP at trade SELL no: #" + OrderTicket();
                     else gsa_88[3] = "ERROR -- Put SL and TP at trade SELL no: #" + OrderTicket();
                     ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
                     ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
                     ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
                     ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
                  } else {
                     if (DiLockProfit && OrderOpenPrice() - Ask > LockProfit * Point) {
                        if (OrderStopLoss() >= OrderOpenPrice()) {
                           if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - 1.0 * Point, OrderTakeProfit(), 0) == TRUE) gsa_88[3] = "Modify SL at trade SELL no: #" + OrderTicket();
                           else gsa_88[3] = "ERROR -- Modifying SL at trade SELL no: #" + OrderTicket();
                           ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
                           ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
                           ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
                           ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
                        } else {
                           if (DiLockProfit && OrderStopLoss() - Ask > LockProfit * Point) OrderModify(OrderTicket(), OrderOpenPrice(), Ask + LockProfit * Point, OrderTakeProfit(), 0);
                           gsa_88[3] = "Trailing SL at trade no: #" + OrderTicket();
                           ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
                           ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
                           ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
                           ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
                        }
                     }
                  }
               }
            }
         }
      }
   } else {
      if (Digits == 2 || Digits == 3 || Digits == 5) {
         for (l_pos_8 = 0; l_pos_8 < OrdersTotal(); l_pos_8++) {
            OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
            if (OrderSymbol() == Symbol()) {
               if (OrderType() == OP_BUY) {
                  if (OrderStopLoss() == 0.0 && OrderTakeProfit() == 0.0) {
                     if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - 10.0 * (StopLoss * Point), OrderOpenPrice() + 10.0 * (TakeProfit * Point), 0) == TRUE) gsa_88[3] = "Put SL and TP at trade BUY no: #" + OrderTicket();
                     else gsa_88[3] = "ERROR -- Put SL and TP at trade BUY no: #" + OrderTicket();
                     ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
                     ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
                     ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
                     ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
                  } else {
                     if (DiLockProfit && Bid - OrderOpenP

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

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

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

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

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

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

Стоимость полного кода
1 058,80₽ ≈ $12.94