Trailingstop EA çalışmayacak - sayfa 4

 
WHRoeder :
Sadece kesip yapıştırabileceğini ve kodlamayı öğrenmek zorunda olmadığını düşünüyor. Bu basit hatayı bile sormadan çözemez:
'MySelect' - işlev yalnızca genel kapsamda bildirilebilir İzleyen_v26.mq4 31 13


Sizin ve diğer herkesin sağladığı yardımı gerçekten takdir ediyorum. Bunu derlemek için son birkaç gün içinde her şeyi denedim ve sormadığım için özür dilerim. Çoğunuz kendi kodumu kullanmayı ve başkasının kodunu kullanmamı önerdiniz, ancak neyi yanlış yaptığımı anlamazsam öğrenmeyeceğim. Bana göre kodum sağlam görünüyor. Emirleri pozisyona göre saymasını ve yalnızca kriterlerime uyanları seçmesini ve ardından bu belirli ticareti değiştirmesini istiyorum. Şimdiye kadar, 4 sayfadan sonra kimse kodumun hangi satırının bozuk olduğunu belirtmedi. İlk önce neyi yanlış yaptığımı görmedikçe ve anlamadıkça, başka birinin kodunu kullanarak öğrenmeme yardımcı olmaz. Şimdi hedefim, çalışan bir Trailingstop EA'ya sahip olmak değil, çünkü orada çok şey var, ama benim için nasıl kod yazacağımı öğrenmek, böylece devam edebilirim. Aslında benim kodum, Jimdandy'nin Trailingstops hakkındaki Youtube Eğitimi'nde yayınladığı kodla neredeyse aynıydı. Neredeyse onunkiyle aynı olduğu için, kodu neredeyse kelimesi kelimesine kopyaladım (manuel ticaret yapmak istememin dışında), ancak kodu sadece bazen de çalışıyor.

Bazı şeyleri yazdırdım. Bu takas, Trailingstop'un başladığını belirttiğim noktanın neredeyse 300 puan ötesinde (ki bu 150 puandı):

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderModify = false

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Sor = 1.45926

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbypos = 0

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbyticket = 1

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderTicket = 50381828

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: bilet = 0

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSelect = true

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Sipariş Toplamı = 16

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSymbol = EURUSD

2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderTicket = 50381828

2016.04.22 00:17:58.934 Trailing_v33 EURAUD,M15: OrderModify = false

Bu EA yalnızca EURAUD'a yerleştirilir. Gördüğünüz gibi, diğer 9 tabloda açık olan 16 Emir var. Bu çift için seçilen bilet numarası tamamen yanlış ve OrderSymbol tamamen yanlış. Her ikisi de açık bir EURUSD siparişi içindir. Yukarıdakilere dayanarak, benim for döngüm bu durumda Konum 0'ı seçti , oysa seçmesi gereken EURAUD 14 (15-1) konumundaydı. Niye ya? Bunu görmezden gelmesini söyledim.

Yukarıda bahsedilen videoda Jim aslında bu soruna giriyor ve sorunumu çözmek için aşağıdaki kodu kullandığını söyledi, ancak bu, siparişleri doğru şekilde göndermek için bir sayaç ve siparişleri filtreleme işlevi değil. Filtre olarak kullanmayı denedim ama başarılı olamadım.

 int OpenOrdersThisPair( string pair){
   int total= 0 ;
       for ( int s= OrdersTotal ()- 1 ; s>= 0 ; s--){
         OrderSelect (s,SELECT_BY_POS,MODE_TRADES);
           if (OrderSymbol()==pair) total++;
       }
   return (total);  
}

Kodum şimdi şöyle görünüyor. Birisi lütfen kodumu eleştirir, böylece bundan bir şeyler öğrenebilir ve neden birden fazla grafikte çalışmadığını söyleyebilir. O kadar da kötü olamayacağını biliyorum çünkü aslında bazen mükemmel çalışıyor. Teşekkür ederim

 #property strict ;
