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

cm_sl-nl-tp.mq4

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

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

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

О программе

cm_sl-nl-tp — это советник для MetaTrader 4, который автоматически выставляет стоплосс и тейкпрофит на открытых ордерах текущего символа. При каждом тике он проверяет все активные ордера и, если уровни не заданы, устанавливает их согласно параметрам Stoploss и Takeprofit.

Советник также поддерживает перевод ордеров в безубыток: когда цена движется в нужном направлении на расстояние, заданное параметром NoLoss, стоплосс сдвигается так, чтобы зафиксировать минимальную прибыль не менее MinProfitNoLoss.

Работает как с BUY, так и с SELL ордерами, используя функцию OrderModify для изменения уровней. На графике отображает метки с текущими значениями параметров.

Получить полный код

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

#property description "Советник выставляет всем ордерам стоплосс тейкпрофит и переводит их в безубыток"

extern int     Stoploss             = 100,           //стоплосс
               Takeprofit           = 50,            //тейкпрофит
               NoLoss               = 10,            //перевод в безубыток, если 0, то нет перевода в безубыток
               MinProfitNoLoss      = 1;             //минимальная прибыль при переводе вбезубыток

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

void OnDeinit(const int reason)
{
   ObjectDelete("Stoploss");
   ObjectDelete("Takeprofit");
   ObjectDelete("NoLoss");
}

void OnTick()
{
      // код доступен только после оплаты
   }
   if (!IsTradeAllowed()) return;
   int STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   double OSL,OTP,OOP,StLo,SL,TP;
   int tip;
   for (int i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol()==Symbol())
         { 
            tip = OrderType(); 
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;TP=OTP;
            if (tip==OP_BUY)             
            {  
               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)
               {
                  SL = NormalizeDouble(OOP - Stoploss   * Point,Digits);
               } 
               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP + Takeprofit * Point,Digits);

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

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

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

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

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

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

Стоимость полного кода
229,50₽ ≈ $2.80