Alım-satım robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Telegram üzerinde bulun!
Fan sayfamıza katılın
Komut dosyasını ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Komut dosyasını beğendiniz mi? MetaTrader 5 terminalinde deneyin
Uzman Danışmanlar

Code Block for "Trailing Stop" based on current market price. (Ask / Bid) - MetaTrader 5 için Uzman Danışman

Görüntülemeler:
60
Derecelendirme:
(5)
Yayınlandı:
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git

Bu kod bloğu, Zararı Durdur ya da Durdurma kullanmadığınızda çalışır.


Gereksinimler

  • Pozisyonlar ve emirlerle çalışmanıza olanak tanıyan CTrade sınıfına erişmek için "Trade.mqh " eklemeniz gerekir.

#include <Trade\Trade.mqh> // <<------------------------------------------ CTrade Sınıfına erişmek için bu "Trade.mqh" dosyasını ekleyin 

  • Takip mesafesini istediğiniz gibi ayarlamak için bir giriş parametresi ayarlamanız gerekir. Bu gerekli değildir, ancak kolaylık sağlamak içindir.
input double Traling_Step = 3.0;
  • CTrade sınıfı için örnek tanımlamanız gerekir. isim herhangi biri olabilir. OnInt olay işleyicisinden sonra yemek daha iyi olacaktır.

  • Ardından, o anda herhangi bir pozisyonun çalışıp çalışmadığını kontrol etmek için bir if deyimi oluşturmanız gerekir. Bu ifade Check_TrailingStop (); işlevini her tik için çağırır. Bu önemlidir çünkü EA onu keskin ve pürüzsüz bir şekilde takip etmelidir. Düzgün çalışması için bu ifadeyi OnTick olay işleyicisinin en üstüne koymayı unutmayın.
//+------------------------------------------------------------------+
//| Uzman başlatma işlevi|
//+------------------------------------------------------------------+
int OnInit()
  {
//--- zamanlayıcı oluştur
   EventSetTimer(60);

//---
   return(INIT_SUCCEEDED);
  }


CTrade trade; // <<------------------------------------------ "CTrade" kalsörünü beyan edin. "trade" yerine istediğiniz herhangi bir ismi kullanabilirsiniz
void OnTick()
  {
   
   if(PositionsTotal() > 0) // çalışan pozisyonlar varsa / varsa her tik için takip eden durdurma işlevini çağırır. 
     {
      Check_TralingStop(); 
     } 
     
       
  }

  • Geri kalanını yapmak için Check_TrailingStop(); ( bu durumda) adlı özel bir işlev bildirmeniz gerekir. İstediğiniz herhangi bir ismi kullanabilirsiniz.
  • Özel fonksiyon, açılan tüm pozisyonlar arasında döngü yapar ve bunları istediğiniz mesafe kadar takip eder.
void Check_TralingStop()
  {
   int totalPositions = PositionsTotal();
   for(int count =0; count < totalPositions; count++)
     {
      ulong TicketNo = PositionGetTicket(count); // Pozisyonun 'indeksini' kullanarak Pozisyon Bilet numarasını alın.

      if(PositionSelectByTicket(TicketNo)) // Bilet numarasını kullanarak bir pozisyon seçin (zaten bilet numarasını seçtik)
        {
         if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) // Pozisyonu kontrol et Tip.
           {
            double openPrice = PositionGetDouble(POSITION_PRICE_OPEN);
            double stopLoss  = PositionGetDouble(POSITION_SL);       // <<-------------------Get Position Current Stop Loss
            double takeProfit = PositionGetDouble(POSITION_TP);
            double bidPrice  = SymbolInfoDouble(_Symbol,SYMBOL_BID);
            ulong ticket = PositionGetTicket(count);
            double trailingLevel = NormalizeDouble(bidPrice - (Traling_Step * Point()),_Digits);

            if(stopLoss < openPrice) // Zarar durdurma yok doğrudur.
              {
               if(bidPrice > openPrice && trailingLevel > openPrice) // Pozisyon başına yalnızca bir kez çalışır. İlk SL'yi ayarlar.

                  trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade" kullanarak takip eden Durdurmayı değiştirin
              }


            if(bidPrice > openPrice && trailingLevel > stopLoss) // sondaki seviyenin önceki seviyenin üzerinde olup olmadığını kontrol edin.
              {
               trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade" kullanarak takip eden Durdurmayı değiştirin
              }

           }
         if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
           {
            double openPrice = PositionGetDouble(POSITION_PRICE_OPEN);
            double stopLoss  = PositionGetDouble(POSITION_SL);
            double takeProfit = PositionGetDouble(POSITION_TP);
            double bidPrice  = SymbolInfoDouble(_Symbol,SYMBOL_BID);
            double askPrice  = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
            ulong ticket = PositionGetTicket(count);
            double trailingLevel = NormalizeDouble(askPrice + (Traling_Step * Point()),_Digits);

            if(stopLoss < openPrice) // Zarar durdurma yok doğrudur.
              {
               if(askPrice < openPrice && trailingLevel < openPrice) // Pozisyon başına yalnızca bir kez çalışır. İlk SL'yi ayarlar.

                  trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade" kullanarak takip eden Durdurmayı değiştirin
              }

            if(askPrice < openPrice && trailingLevel < stopLoss) // sondaki seviyenin önceki seviyenin üzerinde olup olmadığını kontrol edin.
              {
               trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade" kullanarak takip eden Durdurmayı değiştirin
              }
           }

        }
     }
  }










    MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
    Orijinal kod: https://www.mql5.com/en/code/49021

    StoDiv StoDiv

    Stokastik osilatör ve fraktallar kullanan tipik bir semafor sinyal göstergesi.

    BuySell BuySell

    Bu gösterge mevcut trendin son "savunma hattını" gösterir. Trend değişikliği renkli karelerle ve trend yönü renkli noktalarla gösterilir.

    Simple Code for Detect  A  "New Bar or New Candle " Received Simple Code for Detect A "New Bar or New Candle " Received

    Bu kod bloğu, bir Yeni Çubuk veya Yeni Mum aldığında bunu algılar.

    Ultra Spearman Sıra Korelasyonu Ultra Spearman Sıra Korelasyonu

    Bu sinyal trend göstergesi, özel Spearman Sıralama Korelasyonu göstergesinin okumalarına ve çoklu sinyal hatlarının trend analizine dayanmaktadır.