[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 577

 
rigonich :

Bir önceki sayfada ekteki dosyada sizin için bıraktığım işlevi deneyin. Biraz yeniden yaptım ama kontrol edecek hiçbir şeyim yok, nereye yerleştirebileceğim bir danışman yok. ve ne olduğunu vurdu. Yoksa benim de tecrübem yok, az bildiğim tek dil MQL, MT'deki yardımı kullanarak ve kod tabanından başkalarının kodlarını ayrıştırarak çalıştım, artık yeterli bilgi ve tecrübenin olmadığını hissediyorum. , bu yüzden onlar için foruma tırmandım. Kim ne sorar diye bakarım, başkalarının sorunlarını çözmeye çalışırım, yavaş yavaş tecrübe kazanır ve sorularıma cevap almanın manevi hakkını kendime veririm.

aynı sonuç.. hata 1
 
Nazik insanlar bana dizilerle nasıl çalışılacağını söylüyor, barı kapatma ve açmanın maksimum ve minimum değerlerini seçmeniz gerekiyor, 1.00 ile 10.00 arasındaki zaman aralığında, bunu yapmaya çalıştım ama bir şeyler doğru değildi .
 int MAX()
{
if (Hour()== 10 )
        {
      
         for (i= 0 ; i<= 9 ; i++)
        MAX1 = High [iClose( NULL , PERIOD_H1 ,i)];
        }
         return (MAX1);
        
}
ama bir şeyler doğru değil. '[' döndürür - dizi dizini bir tamsayı olacaktır C:\Program Files\InstaTrader\experts\Ïîáîé19 EUR-JPY.mq4 (61, 21)
Sorun nedir, nasıl düzeltilir?
 
Ekburg :

Teşekkür ederim. Kod tabanına tırmandım, bir şey buldum, yerine koymaya çalıştım, bu şekilde değiştirdim, okudum, binlerce satırlık pro kodu ayrıştırdım ve sadece değişiklik yaparken hata 1 veriyor ve bu kadar, şeytan ne yapacağını biliyor. Birçok kez yazarken ve bir danışmanın sonraki çalışmalarında çeşitli zorluklarla karşılaştım, ancak bunları kendim çözmeye çalışıyorum, aksi takdirde normal deneyim kazanmıyorum, referansları okudum, ders kitabını tekrar okudum ve problemleri çözdüm, düşünmeye başladım Başladığımdan biraz farklı, ama bu sorunla kendi başıma başa çıkabilirim İşe yaramadı, bu yüzden size döndüm, profesyoneller! EA'nın çalışması gerekmeseydi Trailin yazmazdı :)

Hata 1'den kaçınmak için, işlevi çağırmadan önce değiştirme işlevine iletilen parametreleri kontrol etmek gerekir. Bunlardan en az biri değiştirilmekte olan siparişin parametrelerine eşit değilse, OrderModify() işlevini çağırabilirsiniz, aksi takdirde çıkın veya hata 1 olacaktır.
 
rigonich :

Hata 1'den kaçınmak için, işlevi çağırmadan önce değiştirme işlevine iletilen parametreleri kontrol etmek gerekir. Bunlardan en az biri değiştirilmekte olan siparişin parametrelerine eşit değilse, OrderModify() işlevini çağırabilirsiniz, aksi takdirde çıkın veya hata 1 olacaktır.

tüm normların olduğu nokta bu! Bunun için test sırasında modifikasyon fonksiyonuna hangi değerlerin aktarıldığını takip etmek için çıktılar koydum, orada her şey yolunda, dur farklı, ekstra bir şey atılmıyor, her şey izin verilen servo içinde ve operatörler yukarıdaki kodda aynı değerlerin aktarılmasına izin verilmez. .
 

Fiyat grafiğini, seçim yapabileceğiniz herhangi bir döviz çiftini normalleştirmek gerekir. Gösterge için gereklidir. Mevcut değeri bir öncekine bölmeye çalıştım - 1 civarında belirli bir osilatör alıyorum. Grafiğin karakterini korumak için ihtiyacım olan şey bu değil. Grafiği mutlak değerler ölçeğinden göreceli olana aktarmanın gerekli olduğu düşüncesi bana geldi, yani o zaman alıntıdaki yüzde değişimini göreceğim. Uygulandı. İhtiyacınız olan şey zaten daha iyi ve pratikte. Ancak son arzum, [0:1] aralığındaki alıntıları normalleştirmek. Ve bu son adımı nasıl yapacağımı hayal edemiyorum. bu arada, ihtiyacın olan şey, ama burjuvada, Rusça'da aynı şeye sahip olurdum: http://people.revoledu.com/kardi/tutorial/Similarity/Normalization.html

ve ikinci soru siparişleri silmekle ilgili, onunla savaşmaktan zaten bıktım, tüm siparişler normal olarak silinmiyor ve bu kadar. İşte sildiğim döngü:

   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
         if ( OrderType ()==OP_BUYLIMIT || OrderType ()==OP_SELLLIMIT)
             if ( OrderMagicNumber ()==Magik && OrderSymbol ()== Symbol ())
             while (! OrderDelete ( OrderTicket (), CLR_NONE )){}

Neredeyse her zaman, bekleyen emirlerin bazıları kalır, FOR döngüsüne bir WHILE döngüsü bile ekledim ve hala silinmemiş siparişler var. Kaldırılması gereken çok fazla erteleme var, yaklaşık 20, belki bunda bir tür zorluk var?

 
Sergstuddek :
İyi insanlar, bana dizilerle nasıl çalışılacağını söyleyin, barı kapatma ve açmanın maksimum ve minimum değerlerini seçmeniz gerekiyor, 1.00 ile 10.00 arasındaki zaman aralığında, bunu yapmaya çalıştım ama bir şey değil doğru. Ama bir şeyler yanlış. '[' döndürür - dizi dizini bir tamsayı olacaktır C:\Program Files\InstaTrader\experts\Ïîáîé19 EUR-JPY.mq4 (61, 21)
Sorun nedir, nasıl düzeltilir?

Uyarının anlamı -- dizi dizini int türünde bir sayı olmalıdır. iClose() ve iOpen() işlevlerini kullanmanız gerekir. Açılma süresi 1 saate eşit olan bar sayısını belirleyin ve ardışık 10 barlık bir döngü içinde ihtiyacınız olanları seçin.


 
Ekburg :

tüm normların olduğu nokta bu! Bunun için test sırasında modifikasyon fonksiyonuna hangi değerlerin aktarıldığını takip etmek için çıktılar koydum, orada her şey yolunda, dur farklı, ekstra bir şey atılmıyor, her şey izin verilen servo içinde ve operatörler yukarıdaki kodda aynı değerlerin aktarılmasına izin verilmez. .

İyi bilmiyorum. OrderModify() 'dan sonra OrderSelect() 'den hemen önce bir kontrol yaptıktan sonra, hata 1'i vermeyi bıraktım, ancak ondan önce de her zaman dışarı çıktım.
 
rigonich :

Uyarının anlamı -- dizi dizini int türünde bir sayı olmalıdır. iClose() ve iOpen() işlevlerini kullanmanız gerekir. Açılma süresi 1 saate eşit olan bar sayısını belirleyin ve ardışık 10 barlık bir döngü içinde ihtiyacınız olanları seçin.
Cevap için teşekkürler. Teorik olarak söylemek istediğinizi anlıyorum ama dürüst olmak gerekirse, bunu nasıl uygulayacağımı anlayamıyorum, belki bir çeşit örneğiniz vardır.
 
Desead :

Fiyat grafiğini, seçim yapabileceğiniz herhangi bir döviz çiftini normalleştirmek gerekir. Gösterge için gereklidir. Mevcut değeri bir öncekine bölmeye çalıştım - 1 civarında belirli bir osilatör alıyorum. Grafiğin karakterini korumak için ihtiyacım olan şey bu değil. Grafiği mutlak değerler ölçeğinden göreceli olana aktarmanın gerekli olduğu düşüncesi bana geldi, yani o zaman alıntıdaki yüzde değişimini göreceğim. Uygulandı. İhtiyacınız olan şey zaten daha iyi ve pratikte. Ancak son arzum, [0:1] aralığındaki alıntıları normalleştirmek. Ve işte hayal bile edemediğim bu son adımı nasıl yapacağım. bu arada, ihtiyacın olan şey, ama burjuvada, Rusça'da aynı şeye sahip olurdum: http://people.revoledu.com/kardi/tutorial/Similarity/Normalization.html

ve ikinci soru siparişleri silmekle ilgili, onunla savaşmaktan zaten bıktım, tüm siparişler normal olarak silinmiyor ve bu kadar. İşte sildiğim döngü:

Neredeyse her zaman, bekleyen emirlerin bazıları kalır, FOR döngüsüne bir WHILE döngüsü bile ekledim ve hala silinmemiş siparişler var. Kaldırılması gereken çok fazla erteleme var, yaklaşık 20, belki bunda bir tür zorluk var?


ilk soruya - stokastik bir göz atın
 
Desead :

Fiyat grafiğini, seçim yapabileceğiniz herhangi bir döviz çiftini normalleştirmek gerekir. Gösterge için gereklidir. Mevcut değeri bir öncekine bölmeye çalıştım - 1 civarında belirli bir osilatör alıyorum. Grafiğin karakterini korumak için ihtiyacım olan şey bu değil. Grafiği mutlak değerler ölçeğinden göreceli olana aktarmanın gerekli olduğu düşüncesi bana geldi, yani o zaman alıntıdaki yüzde değişimini göreceğim. Uygulandı. İhtiyacınız olan şey zaten daha iyi ve pratikte. Ancak son arzum, [0:1] aralığındaki alıntıları normalleştirmek. Ve işte hayal bile edemediğim bu son adımı nasıl yapacağım. bu arada, ihtiyacın olan şey, ama burjuvada, Rusça'da aynı şeye sahip olurdum: http://people.revoledu.com/kardi/tutorial/Similarity/Normalization.html

ve ikinci soru siparişleri silmekle ilgili, onunla savaşmaktan zaten bıktım, tüm siparişler normal olarak silinmiyor ve bu kadar. İşte sildiğim döngü:

Neredeyse her zaman, bekleyen emirlerin bazıları kalır, FOR döngüsüne bir WHILE döngüsü bile ekledim ve hala silinmemiş siparişler var. Kaldırılması gereken çok fazla erteleme var, yaklaşık 20, belki bunda bir tür zorluk var?


Aynı sorunun ortadan kaldırılmasıyla. şimdi baykuşları fiyat hareket ettikçe emirler verecek ve silecek şekilde yeniden tasarladım, böylece her bir yönde her zaman ikiden fazla bekleyen emir olmayacak, bu şekilde çalışıyor gibi görünüyor, ancak bunu farklı şekilde yapmak istemiyor. Bilen varsa nedenini söyleyebilir mi?