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

tralingstop_v3.mq4

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

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

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

О программе

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

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

При обнаружении подходящих условий советник вызывает функцию OrderModify для изменения стоп-лосса у соответствующих ордеров. Текущие рассчитанные значения отображаются на графике через функцию Comment, а при модификации ордеров отправляются уведомления через функцию Alert.

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

НастройкаОписание
BarsNum Количество баров, используемых для расчёта минимальной и максимальной цены при определении уровней стоп-лосса.
PipDistance Смещение в пунктах, добавляемое к рассчитанным ценовым уровням для формирования конечных значений стоп-лосса.
Получить полный код

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

extern int  BarsNum = 5;
extern int  PipDistance = 1;
double      LTS, STS, Spread;

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

   int count = 0;

   Spread = MarketInfo(Symbol(), MODE_SPREAD) * Point;

   LTS = NormalizeDouble(Low[Lowest(NULL, 0, MODE_LOW, BarsNum, 1)] - (PipDistance * Point), Digits);
   STS = NormalizeDouble(High[Highest(NULL, 0, MODE_HIGH, BarsNum, 1)] + Spread + (PipDistance * Point), Digits);
   Comment("LTS: ", LTS, " - STS: ", STS);
   if (OrdersTotal() != 0) {
      while (count < OrdersTotal()) {
         OrderSelect(count, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol()) {
            if (OrderType() == OP_BUY && (LTS > OrderStopLoss() || OrderStopLoss() == 0)) {
               OrderModify(OrderTicket(), 0, LTS, 0, 0, Blue);
               Alert("OP_BUY Error: ", GetLastError(), " - ", LTS, " - ", OrderTicket());
            }
            

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

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

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

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

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

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

Стоимость полного кода
123₽ ≈ $1.50