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

0 - sl_tp_be_all_fx_order_types v2.mq4

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

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

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

О программе

Данный советник для MetaTrader 4 автоматически выставляет стоп-лоссы и тейк-профиты на открытых ордерах при каждом тике. Он работает с рыночными ордерами (BUY, SELL) и отложенными ордерами (BUYSTOP, SELLSTOP, BUYLIMIT, SELLLIMIT), устанавливая уровни на основе заданных расстояний в пунктах.

Если у ордера ещё не заданы стоп-лосс и тейк-профит, советник рассчитывает их по параметрам StopLoss и TakeProfit: для покупательских ордеров стоп-лосс размещается ниже цены открытия, а тейк-профит — выше; для продавательских — наоборот.

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

В начале каждого тика советник проверяет включённость автоторговли и разрешение на живую торговлю, при отсутствии которых выводит соответствующее предупреждение.

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

НастройкаОписание
StopLoss Расстояние в пунктах для установки стоп-лосса от цены открытия ордера. Для покупательских ордеров стоп-лосс размещается ниже цены открытия, для продавательских — выше. Работает только для ордеров без заданных стоп-лосса и тейк-профита.
TakeProfit Расстояние в пунктах для установки тейк-профита от цены открытия ордера. Для покупательских ордеров тейк-профит размещается выше цены открытия, для продавательских — ниже. Работает только для ордеров без заданных стоп-лосса и тейк-профита.
Break_Even_profit_distance Расстояние в пунктах от цены открытия ордера, при достижении которого ордер переводится в безубыточную зону (стоп-лосс перемещается на цену открытия). Активно только при значении больше нуля.

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

#property version   "1.00"
#property strict

input int StopLoss=0;
input int TakeProfit=0;
input int Break_Even_profit_distance = 0;

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

void OnDeinit(const int reason)
  {

  }

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

   if(!IsExpertEnabled())
        {
         MessageBox("You need to enable AutoTrading! "+" Check your Settings!");
         return;
        }

      if(!IsTradeAllowed())
        {

         MessageBox("You need to Allow Live Trading!" + "\n" +
                     "Check EA Common tab -> Live Trading -> Allow live trading"); Sleep(1000);            
         return;
        }

   double SL,TP;
   int i,Total;

  Total=OrdersTotal();
  if(Total>0)
  {
     for(i=Total-1; i>=0; i--) 
     {  
        if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true) 
        {
           if(OrderSymbol()==Symbol() && (OrderType()==OP_SELL || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT) && OrderStopLoss()==0 && OrderTakeProfit()==0) 
           {
              if(StopLoss>0)SL=OrderOpenPrice()+StopLoss*Point;else SL=0;
              if(TakeProfit>0)TP=OrderOpenPrice()-TakeProfit*Point;els

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