extern string Label_TrailingStart= "Pip threshold to activate TrailingStop" ;
extern int TrailingStart= 10 ;
extern string Label_TrailingStop= "Pips trailing behind" ;
extern int TrailingStop= 5 ;
double stoplevel=(MarketInfo( Symbol (),MODE_STOPLEVEL))/ 10 ,Pip= Point * 10 ;
int TS=TrailingStart-TrailingStop;
bool UseTrailingStop= true ,UseAutotrading= true ;
//+------------------------------------------------------------------+
//|  Expert initialization function                                  |
//+------------------------------------------------------------------+
int init(){
   if (TS<stoplevel){
    MessageBox("Please note: Your inputs cannot be less than the minimum levels required"+
            "\nby your broker. Please reload the EA and either increase the value of the"+
            "\nTrailingStart and/or decrease the value of the TrailingStop so that "+
            "\nTrailingStart-TrailingStop >= "+StringConcatenate(stoplevel)+" pips");
     } 
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|    Expert deinitialization function                              |
//+------------------------------------------------------------------+
int deinit(){
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|   Expert start function                                          |
//+------------------------------------------------------------------+
int start(){
   if (UseTrailingStop) Trailing(); 
   if (UseAutotrading) Autotrading();  
   return ( 0 );
}
//+------------------------------------------------------------------+
void Trailing(){
for ( int b= OrdersTotal ()- 1 ; b>= 0 ; b--){
       if ( OrderSelect (b,SELECT_BY_POS,MODE_TRADES))
         if (OrderSymbol()== Symbol ())
             if (OrderType()==OP_BUY)
                   if ((Bid-OrderOpenPrice())>(TrailingStart*Pip))
                     if (OrderStopLoss()<Bid-(TrailingStop*Pip))
                        OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(TrailingStop*Pip),OrderTakeProfit(),Blue);
   }     
   for ( int s= OrdersTotal ()- 1 ; s>= 0 ; s--){
     if ( OrderSelect (s,SELECT_BY_POS,MODE_TRADES))
         if (OrderSymbol()== Symbol ())
             if (OrderType()==OP_SELL)
                   if ((OrderOpenPrice()-Ask)>(TrailingStart*Pip))
                     if (OrderStopLoss()>Ask+(TrailingStop*Pip) || OrderStopLoss()== 0 )
                        OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(TrailingStop*Pip),OrderTakeProfit(),Red);
   }
}
void Autotrading(){
   if (!IsTradeAllowed()){
       MessageBox ( "This Expert Advisor requires Auto Trading. Please reload the EA or right click on" +
                 "\nthe chart to bring up the inputs window. Under the common tab check the box to" +
                 "\nallow live trading" );
       Sleep ( 50000 );
     }
   if (!IsExpertEnabled()){
       MessageBox ( "This Expert Advisor requires Auto Trading. Please click the button at the top" );
       Sleep ( 50000 );
     } 
}


 
Trader3000 :

Şimdiye kadar, 4 sayfadan sonra kimse kodumun hangi satırının bozuk olduğunu belirtmedi.

Doğru değil! Hatalarınızı anlattık ve onlara birçok lezzet ve alternatifte çözümler sunduk. Yine de onları görmezden geliyorsunuz ve bunu KENDİ YOLUNUZ yapmaya devam ediyorsunuz. Sadece bu değil, daha fazla hata ekleyerek durumu daha da kötüleştirdiniz.

Bir ressam resim yapmayı öğrendiğinde, bunu önce ustalaşmış diğerlerinin teknikleriyle başa çıkarak yapar. Ancak bu teknikler konusunda kendini rahat hissettiğinde, KENDİ resim YÖNTEMİNİ yaratmaya başlar.

