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

 
sergeev :
tam olarak ne çalışmıyor?


pozisyon açılmadı.
 
IgorM :

şöyle deneyin:


ya da ben anlamadım ya da siz sorunu yanlış anladınız.

1.34529'a eşit bir Kapat[2] fiyatı ve 1.34530'a eşit bir Açılış[1] fiyatı var

Bir pozisyonun açılabilmesi için bir şartım var.

Close[ 2 ] >= Open[ 1 ]

mk 10 - 20 pp (5 işarette) büyük bir rol oynamaz, programa koymanız gerekir,

Kapanış fiyatı 1.34529 ve Açılış fiyatı 1.34530 ise, pozisyon yine de açılabilir.

 
kilnart :

pozisyon açılmadı.

???

Peki fiyatların durumu nedir?

koda daha fazla bakarsınız. başka bir hatanız var.

 
grafiğin devamında, koşulu karşılayan bir fiyat vardır ve pozisyon açılır.
 
şimdi kodu kontrol edeceğim
 
kilnart :


veya ben anlamadım ya da siz görevi yanlış anladınız

......

mk 10 - 20 pp (5 işarette) büyük bir rol oynamaz, programa koymanız gerekir

görünüşe göre, önce bir önceki yazınızı yazdınız ve sonra cevap olarak ne duymak istediğinizi düşündünüz ....

gerçekten, 5 basamakta 10-20 pp çok önemli değil, double türündeki değişkenlerin nasıl doğru bir şekilde karşılaştırılacağını gösterdim, probleminizin doğru koşulu oluşturmaktan kaynaklanmadığından şüpheleniyorum. Kesin bir cevap almak için önce açık ve net bir soru formüle etmeye çalışın.

 
IgorM :

görünüşe göre, önce bir önceki yazınızı yazdınız ve sonra cevap olarak ne duymak istediğinizi düşündünüz ....

aslında 5 hanede 10-20 puan çok önemli değil, double türündeki değişkenlerin nasıl doğru bir şekilde karşılaştırılacağını gösterdim, sanırım sorununuz doğru koşulu oluşturmakta değil. Kesin bir cevap almak için önce açık ve net bir soru formüle etmeye çalışın.


Sadece IMHO, doble'ı böyle karşılaştırmak yanlış. Örneğin, dört basamak , fiyatlar 1.00014 ve 1.00016, 1.0001 ve 1.0002'ye eşdeğer, ancak 1.00016 - 1.00014 < Puan
 
220Volt : böyle karşılaştırmak yanlış . Örneğin, dört hane, fiyatlar 1.00014 ve 1.00016, 1.0001 ve 1.0002'ye eşdeğer, ancak 1.00016 - 1.00014 < Puan

Çift karşılaştırma ve yuvarlamayı karıştırıyorsunuz, sorunun net bir ifadesine ihtiyacınız var: ya 5 haneyi 4 haneye yuvarlayın ve ardından analizi 4 hanede yapın ya da sadece iki çifti doğru bir şekilde karşılaştırın.

İki dubleyi karşılaştırırsak, kodun verdiğim kısmı hem 4 hem de 5 karakter için doğru çalışacaktır:

 switch ( Digits ){
   case 5 : if ( 1.00014 - 1.00016 >= 10 * Point ); условие= false, -0.00002 меньше 0.00001*10   // цена больше на 10 пп в 5-ти знаке
   case 4 : if ( 1.0001 - 1.0002 >= Point ); условие= false, -0.0001 меньше 0.0001          / / цена больше на 1 пп в 4-х знаке
}

göz atın: https://www.mql5.com/ru/articles/1561 ve https://www.mql5.com/ru/forum/101433

Not: kodumda bir hata oluştu: vakanın arayı kapatması gerekiyor, yani Böyle:

 switch ( Digits ){
   case 5 : if (Close[ 2 ]-Open[ 1 ]>= 10 * Point ); // цена больше на 10 пп в 5-ти знаке
           break ;
   case 4 : if (Close[ 2 ]-Open[ 1 ]>= Point ); // цена больше на 1 пп в 4-х знаке
           break ;
}
 
IgorM :

Çift karşılaştırma ve yuvarlamayı karıştırıyorsunuz, sorunun net bir ifadesine ihtiyacınız var: ya 5 haneyi 4 haneye yuvarlayın ve ardından analizi 4 hanede yapın ya da sadece iki çifti doğru şekilde karşılaştırın.

İki dubleyi karşılaştırırsak, kodun verdiğim kısmı hem 4 hem de 5 karakter için doğru çalışacaktır:

göz atın: https://www.mql5.com/ru/articles/1561 ve https://www.mql5.com/ru/forum/101433

Not: kodumda bir hata oluştu: vakanın arayı kapatması gerekiyor, yani Böyle:


Muhtemelen haklı olsanız da, yazar için önemli olmayabilir. Her pip'i sayıyorum, bu yüzden bu tür durumlara kendi bakış açımdan bakıyorum.
 

Tümü. sonunda kafam karıştı ve kafam artık yemek yapmıyor.

işte kod

       double Low1=Low[ iLowest ( NULL , 0 ,MODE_LOW, 3 , 0 )],
              Low2=Low[ iLowest ( NULL , 0 ,MODE_LOW, 20 , 0 )];
         
         if (Low1<Low2 && Open[ 2 ]>Close[ 2 ])    
          {
             if (Open[ 1 ]<=Close[ 2 ] && Open[ 2 ]<Close[ 1 ])
             {
                 double sl=Low[ iLowest ( NULL , 0 ,MODE_LOW, 3 , 0 )],
                        tp=Ask+(Open[ 2 ]-Low[ 2 ]);
                 OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 3 ,sl,tp);
                 return ;
             }
          }

Aşağıdakileri çizmek istiyorum. Son 3 mum için minimum noktayı bulmam gerekiyor. 20 mumluk minimum fiyatla karşılaştırın, eğer son 3 mum daha düşükse ve mum siyahsa ( Open[ 2 ]>Close[ 2 ] ), o zaman daha ileriye bakarız.

sonra bir düşüş eğilimi bulmam gerekiyor ( Open[ 1 ]<=Close[ 2 ] && Open[ 2 ]<Close[ 1 ] ).

ve bir satın alma pozisyonu açın.

Her şey doğru gibi görünüyor, ama bir şeyler yanlış.

bana yardım ederseniz çok minnettar kalırım.