Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1245

 
Artyom Trishkin :

Tüm diziler aynı yönlülüğe sahip değildir.

Anlıyorum ama sonuçta ArraySetAsSeries(barsBuffer1 ,true); !

Eh, bu sorunun yarısı. Ama yeni bir mum nasıl eklenir - asla bilemeyeceğim.

Bu şekilde denedim:

.........
   else
   {
       Print ( "tick_count = " ,++tick_count);
       if (tick_count >= 5 )
      {
         Print ( "Добавляем свечу." );
         
         double    O[ 1 ], H[ 1 ], L[ 1 ], C[ 1 ];
         O[ 0 ]  = newCandles_Open[ 3 ];
         H[ 0 ]  = newCandles_High[ 3 ];
         L[ 0 ]  = newCandles_Low[ 3 ];
         C[ 0 ]  = newCandles_Close[ 3 ];
         
         ArrayResize (barsBuffer1, ArraySize (barsBuffer1)+ 1 );
         ArrayResize (barsBuffer2, ArraySize (barsBuffer2)+ 1 );
         ArrayResize (barsBuffer3, ArraySize (barsBuffer3)+ 1 );
         ArrayResize (barsBuffer4, ArraySize (barsBuffer4)+ 1 );
         
         ArrayInsert (barsBuffer1,O, 0 );
         ArrayInsert (barsBuffer2,H, 0 );
         ArrayInsert (barsBuffer3,L, 0 );
         ArrayInsert (barsBuffer4,C, 0 );
         
         tick_count = 0 ;
      }
   }
//--- return value of prev_calculated for next call
   return (rates_total);
}