İşte "eleştirimin" kısa bir listesi:

  1. Diş tellerinizi ("kıvrımlı" köşeli ayraçlar) kullanın. Onları gözden kaçırmaya ve tasarruf etmeye çalışmayın. Kodunuz tamamen işlevsel olana ve hata ayıklanana kadar, blokta yalnızca tek bir satır olsa bile bunları ekleyin. Sonra da ayrı bir satıra yerleştirin. Çok fazla beyaz alanınız varsa endişelenmeyin. Her zaman geri dönüp temizleyebilirsiniz, ancak başlangıçta, her şeyin doğru kod bloğu içinde olduğundan ve parantezlerin ve parantezlerin dengelendiğinden emin olmak istersiniz. Birkaç "if" ifadesini bir kadansta dizmek, özellikle bunun gibi titiz bir derleyici ile hata ayıklamak çok zor olduğu için bir felaket reçetesidir.
  2. Orijinal kodunuzda yalnızca bir döngü vardı ve şimdi kodunuzu daha da yavaşlatmak ve hatalar olduğunda düzeltmeniz gereken yerleri tekrarlamak dışında görünürde hiçbir neden olmadan ikiye yaptınız.
  3. İfadelerin sonuçlarını saklamak için değişkenleri kullanın! Aynı ifadeleri birkaç kez tekrarlarsınız, bu da kodunuzu yalnızca daha yavaş değil, aynı zamanda hatalara daha açık hale getirir ve bunları birkaç yerde değiştirmeniz gerektiğinden okunması ve düzeltilmesi daha zor olur.

Listeleyebileceğim daha çok şey var, ama en azından bunları bir kez ve herkes için düzeltin!

Kodlama diğer diller gibidir. Evet, kelimeleri bir araya getirebilirsiniz ama bu sizi şair yapmaz. Kodlamada da okunabilir ve işlevsel hale getirmek için ritim ve yapıya sahip olmanız gerekir.

 
FMIC :

İşte "eleştirimin" kısa bir listesi:

Tamam bunun için çok teşekkür ederim. Aslında tüm 'if' ifadelerim için başlangıçta burada daha önce yayınladığım koda göre parantezler vardı, ancak bu kod çalışmadığından, önceki yazımda yapıştırdığım kodu kopyalamayı da içeren başka şeyler denedim. Bahsettiğim gibi, bu aslında benim kodum bile değil, ama aynı zamanda tüm çiftlerde çalışmıyor. Bununla birlikte, parantezleri tekrar değiştireceğim ve diğer tavsiyelere uyacağım. Bu arada, OrderSelect'in EA'nın açık olduğu değil, terminaldeki ilk siparişin Sembolünü yazdıracağını öğrendim, bu aslında yanlış değildi.

