Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 212

 
Aleksei Stepanenko :

Bir yapı yapmak daha da iyidir

kullanmadan önce öğeleri sıfırlamayı unutmayın

ve gerektiğinde puanı daha da artırmak

sonra karşılaştır

Artık her yeni mumda önceki 10 mum arasında geçiş yaptınız. Bu rasyonel değil. Önceki değerlerin hesaplama sonuçlarını hatırlayarak her zaman gereksiz döngülerden kurtulmalısınız. Sizin durumunuzda, yeni bir mum geldiğinde, koşul yerine getirilirse hesabı artırmanız ve koşul karşılanmaması durumunda çıkarmanız yeterlidir. Ve fazlalık olup olmadığını kontrol edin. 10 maddelik döngünüz gerekli değil, sadece ana döngü.

Aleksei, yapmaya çalıştım ama hala yanlış olan şey:

saymak için bir eklemez

 for ( int i= 1 ;i<= 10 ;i++)              
     {    
     count.up= 0 ;
     count.dn= 0 ;
     double hig10 = iMA ( NULL ,CP,WPER, 0 , MODE_SMA , PRICE_CLOSE , i);                                     
     if (hig10> iClose ( Symbol (),CP,i))
     {
     count.up++;
     }
     else
    {
    count.dn++;
    }
    }
    
    
     if (count.up>= 8 )
    {
     Comment ( "dsdsD" );
    }
 

Döngüden çıkarılmalıdır.

count.up= 0 ;
count.dn= 0 ;

aksi takdirde, her yinelemede önceki değerleri sıfırlarsınız. Döngüden önce yazın.

 
Aleksei Stepanenko :

Döngüden çıkarılmalıdır.

aksi takdirde, her yinelemede önceki değerleri sıfırlarsınız. Döngüye yaz

Çok teşekkürler, şimdi düşünün!

Ancak, garip bir şekilde, aynı şeyi bir yapı olmadan yaptım, ancak sadece sıradan değerlerle, şöyle bir şey

   for ( int i= 1 ;i<= 10 ;i++)              
     {    
     double hig10 = iMA ( NULL ,CP,WPER, 0 , MODE_SMA , PRICE_CLOSE , i);                                     
     if (hig10> iClose ( Symbol (),CP,i))
     {
     J=J+ 1 ;
     else
    {
    J= 0 ;
    }
    }
    
    
     if (J>= 8 )
    {
     Comment ( "dfdf" );

ve her keneyi eklemeye başladı))

 

Yapı da işaretleyecektir. Sadece yeni bir mumun başlangıcında çalışmak için, bu mumun zamanını takip etmeniz gerekir.

 datetime LastTime;

if (LastTime!=Time[ 0 ])
   {
   LastTime=Time[ 0 ];
   //Здесь ваш код
   }
 
Lütfen bana söyle. Ayrı .mqh dosyalarında özel işlevlerim var, bunları #include aracılığıyla kaydettim, bunları başlangıçta sırayla çağırırım, başlatma bir işleve girdiğinde, eylemlere bağlı olarak programın başka bir .mqh'ye başvurması gerekir file (örneğin, hacim siparişlerine göre bir değer elde etmek için) ve bu olmaz. Her şeyi tek bir kağıda yazarsam çalışır ya da parti hesaplama formülünü doğrudan sipariş açma parametrelerinde yazarsam çalışır. MQL4'te dersleri izledim, programdaki yardımı okudum ve sonunda hiçbir şey bulamadım. Sonuçta bu, programda düzen ve yapıya sahip olmak için icat edildi, bu yüzden neden bir .mqh işlevi, hesaplamalar çerçevesinde başka bir .mqh işleviyle etkileşime giremiyor, bana hiç açık değil. Yoksa böyle bir ihtiyaç ortaya çıktığında programın tekrar başlamasını sağlamak mı gerekiyor - .mqh lot hesaplama fonksiyonuna gidin ve sonucu başlangıca döndürün ve ardından bu hesaplama ile başlayın .mqh sipariş açma fonksiyonuna geri dönün? Bir tür saçmalık ... Yoksa ortak etkileşimleri için mevcut tüm işlevleri bir şekilde farklı bir şekilde ilan etmek mi gerekiyor? teşekkürler
 
Tünaydın!
Bir dizede yıl (2020) ve dakikalardan kurtulmanın en kolay yolu nedir? TimeToStr'de henüz başka çıktı formatı yok mu?
TimeToStr( TimeCurrent (), TIME_DATE | TIME_MINUTES );
 
Nauris Zukas :
Tünaydın!
Bir dizede yıl (2020) ve dakikalardan kurtulmanın en kolay yolu nedir? TimeToStr'de henüz başka çıktı formatı yok mu?
tm=( string )Hour();
 
Vitaly Muzichenko :

Teşekkür ederim!

 
Denis Diakonov :
Lütfen bana söyle. Ayrı .mqh dosyalarında özel işlevlerim var, bunları #include aracılığıyla kaydettim, bunları başlangıçta sırayla çağırırım, başlatma bir işleve girdiğinde, eylemlere bağlı olarak programın başka bir .mqh'ye başvurması gerekir file (örneğin, hacim siparişlerine göre bir değer elde etmek için) ve bu olmaz. Her şeyi tek bir kağıda yazarsam çalışır ya da parti hesaplama formülünü doğrudan sipariş açma parametrelerinde yazarsam çalışır. MQL4'te dersleri izledim, programdaki yardımı okudum ve sonunda hiçbir şey bulamadım. Sonuçta bu, programda düzen ve yapıya sahip olmak için icat edildi, bu yüzden neden bir .mqh işlevi, hesaplamalar çerçevesinde başka bir .mqh işleviyle etkileşime giremiyor, bana hiç açık değil. Yoksa böyle bir ihtiyaç ortaya çıktığında programı tekrar başa döndürmek mi gerekiyor - .mqh lot hesaplama fonksiyonuna gidip sonucu başlangıca döndürüp bu hesaplama ile başlayıp .mqh emir açma fonksiyonuna geri mi dönmek gerekiyor? Bir tür saçmalık ... Yoksa ortak etkileşimleri için mevcut tüm işlevleri bir şekilde farklı bir şekilde ilan etmek mi gerekiyor? teşekkürler

İşlevlerden dosyalara değil, içerme yoluyla bağlandıysanız işlevlere bakın. Seni doğru anladıysam tabii.

 
Fikrime uyacak şekilde başka birinin hindisi "olyakish_fractals_01""i yeniden yazmaya çalıştım, benimki Williams'ın Yeşil Çubuklarına dayanıyor. Ancak MQL4 hakkında tam bilgim olmadığı için yanlış bir şey yazdım ve grafikte görüntülenmiyor. kimse anlar, yardım et, eğer senin için bir şey değilse buna değmez.)
Dosyalar:
18wbguVOL.mq4  13 kb
Neden: