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

Asisten TP-SL Averaging

asisten tp averaging.mq5
Вы автор или правообладатель?

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

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

О программе

Этот советник для MetaTrader 5 автоматически управляет уровнями тейк-профита открытых позиций по текущему символу. Он не открывает новые сделки, а изменяет уже существующие позиции, устанавливая тейк-профит относительно средней цены входа.

Советник работает по таймеру: каждые 5 секунд он анализирует все позиции по символу графика. Для длинных позиций рассчитывается средневзвешенная цена открытия, и тейк-профит устанавливается выше неё на заданное расстояние. Для коротких позиций тейк-профит устанавливается ниже средней цены входа.

Изменение уровней выполняется через торговые запросы MetaTrader 5. Если для позиции уже установлен нужный тейк-профит, повторная модификация не производится. Советник не использует стоп-лосс и не управляет объёмом позиций.

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

НастройкаОписание
TakeProfit Расстояние от средней цены входа до уровня тейк-профита в пунктах. Для длинных позиций тейк-профит устанавливается выше средней цены, для коротких — ниже.
Получить полный код

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

#property version   "1.00"

MqlTradeRequest   m_request;              // request data
MqlTradeResult    m_result;               // result data
MqlTradeCheckResult m_check_result;       // result check data

input double      TakeProfit        = 100;//Take Profit in Point

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

void OnDeinit(const int reason) {

   EventKillTimer();

}

void OnTimer() {

   double tPriceBuy = 0,
          tPriceSell = 0,
          tLotsBuy = 0,
          tLotsSell = 0,
          BEPBuy = 0,
          BEPSell = 0;

   positionInformation(tPriceBuy, tPriceSell, tLotsBuy, tLotsSell, BEPBuy, BEPSell);

   if(BEPBuy != 0) {
      modifyPosition(POSITION_TYPE_BUY, BEPBuy + TakeProfit * Point());
   }

   if(BEPSell != 0) {
      modifyPosition(POSITION_TYPE_SELL, BEPSell - TakeProfit * Point());
   }

}

void              clearStructures() {
   ZeroMemory(m_request);
   ZeroMemory(m_result);
   ZeroMemory(m_check_result);
}

void              modifyPosition(ENUM_POSITION_TYPE Type, double TP) {
   int digit = Digits();

   for(int i = 0; i < PositionsTotal(); i++) {
      if(!PositionGetTicket(i)) continue;
      if(PositionGetSymbol(i) == Symbol())
         if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) == Type)
            if(NormalizeDouble(PositionGetDouble(POSITION_TP), digit) != NormalizeDouble(TP, digit) || NormalizeDouble(PositionGetDouble(POSITION_TP), digit) =

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

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

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

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

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

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

Стоимость полного кода
210,10₽ ≈ $2.57