EDIT: 3 numaralı öneri için teşekkürler !!!!!!! Sorunun bu olduğunu düşünüyorum, çünkü Sipariş önce Sembol tarafından seçilmeli ve SONRA değer saklanmalıdır. Bu yüzden değişkeni aşağıdaki işlevlerin altına taşıdım ve şimdi çalışıyor gibi görünüyor (ancak kesin olarak bilmeden önce daha fazla test gerekiyor

 int start(){
       for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {
         if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
             if (OrderSymbol()!= Symbol ()) continue ;
               double Pip= Point * 10 ,TSTP=TrailingStart*Pip,Trail=TrailingStop*Pip,SL=StopLoss*Pip;                
                   if (OrderType()==OP_BUY){
                     if (Bid-OrderOpenPrice()>TSTP){
                         if (OrderStopLoss()<Bid-Trail){
                           if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trail,OrderTakeProfit(),Orange))
                               Print ( "Error Buy TrailingStop: " , GetLastError ());
            }
         }
 
Trader3000 :

Tamam bunun için çok teşekkür ederim. Aslında tüm 'if' ifadelerim için başlangıçta burada daha önce yayınladığım koda göre parantezler vardı, ancak bu kod çalışmadığından, önceki yazımda yapıştırdığım kodu kopyalamayı da içeren başka şeyler denedim. Bahsettiğim gibi, bu aslında benim kodum bile değil, ama aynı zamanda tüm çiftlerde çalışmıyor. Bununla birlikte, parantezleri tekrar değiştireceğim ve diğer tavsiyelere uyacağım. Bu arada, OrderSelect'in EA'nın açık olduğu değil, terminaldeki ilk siparişin Sembolünü yazdıracağını öğrendim, bu aslında yanlış değildi.

EDIT: 3 numaralı öneri için teşekkürler !!!!!!! Sorunun bu olduğunu düşünüyorum, çünkü Sipariş önce Sembol tarafından seçilmeli ve SONRA değer saklanmalıdır. Bu yüzden değişkeni aşağıdaki işlevlerin altına taşıdım ve şimdi çalışıyor gibi görünüyor (ancak kesin olarak bilmeden önce daha fazla test gerekiyor

En son kodunuza bir göz atarak şunu söyleyebilirim - VERİYORUM! (Takip etmeyi reddediyorsunuz)!
 
FMIC : En son kodunuza bir göz atarak şunu söyleyebilirim - pes ediyorum! (Takip etmeyi reddediyorsunuz)!
Şimdi belki de herkesin zamanını boşa harcadıklarında "sert eleştirimi" anlarsınız. "Basit şeyleri" anlasam da, herkesin zamanını boşa harcamanın kabul edilebilir olduğunu düşünüyorlar, ben anlamıyorum.

Trader3000 : Sanırım sorun buydu,...
int start(){
       for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {
         if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
             if (OrderSymbol()!= Symbol ()) continue ;
               double Pip= Point * 10 , TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip, SL=StopLoss*Pip;
                  if (OrderType()==OP_BUY){
                     if (Bid-OrderOpenPrice()>TSTP){
                         if (OrderStopLoss()<Bid-Trail){
                           if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trail, OrderTakeProfit(), Orange))
                               Print ( "Error Buy TrailingStop: " , GetLastError ());
            }
         }
Senin sorunun düşünmemen.
int start(){
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol()!= Symbol ()) continue ;
// Everything below is executed if NO order is selected or a selected order is symbol
       double Pip= Point * 10 , TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip,SL=StopLoss*Pip;
       if (OrderType()==OP_BUY)
      && Bid-OrderOpenPrice()>TSTP)
      && OrderStopLoss()<Bid-Trail){
         if (!OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Trail, OrderTakeProfit(), Orange))
            Print ( "Error Buy TrailingStop: " , GetLastError ());
      }
   :
 
WHRoeder :
Şimdi belki de herkesin zamanını boşa harcadıklarında "sert eleştirimi" anlarsınız. "Basit şeyleri" anlasam da, herkesin zamanını boşa harcamanın kabul edilebilir olduğunu düşünüyorlar, ben anlamıyorum.

Evet! Ne yazık ki, haklısın gibi görünüyor!

 

Cevaplar için teşekkürler.Yani, kodu aşağıdaki gibi önceki bir sürüme değiştirdim. Bunun gibi, durma seviyesinin 50 puan olduğu tüm çiftlerde mükemmel çalışıyor gibi görünüyor, ancak durdurma seviyesinin daha yüksek olduğu çiftlerde değil, örneğin dış değişkenler durma seviyesinden daha yüksek olsa bile EURAUD. Yani bu tuhaf

 extern int TrailingStart= 15 ;
extern int TrailingStop= 5 ;
double stoplevel=(MarketInfo( Symbol (),MODE_STOPLEVEL))/ 10 ;
int TS=TrailingStart-TrailingStop;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init(){
   if (TS<stoplevel){
       MessageBox ( "Please note: Your inputs for TrailingStart and/or TrailingStop cannot" +
                 "\nbe less than the minimum levels required by your broker and the" +
                 "\nTrailingStart has been increased automatically to " + StringConcatenate (stoplevel+TrailingStop)+ " pips" );
     } 
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit(){
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start(){
   double Pip= Point * 10 ;
   if (TS<stoplevel) TrailingStart=( int )stoplevel+TrailingStop;
           
   if (!IsTradeAllowed()){
       MessageBox ( "This Expert Advisor requires Auto Trading. Please reload the EA or right click on" +
                 "\nthe chart to bring up the inputs window. Under the common tab check the box to" +
                 "\nallow live trading" );
       Sleep ( 50000 );
     }
   if (!IsExpertEnabled()){
       MessageBox ( "This Expert Advisor requires Auto Trading. Please click the button at the top" );
       Sleep ( 50000 );
     } 
   int ticket= 0 ,buy_ticket= 0 ,sell_ticket= 0 ;  
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
       if ( OrderSelect (i,SELECT_BY_POS) && OrderSymbol()== Symbol ()){
      ticket++;
       if (OrderType()==OP_BUY) buy_ticket=OrderTicket();
       if (OrderType()==OP_SELL) sell_ticket=OrderTicket();
      }
             if (OrderType()==OP_BUY){
               if ( OrderSelect (buy_ticket,SELECT_BY_TICKET)){
                   if ((Bid-OrderOpenPrice())>(TrailingStart*Pip)){
                     if (OrderStopLoss()<Bid-(TrailingStop*Pip)){
                         if (OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(TrailingStop*Pip),OrderTakeProfit(),Blue))
                         Print ( "Buy = " , GetLastError ());
                         return ( 0 );
                        RefreshRates();
                        }     
                     }  
                  }     
               }
             if (OrderType()==OP_SELL){
               if ( OrderSelect (sell_ticket,SELECT_BY_TICKET)){
                   if ((OrderOpenPrice()-Ask)>(TrailingStart*Pip)){
                     if (OrderStopLoss()>Ask+(TrailingStop*Pip) || OrderStopLoss()== 0 ){
                         if (OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(TrailingStop*Pip),OrderTakeProfit(),Red))
                         Print ( "Sell = " , GetLastError ());
                         return ( 0 );
                        RefreshRates();
                        }
                     }
                  }  
               }
             
   return ( 0 );
}
//+------------------------------------------------------------------+
 

Ayrıca benimkine çok benzeyen bir koda sahip başka bir EA buldum ve kodu karşılaştırdım. Temel farklılıkları vurguladım.

1. Azaltma yerine artış

2. Her şeyi Point*10 yerine Point ile çarpın

3. Trailingstop ve Trailingstep'i birlikte ekler ve ardından bir çıkarır ve Trailingstep ile sırayı değiştirir. Bunu doğru anlarsam, 15 piplik (150 puan) bir hamleden sonra Trailingstart etkinleştirilecektir. EA'mda, fiyat 5 pip geride kalacak ve fiyat tekrar düşerse ve bu 5 pip seviyesine ulaşırsa durdurulacak. EA'sında, 15 pipten sonra da etkinleştirilecek, ancak geride bıraktığı pip miktarı 19 (15+5-1), yani fiyatın durdurulması için 19 pip düşmesi gerekiyor. Örnek olarak: OrderOpenPrice 1.50000'dir. Fiyat 150 puan artarak 1.50150'ye yükselir ve bu da Trailingstop'u etkinleştirir. Fiyat daha sonra 1.50100'e düşerse, 5 pip kâr için durdurulacaktır. EA'sında, Trailingstop da 1.50150'de etkinleştirilir, ancak iz 1.49960'dadır, bu da durmanın durma seviyesine yakın olması nedeniyle hata 130'a neden olacağını düşünüyorum. Yoksa bunu yanlış mı anlıyorum?

Sorunum bunlardan bir veya birkaçıyla ilgili olabilir mi?

 //+------------------------------------------------------------------+
//|                                                   e-Trailing.mq4 |
//|                                           Êèì Èãîðü Â. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//| 12.09.2005 Àâòîìàòè÷åñêèé Trailing Stop âñåõ îòêðûòûõ ïîçèöèé    |
//|            Âåøàòü òîëüêî íà îäèí ãðàôèê                          |
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link        "http://www.kimiv.ru"

//------- Âíåøíèå ïàðàìåòðû ------------------------------------------
extern bool    ProfitTrailing = True;   // Òðàëèòü òîëüêî ïðîôèò
extern int     TrailingStop   = 15 ;     // Ôèêñèðîâàííûé ðàçìåð òðàëà
extern int     TrailingStep   = 5 ;     // Øàã òðàëà
extern bool    UseSound       = True;   // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
extern string NameFileSound  = "expert.wav" ;   // Íàèìåíîâàíèå çâóêîâîãî ôàéëà

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      TrailingPositions();
    }
  }
}

