Gösterge Sorusu - sayfa 8

 
heelflip43 :

Bence senin sorunun val1 ve val2'yi sıfırlamamış olmanda. Bu nedenle, en yüksek ve en düşük değeri bulduktan sonra, onları sıfırlamanız gerekir:

Umarım bu yardımcı olur.
Ahhh, bugün daha sonra pencerelere önyükleme yaptığımda deneyeceğim, teşekkürler

İlk if(ifade) doğruysa, start()'ı yeniden başlatacağını ve kodun başından sıfırlayacağını ve böylece val1 ve val2'yi yeniden sıfırlayacağını düşündüm.

Düşündüğüm yol şuydu - if(ilk ifade) true sonra yazdırır ve ardından bir sonraki if(second) muhtemelen false metnine geçer, ardından tekrar başlangıcın en üstüne döner ve val1 ve val2'yi sıfırlar

Doğru baskıları ve değerleri alıyorum ancak sürekli olarak yazdırıyor.

Şimdi düşünüyorum da, en basit EMA çaprazları bile sürekli baskılar üretiyorsa, herhangi bir if(ifade) için bunu gerçekten hiç anlamadım.

Gönderdiğiniz kodunuzu test edeceğim, ancak bu değişkenleri yazdırmak için print ifadeleri ekleseydim ve sürekli olarak da yazdırmazsa şaşırırdım.

bugün daha sonra deneyeceğim

teşekkürler
 
Tamam evet, val1 ve val2'yi sıfırlamak bana A yüksek verecek ama yine de her şeyi sürekli olarak yazdırıyor, eskisi kadar çok değil.
Bunu düzeltmek için currentTime ve iTime ile bir şeyler yapmam gerektiğine eminim, biraz daha gözden geçirmem gerekecek.

Görünüşe göre kod tabanında öğrenilecek bir ABCD şeması olmalı, ancak bu, bana herhangi bir ipucu verip vermediğini görmek için şimdi gözden geçirdiğim ZigZag'a dayalı olması dışında mevcut olmayan bir şey gibi görünüyor. Ama yine bu da bir gösterge

Her neyse, && macd veya başka bir şey eklersem, onları yalnızca bir kez yazdırır, bu da beni gerçekten ürkütüyor
 
Sanırım üzerinde biraz daha düşündükten ve üzerinde biraz daha çalıştıktan sonra buna sahibim.

Buna ne dersin:

 //+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double     TakeProfit= 20.0 ;
extern double     Lots= 0.1 ;
extern double     StopLoss= 10.0 ;
extern int MagicNumber= 123486 ;

double val1;
double val2;
bool traded = false;
bool A = false;

//++++ These are adjusted for 5 digit brokers.

int      pips2points;     // slippage  3 pips    3=points    30=points
double   pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int      Digits .pips;     // DoubleToStr(dbl/pips2dbl, Digits.pips)

     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if ( Digits == 5 || Digits == 3 )
   {     // Adjust for five (5) digit brokers.
      pips2dbl    = Point * 10 ; pips2points = 10 ;   Digits .pips = 1 ;
   } 
   else 
    {    
      pips2dbl    = Point ;    pips2points =   1 ;   Digits .pips = 0 ; 
    }
     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return ( 0 );
  }
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i= 0 ;
   int ticket,total,result;
   total = OrdersTotal ();                 
   val1= iFractals ( NULL , 0 , MODE_UPPER, 3 );
   val2= iFractals ( NULL , 0 , MODE_LOWER, 3 ); 


     
     if (val1 > 0 && traded == false && val2== 0 )
      { 
       // in the absence of an && indicator above I get continous print statements
       // also does not print A high this is not desired
       // with indicator added && indicator above, then it prints A and B once as it should ???
       // I need to work this out so it won't print all the time aka trade all the time
       // A and B first values seems to initialize the whole block
       // just a reminder that they time stamps coordinate after this FYI
       // now work on C retrace and possibly signals
       // add options for user to select some candle patterns
       // add options to select indicators
       // add bells and whistles to make things fun
       // alerts,sounds,maybe poppup video animation or something
      
       double B = val1;
       Print (B, " B high" );
         if (val2== 0 )
            {
             for (i= 0 ; val2== 0 ; i++)
               {
               val2= iFractals ( NULL , 0 , MODE_LOWER, i);
               double A = val2;
                   if (A!= 0 )
                     {
                     Print (A, " A low" );
                     }
               }
             }  
      traded=true;
      }
     
     val1= iFractals ( NULL , 0 , MODE_UPPER, 3 );
     val2= iFractals ( NULL , 0 , MODE_LOWER, 3 ); 
     
     if (val2 > 0 && traded == true && val1 == 0 )
      {
      B = val2;
       Print (B, " B low" );
         if (val1== 0 )
            {
             for (i= 0 ; val1== 0 ; i++)
               {
               val1= iFractals ( NULL , 0 , MODE_UPPER, i);
               A = val1;
                   if (A!= 0 )
                     {
                     Print (A, " A high" );
                     }
               }
             }  
      traded=false;
      }
     
                    
                
   return ( 0 );
  }    