Çalışmıyor... (((

 
Сергей Таболин :

Anlıyorum ama sonuçta ArraySetAsSeries(barsBuffer1 ,true); !

Eh, bu sorunun yarısı. Ama yeni bir mum nasıl eklenir - asla bilemeyeceğim.

Bu şekilde denedim:

Çalışmıyor... (((

Elbette üzgünüm, ancak gösterge arabellekleri olarak atanan diziler yeniden boyutlandırılamaz - bu, terminal alt sistemi tarafından gerçekleştirilir.

    SetIndexBuffer ( 0 , barsBuffer1, INDICATOR_DATA );
   SetIndexBuffer ( 1 , barsBuffer2, INDICATOR_DATA );
   SetIndexBuffer ( 2 , barsBuffer3, INDICATOR_DATA );
   SetIndexBuffer ( 3 , barsBuffer4, INDICATOR_DATA );
          ArrayResize (barsBuffer1, ArraySize (barsBuffer1)+ 1 );
         ArrayResize (barsBuffer2, ArraySize (barsBuffer2)+ 1 );
         ArrayResize (barsBuffer3, ArraySize (barsBuffer3)+ 1 );
         ArrayResize (barsBuffer4, ArraySize (barsBuffer4)+ 1 );

Mantığını yeniden düşün. Onu hiç tanımıyorum ve sadece bariz bir şekilde yanlış olanı gösterebilirim.

 
Artyom Trishkin :

Elbette üzgünüm, ancak gösterge arabellekleri olarak atanan diziler yeniden boyutlandırılamaz - bu, terminal alt sistemi tarafından gerçekleştirilir.

Mantığını yeniden düşün. Onu hiç tanımıyorum ve sadece bariz bir şekilde yanlış olanı gösterebilirim.

Bunu da anlıyorum ama...

Artyom, gösterge arabelleği bir alt sistem tarafından kontrol ediliyorsa, boyutunu da arttırdığı ortaya çıkıyor mu? Başka bir deyişle, grafikte yeni bir mum görünene kadar, grafikte de yeni bir gösterge mumu çizilemez mi?

 
Сергей Таболин :

Bunu da anlıyorum ama...

Artyom, gösterge arabelleği bir alt sistem tarafından kontrol ediliyorsa, boyutunu da arttırdığı ortaya çıkıyor mu? Başka bir deyişle, grafikte yeni bir mum görünene kadar, grafikte de yeni bir gösterge mumu çizilemez mi?

"Yeni bir mum çiz" ile ne kastedilmektedir?

Her türlü çizimi yapabilirsiniz, ancak çubuk ekleyemezsiniz - henüz mevcut değiller.

Evet, terminalin kendisi gösterge dizilerinin boyutuyla ilgilenir. Ayrıca, son aramada kaç tanesinin bulunduğuna dair veri de veriyor.

 
Artyom Trishkin :

"Yeni bir mum çiz" ile ne kastedilmektedir?

Her türlü çizimi yapabilirsiniz, ancak çubuk ekleyemezsiniz - henüz mevcut değiller.

Evet, terminalin kendisi gösterge dizilerinin boyutuyla ilgilenir. Ayrıca, son aramada kaç tanesinin bulunduğuna dair veri de veriyor.

Teşekkürler, neden yapamadığımı şimdi anladım.

Sonra son soru. Göstergede başka bir zaman diliminden mum göstermenin mümkün olduğunu biliyorum. Akım H2 ise ve H1'li mumlar gösteriliyorsa, bir mumun ömrü boyunca göstergede 2 çizmeniz gerektiği ortaya çıkıyor. Yalnızca sistem arabelleği artırırsa bu nasıl olur? Veya zor değilse bir örneğe bağlantı. Belki tahmin ediyorum)))

 
Сергей Таболин :

Teşekkürler, neden yapamadığımı şimdi anladım.

Sonra son soru. Göstergede başka bir zaman diliminden mum göstermenin mümkün olduğunu biliyorum. Akım H2 ise ve H1'li mumlar gösteriliyorsa, bir mumun ömrü boyunca göstergede 2 çizmeniz gerektiği ortaya çıkıyor. Yalnızca sistem arabelleği artırırsa bu nasıl olur? Veya zor değilse bir örneğe bağlantı. Belki tahmin ediyorum)))

Göstergelerle ilgili son makalelerimde örnekler verdim ama orada her şey kütüphaneye bağlı.

Ve bir yerine iki mumun nasıl çizileceğini anlamak için tabloya bakın. H2'deki mum ne zaman açıldı ve H1'deki aynı zamana sahip mum nerede. Her şey netleşecek.

 
Artyom Trishkin :

Göstergelerle ilgili son makalelerimde örnekler verdim ama orada her şey kütüphaneye bağlı.

Ve bir yerine iki mumun nasıl çizileceğini anlamak için tabloya bakın. H2'deki mum ne zaman açıldı ve H1'deki aynı zamana sahip mum nerede. Her şey netleşecek.

Artyom, işin aslı bana ulaşmıyor!

Örneğin H2'deki bir mum saat 12:00'de açıktır. Bir sonraki saat 14:00'te olacak. Ancak H1'de bir sonraki 13:00'te olacak. Mantıksal olarak, mum kıdemli TF'de açılana kadar gösterge dizisi artmayacak! Yani göstergedeki ikinci mum çubuğunu çizemeyecek miyim? Veya nasıl?

Peki, açıklayın bana, kim bu kadar aptal... Neden ve nasıl iki (ve prensipte n mum) mumu bir tabloya çizebilirim? Gösterge arabelleğinin 0. dizinini yeni bir değerle (basit atama) doldurursam neden gösterge değişmiyor?

Belki de geliştiricilere bu olasılığı sormalısınız? Bu ara belleğe yeni bir öğe ekledim - önceki tüm öğelerin sola kaydırılmasıyla çizildi. Sonuçta, bu benim göstergem! İstediğim gibi yazarım! Ve bunu grafikteki yeni bir çubuğun açılış saatine bağlamak istemiyorum! Gerçekten o kadar zor mu?

 

Artyom ve Vladimir'e teşekkürler! Cevaplarınız ve açıklamalarınız bana ilham verdi ve gösterge ortaya çıktı. Tekrar teşekkürler.


 

Lütfen söyle bana, sorun ne?

Basit bir değişken bildirimi vardır:

 input double    StopLoss= 150.0 ;

gerçek verilerde hata ayıklarken, StopLoss değişkeni belirtilen değere sahiptir - "150". Ancak geçmiş hata ayıklamayı etkinleştirirsem, aynı koddaki aynı değişken farklı bir değere sahip olur. Buna ne sebep olabilir? Ve sorunla nasıl başa çıkılır?

 
Sayberix :

Lütfen söyle bana, sorun ne?

Basit bir değişken bildirimi vardır:

gerçek verilerde hata ayıklarken, StopLoss değişkeni belirtilen değere sahiptir - "150". Ancak geçmiş hata ayıklamayı etkinleştirirsem, aynı koddaki aynı değişken farklı bir değere sahip olur. Buna ne sebep olabilir? Ve sorunla nasıl başa çıkılır?

Strateji test cihazının "Parametreler" sekmesindeki değerleri kontrol edin. Gerçek veriler üzerinde hata ayıklamayı etkinleştirdiğinizde, EA giriş değişkenlerinden değerler alır ve geçmiş üzerinde ise değerler test cihazı ayarlarından alınır.