//+------------------------------------------------------------------+
//| Ñîïðîâîæäåíèå ïîçèöèè ïðîñòûì òðàëîì                             |
//+------------------------------------------------------------------+
void TrailingPositions() {
   double pBid, pAsk, pp;

   pp = MarketInfo(OrderSymbol(), MODE_POINT);
   if (OrderType()==OP_BUY) {
    pBid = MarketInfo(OrderSymbol(), MODE_BID);
     if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
       if (OrderStopLoss()<pBid- (TrailingStop+TrailingStep- 1 ) *pp) {
        ModifyStopLoss(pBid-TrailingStop*pp);
         return ;
      }
    }
  }
   if (OrderType()==OP_SELL) {
    pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
     if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
       if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep- 1 )*pp || OrderStopLoss()== 0 ) {
        ModifyStopLoss(pAsk+TrailingStop*pp);
         return ;
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Ïåðåíîñ óðîâíÿ StopLoss                                          |
//| Ïàðàìåòðû:                                                       |
//|   ldStopLoss - óðîâåíü StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss( double ldStopLoss) {
   bool fm;

  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(), 0 ,CLR_NONE);
   if (fm && UseSound) PlaySound (NameFileSound);
}
//+------------------------------------------------------------------+
 
Trader3000 :

Ayrıca benimkine çok benzeyen bir koda sahip başka bir EA buldum ve kodu karşılaştırdım.