//+------------------------------------------------------------------+


      

Bu, eklerken yalnızca bir kez yazdırılır

 if (val1 > 0 && traded == false && val2== 0 )

ve

 if (val2 > 0 && traded == true && val1 == 0 )


O yüzden biraz daha yaklaşıyorum, biraz daha değerlendirebilirim.

Hepinize yardımlarınız için teşekkürler, bu çok büyük bir yardımdı çünkü bana bunu düzeltmek için fikirler verdi ve bir şeyleri sıfırlama konusunda da bilgimi biraz daha genişletti.
Bunu arka cebimde tutmalıyım

teşekkürler

 

Çoğu zaman sorunu almıyorum. Görünüşe göre bu sadece aynı çubukta bazen belirsiz piyasalarda meydana gelen bir üst ve alt fraktal olduğunda oluyor. Bunu aşmanın tek yolu, hesaplamayı yalnızca bir çubukta çalıştırmaktır, bu nedenle:

 static datetime currTime;
if (Time[ 0 ]!=currTime){
currTime = Time[ 0 ];
// Rest of code
}

Bu, her iki yönde de giden fraktallarda yanlış işlem görmeyeceği anlamına gelmelidir.

 
Şimdi geri kalanı üzerinde çalışmaya başlayabilirim, keşke bir iCustom göstergesinin bir EA'ya dönüşümünü anlayacak kadar deneyimli olsaydım, o zaman muhtemelen bunu uzun zaman önce çözmüş olurdum.

Bunu şimdi yapma şeklim daha karmaşık olacak çünkü hala kod mantığımın yanına iCustom göstergeleri eklemem gerekiyor; ve zaten çalışan bir iCustomer göstergesini kod mantığım olarak kullanmak yerine tüm çanlar ve ıslıklar

Her neyse, tekrar teşekkürler, gün için harika bir haber.
 
Veya çözümünüz de işe yarardı, teorimi test etmenin ortasındaydım ve gönderinizi görmedim.
 
heelflip43 :

Çoğu zaman sorunu almıyorum. Görünüşe göre bu sadece aynı çubukta bazen belirsiz piyasalarda meydana gelen bir üst ve alt fraktal olduğunda oluyor. Bunu aşmanın tek yolu, hesaplamayı yalnızca bir çubukta çalıştırmaktır, bu nedenle:

Bu, her iki yönde de giden fraktallarda yanlış işlem görmeyeceği anlamına gelmelidir.

Bu parçanın nasıl daha iyi çalıştığını öğrenmem gerekiyor, bunu daha önce ve diğer benzer versiyonlarını gördüm ama sadece kısmen anladım

Bunu biraz daha çalışmam gerek. Test ederken sürekli baskı ifadeleri nedeniyle kodlarımın çoğunu burada kaybediyor olabilirim.

Eminim bunun başka yolları da vardır ve yine de bunun için gösterge oluşturmayı ve AtoB vb.'den çizgiler çizmeyi planlıyorum.

biraz daha çalışacağım
 
İşte şimdiye kadar kaydettiğim bazı ilerlemeler

Belki birileri bundan faydalanabilir, eminim bir guru tarafından daha iyi revize edilebilir.

Her neyse, istediğimi yazdırıyor ve kullanıcıların hangi seviyeleri isteyebileceklerini seçebilmeleri için fibo seviyeleri için bazı harici değerler ekledim.

LOL forumlarına ilk kod katkım

Bu görevi yerine getirmenin daha iyi bir yolu olan herkes, kodumun ne yaptığını göstermek için iCustom göstergeleri eklediğim için kodun iki katına çıkacağını tahmin ediyorum, ancak bu, bir dizi arabelleği vb. için bir tür çift kodlama ve ardından iCustom kullanmak anlamına gelir.

