"Kendi Takip Eden Durdurma (Trailing Stop) Emrinizi Nasıl Oluşturabilirsiniz?" makalesi için tartışma

 

Yeni makale Kendi Takip Eden Durdurma (Trailing Stop) Emrinizi Nasıl Oluşturabilirsiniz? yayınlandı:

Yatırımcının temel kuralı - kârın büyümesine izin verin, zararları kesin! Bu makale, bu kuralın izlenmesine izin veren temel tekniklerden birini, pozisyon kârını artırdıktan sonra koruyucu durdurma seviyesini (Zararı Durdur seviyesi), yani Takip Eden Durdurma (Trailing Stop) seviyesini hareket ettirmeyi ele almaktadır. SAR ve NRTR göstergelerinde takip eden durdurma için bir sınıf oluşturmaya yönelik adım adım prosedürü bulacaksınız. Herkes bu takip eden durdurmayı kendi uzmanlarına ekleyebilecek veya hesaplarındaki pozisyonları kontrol etmek için bağımsız olarak kullanabilecek.

Şekil 11. Sample_TrailingStop Başlatıldıktan Sonra Grafikteki Düğmeler ve Göstergeler.

Yazar: Dmitry Fedoseev

 

Çok faydalı. Teşekkürler.


Steven

 

Sondaki örnek bir hata ile başarısız olur.

 
Lütfen hangisini seçtiğinizi belirtin.
 

Programcılar, mql5 ile ilgili yardım lütfen!!!

Herhangi bir sınıf olmadan mql4'teki gibi sadece sıradan bir takip fonksiyonu kullanmak mümkün mü? Örneğin, TradeSizeOptimised işlevinin Moving Averages.mq5'te uygulandığı gibi.

Örneklerde, makalelerde, forumda zaten her şeyi aradım - hiçbir şey bulamadım. Zaten tamamen kayboldum.... Belki birisinin hazır bir varyantı vardır, çok minnettar olacağım!!! - Şampiyonaya gerçekten katılmak istiyorum.

 
Setslav:

Programcılar, mql5 ile ilgili yardım lütfen!!!

Herhangi bir sınıf olmadan mql4'teki gibi sadece sıradan bir takip fonksiyonu kullanmak mümkün mü? Örneğin, TradeSizeOptimised işlevinin Moving Averages.mq5'te uygulandığı gibi.

Örneklerde, makalelerde, forumda zaten her şeyi aradım - hiçbir şey bulamadım. Zaten tamamen kayboldum.... Belki birisinin hazır bir varyantı vardır, çok minnettar olacağım!!! - Şampiyonaya katılmayı gerçekten çok istiyorum.


Buyurun.

int TrailingStop()
  {
   if(PositionSelect(Symbol())) // konum seçin
     {
      //MqlTradeRequest m_request;// istek yapısını sunucuya bildirmek
      //MqlTradeResult m_result;// sunucu yanıt yapısını bildirir
      double Bid = SymbolInfoDouble(Symbol(), SYMBOL_BID);                         // teklif fiyatını değişkene yaz
      double Ask = SymbolInfoDouble(Symbol(), SYMBOL_ASK);                         // satış fiyatı değişkenine yaz
      double OpenPrice=PositionGetDouble(POSITION_PRICE_OPEN);                     // pozisyon açılış fiyatını değişkene yaz
      double PositionSL=PositionGetDouble(POSITION_SL);                            // kayıp durdurma seviyesini değişkene yaz
      double PositionTP=PositionGetDouble(POSITION_TP);                            // kar alma seviyesini değişkene yaz

      if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) // pozisyon türünü tanımlayın
        {
         if(TrailWhileMinus==true || Bid-OpenPrice>_Point*Trail) // ilk durak transferi ile başabaş noktasına ulaşana kadar trol kullanmayın
           {
            if(Bid-PositionSL>Trail*_Point) //zararı durdurun hareket ettirme gerekliliği için temel koşul
              {
               //--- yapıya veri yazma
               request.action = TRADE_ACTION_SLTP;
               request.symbol = Symbol();
               request.sl     = NormalizeDouble(Bid-Trail*_Point,_Digits);
               request.tp     = NormalizeDouble(PositionTP,_Digits);
               //---
               return(OrderSend(request,result));                              // isteği sunucuya gönder
              }
           }
        }
      else
        {
         if(TrailWhileMinus==true || OpenPrice-Ask>_Point*Trail) // ilk durak transferi ile başabaş noktasına ulaşana kadar trol kullanmayın
           {
            if(PositionSL-Ask>Trail*_Point) //zararı durdurun hareket ettirme gerekliliği için temel koşul
              {
               //--- yapıya veri yazma
               request.action = TRADE_ACTION_SLTP;
               request.symbol = Symbol();
               request.sl     = NormalizeDouble(Ask+Trail*_Point,_Digits);
               request.tp     = NormalizeDouble(PositionTP,_Digits);
               //---
               return(OrderSend(request,result));                            // isteği sunucuya gönder
              }
           }
        }
     }
   return(0);
  }
[Silindi]  
sergey1294:

Buyurun.

Sonucun bir parametre olarak aktarılmasının daha iyi olduğunu varsayıyorum (muhtemelen sebepsiz değil) :)

Aksi takdirde analiz etmenin bir yolu yoktur. Bir şekilde iyi değil...

PS

Ayrıca iki fonksiyon oluşturacağım - TrailingStopBuy ve TrailingStopSell

 
Interesting:

Sonucun bir parametre olarak aktarılmasının daha iyi olduğunu varsayıyorum (muhtemelen sebepsiz değil) :)

Aksi takdirde analiz etmenin bir yolu yoktur. Bir şekilde iyi değil...

PS

Ayrıca iki fonksiyon oluşturacağım - TrailingStopBuy ve TrailingStopSell.

Eh, kişiye bir örnek verdim, çünkü beynini zaten sıradan bir takip yazmayı başardı ve sonra biraz düşünmesine izin verdim, prensipte test cihazında hatasız çalışacağını ve bu yapının normal çalıştığını. gerçek hayatta kontrol etmedi
[Silindi]  
sergey1294:
Adama bir örnek verdim, çünkü beynini zaten sıradan bir sondaki nasıl yazılacağını yaptı ve sonra biraz düşünmesine izin verdim, bu prensipte test cihazında hatasız çalışacaktı ve bu tasarım iyi çalışıyor. gerçek hayatta kontrol etmedi
Örnek olarak elbette işe yarayacaktır, ancak sonuç analiz edilmezse (er ya da geç) birçok hata olacaktır...
 
sergey1294:

Buyurun.

Teşekkür ederim!
 

sergey1294,

Tekrar teşekkürler, her şey çalışıyor!!!

Küçük bir soru daha var, fonksiyona sihirli sayı ile bir kontrol nasıl eklenir? Böyle bir kontrol eklemeye çalışıyorum:

if (OrderGetInteger(ORDER_MAGIC)==EA_Magic)
{
.....
}
..... ama bir şey tüm ticareti bozuyor.....