Bakalım senin bu mantığını anlayabilmiş miyim! Nerede olduğunu bilen ve bu kodu sizin kodunuza dahil etmeye istekli olan başka birinden başka bir EA bulmaya isteklisiniz, ancak size yardımcı olmak ve sorunlarınızı düzeltmek için özel olarak yazılmış kodu almaya İSTEMİYORSUNUZ!!!

VAY! Ne kadar MANTIKLI! Ona ihtiyacın olduğunda SPOCK nerede!

SPOCK, Huzur içinde yatsın! Hepimiz seni özledik!

 
FMIC :

Bakalım senin bu mantığını anlayabilmiş miyim! Nerede olduğunu bilen ve bu kodu sizin kodunuza dahil etmeye istekli olan başka birinden başka bir EA bulmaya isteklisiniz, ancak size yardımcı olmak ve sorunlarınızı düzeltmek için özel olarak yazılmış kodu almaya İSTEMİYORSUNUZ!!!

VAY! Ne kadar MANTIKLI! Ona ihtiyacın olduğunda SPOCK nerede!

SPOCK, Huzur içinde yatsın! Hepimiz seni özledik!

Sonunda anladım, bu yüzden yardım (ve eleştiri) için Herkese teşekkür ederim. Sen ve Mike'ın ilk sayfada yayınladığınız koda geri döndükten sonra hatamı gördüm. Muhtemelen bunu gözden kaçırdım çünkü çok inceydi, ama çoğunlukla kodun mantığını tam olarak anlamadığım için. Sorun şu ki, TrailingStop'un pip miktarının, geride bıraktığı pip miktarı olduğunu düşündüm. Ancak geride bıraktığı pip sayısı aslında TrailingStart-TrailingStop'tur. 15 ve 5 girdiğim için ayarlarım gbpjpy gibi çiftler için durma seviyesinin altındaydı. Teşekkür ederim!!!