Her neyse, aldığım şey burada

 //+------------------------------------------------------------------+
//|                                          Unfinished_POS_slate.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS slate by Agent86"


//---- input parameters
extern double     TakeProfit= 20.0 ;
extern double     Lots= 0.1 ;
extern double     StopLoss= 10.0 ;
extern int MagicNumber= 123486 ;
extern double fibo_retrace= 0.500 ; //this is C retracement level
extern double fibo_extension= 1.618 ;   // coming soon, D extention 


double val1;
double val2;
bool traded = false;


//++++ These are adjusted for 5 digit brokers.

int      pips2points;     // slippage  3 pips    3=points    30=points
double   pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int      Digits .pips;     // DoubleToStr(dbl/pips2dbl, Digits.pips)

     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if ( Digits == 5 || Digits == 3 )
   {     // Adjust for five (5) digit brokers.
      pips2dbl    = Point * 10 ; pips2points = 10 ;   Digits .pips = 1 ;
   } 
   else 
    {    
      pips2dbl    = Point ;    pips2points =   1 ;   Digits .pips = 0 ; 
    }
     // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return ( 0 );
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i= 0 ;
   int ticket,total,result;
   total = OrdersTotal ();                 
   val1= iFractals ( NULL , 0 , MODE_UPPER, 3 );
   val2= iFractals ( NULL , 0 , MODE_LOWER, 3 ); 

     
     if (val1 > 0 && val2 == 0 && traded == false)
      { 
       double B = val1;
       Print (B, " B high" );
       if (val2== 0 )
         {
         for (i= 0 ; val2== 0 ; i++)
            {
            val2= iFractals ( NULL , 0 , MODE_LOWER, i);
             double A = val2;
             if (A!= 0 )
              {
               Print (A, " A low" );
              }
            }
          }
       double C = B-(B-A)*fibo_retrace; //retrace 50% no fractal
       Print (C, " UP ABC retrace level" );
       if (Bid <= C)
         {
         Print (Bid, " UP ABC C Retrace Hit" );
         }  
      
      
      traded=true;
      }
     
     //val1=iFractals(NULL, 0, MODE_UPPER,3); been suggested I might need to reset these here
     //val2=iFractals(NULL, 0, MODE_LOWER,3); I'll investigate this some more
     
     
     if (val2 > 0 && val1 == 0 && traded == true)
      {
      B = val2;
       Print (B, " B low" );
       if (val1== 0 )
        {
         for (i= 0 ; val1== 0 ; i++)
           {
           val1= iFractals ( NULL , 0 , MODE_UPPER, i);
           A = val1;
           if (A!= 0 )
             {
               Print (A, " A high" );
             }
           }
        }        
             
        C = B+(A-B)*fibo_retrace; //retrace 50% no fractal  //recheck my math on this one
         Print (C, " DOWN ABC retrace level" );
         if (Bid <= C)
           {
           Print (Bid, " DOWN ABC C Retrace Hit" );
           } 
                 
      traded=false;
      }
     
                    
                
   return ( 0 );
  }    

//+------------------------------------------------------------------+
Sınırlı bilgim ve deneyimimle bir ABCD şeması için bulabildiğim tek şey bu.

Gerçekten bir trend içinde kalmak için kullanıcının A'ları ve B'leri önceki A'ları ve B'leri ihlal etmeyen seviyelere değiştirmesine izin vermek için üzerinde daha fazla çalışacağım.

Umarım birileri bunu kullanabilir veya belki daha iyi fikirlerle buna ekleyebilir

Şimdi mum kalıpları ve göstergeler üzerinde çalışacağım ve buna veya başka bir şey ekleyeceğim ve açılır uyarılar, belki sesler ve bazı açılır videolar eğlenceli olabilir

Herkese yardım için teşekkürler.

 

Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я являюсь трейдером компании "Инстафорекс"

Помогите в поиске нужного скрипта! Скрипт нужен для сетки отложенных ордеров.

 
GERICH :

Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я являюсь трейдером компании "Инстафорекс"

Помогите в поиске нужного скрипта! Скрипт нужен для сетки отложенных ордеров.

Dostum InstaForex ile ilgilenmiyorum ve bir grid betiği istiyorsanız lütfen kodlayıcılar bölümünde kiralık bir proje gönderin
Ve lütfen İngilizce yayınlayın

mutlu ticaret