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

trailingudavka.mq4

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

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

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

О программе

Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник реализует систему трейлинг-стопа с несколькими ступенями дистанции и уровней, применяемую к конкретной торговой позиции по её тикету.

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

Система поддерживает три ступени дистанций и уровней, переходя на более близкую дистанцию по мере роста прибыли. Пользователь задаёт номер ордера и параметры каждой ступени через входные настройки советника.

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

НастройкаОписание
?????????? ????? (?????) ???????? ??????? (iTicket) Тикет ордера — Тикет (номер) торгового ордера, к которому применяется трейлинг-стоп.
???????? ?????????? ????????? (???????) (?? ?????? MarketInfo(Symbol(),MODE_STOPLEVEL), ?????? trl_d (iTrl_dist_1) Дистанция трейлинга 1 — Дистанция трейлинга (в пунктах) для первой ступени, используемая при нахождении цены в пределах первого уровня.
??????? ??????? (???????), ??? ?????????? ???????? ????????? ????????? ????? ????????? ? trl_dist_1 (iLevel_1) Уровень 1 — Первый уровень цены (в пунктах) относительно точки открытия ордера, определяющий границу первой ступени трейлинга.
?????????? ????????? (???????) ????? ?????????? ?????? ?????? ??????? ? level_1 ??????? (?? ?????? M (iTrl_dist_2) Дистанция трейлинга 2 — Дистанция трейлинга (в пунктах) для второй ступени, используемая при нахождении цены во втором уровне.
??????? ??????? (???????), ??? ?????????? ???????? ????????? ????????? ????? ????????? ? trl_dist_2 (iLevel_2) Уровень 2 — Второй уровень цены (в пунктах) относительно точки открытия ордера, определяющий границу второй ступени трейлинга.
?????????? ????????? (???????) ????? ?????????? ?????? ?????? ??????? ? level_2 ??????? (?? ?????? M (iTrl_dist_3) Дистанция трейлинга 3 — Дистанция трейлинга (в пунктах) для третьей ступени, используемая при нахождении цены за пределами второго уровня.
Получить полный код

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

extern   int      iTicket;             // ?????????? ????? (?????) ???????? ???????
extern   int      iTrl_dist_1 = 30;    // ???????? ?????????? ????????? (???????) (?? ?????? MarketInfo(Symbol(),MODE_STOPLEVEL), ?????? trl_dist_2 ? trl_dist_3);
extern   int      iLevel_1 = 50;       // ??????? ??????? (???????), ??? ?????????? ???????? ????????? ????????? ????? ????????? ? trl_dist_1 ?? trl_dist_2 (?????? level_2; ?????? trl_dist_1);
extern   int      iTrl_dist_2 = 20;    // ?????????? ????????? (???????) ????? ?????????? ?????? ?????? ??????? ? level_1 ??????? (?? ?????? MarketInfo(Symbol(),MODE_STOPLEVEL));
extern   int      iLevel_2 = 70;       // ??????? ??????? (???????), ??? ?????????? ???????? ????????? ????????? ????? ????????? ? trl_dist_2 ?? trl_dist_3 ??????? (?????? trl_dist_1 ? ?????? level_1);
extern   int      iTrl_dist_3 = 10;    // ?????????? ????????? (???????) ????? ?????????? ?????? ?????? ??????? ? level_2 ??????? (?? ?????? MarketInfo(Symbol(),MODE_STOPLEVEL)).

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

int deinit()
  {
   return(0);
  }

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

void TrailingUdavka(int ticket,int trl_dist_1,int level_1,int trl_dist_2,int level_2,int trl_dist_3)
   {  

   double newstop = 0; // ????? ????????
   double trldist; // ?????????? ????????? (? ??????????? ?? "???????????" ????? = trl_dist_1, trl_dist_2 ??? trl_dist_3)

   if ((trl_dist_1<MarketInfo(Symbol(),MODE_STOPLEVEL)) || (trl_dist_2<MarketInfo(Symbol(),MODE_STOPLEVEL)) || (trl_dist_3<MarketInfo(Symbol(),MODE_STOPLEVEL)) || 
   (level_1<=trl_dist_1) || (level_2<=trl_dist_1) || (level_2<=level_1) || (ticket==0) || (!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)))
      {
      Print("???????? ???????? TrailingUdavka() ?????????? ??-?? ?????????????? ???????? ?????????? ?? ??????????.");
      return(0);
      } 

   if (OrderType()==OP_BUY)
      {

      if ((Bid-OrderOpenPrice())<=level_1*Point) trldist = trl_dist_1;
      if (((Bid-OrderOpenPrice())>level_1*Point) && ((Bid-OrderOpenPrice())<=level_2*Point)) trldist = trl_dist_2;
      if ((Bid-OrderOpenPrice())>level_2*Point) trldist = trl_dist_3; 

      if ((OrderStopLoss()==0) || (OrderStopLoss()<OrderOp

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

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

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

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

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

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

Стоимость полного кода
354,30₽ ≈ $4.33