MQL4 ustaları için soru. Yine Çift Karşılaştırma hakkında. - sayfa 3

 
komposter :

Ve basitleştirilmiş bir biçimde, ComparePrice kadar hızlı çalışır:
Ama tam olarak değil :)
Noktadaki değerlerde bir farkla, vakaların yarısında yanlış sonuç verecektir.

Ve genel olarak, basitleştirilmiş görüşün bununla ne ilgisi var? Karmaşık ComparePrice, basitleştirilmemiş eşit kadar yavaş olabilir.
 
Irtron :
tamsayı :

Başlangıç olarak, sipariş vermek için birkaç Uzman Danışman yazın, aniden stoploss'un yanlış yerde 1 puan çıkması gerçeğinden müşterinin fırtınasını hissedin... Ve sonra onlara NormalizeDouble'ın saçmalığını açıklayın () işlevi, nasıl yapabildiğini merak ediyorum =)

Bir sırrı ifşa edeceğim.
Başlamam gerekenden çok daha fazla ısmarlama uzman yazdım. Müşterinin fırtınasını hiç hissetmedim, çünkü hiçbir zaman bir sebep göstermedi. Programlarımdaki stoploss'un gerektiği yerde olması (ve "görünmemesi") garanti edilir. Buna göre, müşteriye, özellikle oradaki çok özel bir işlev hakkında hiçbir şey açıklamaya gerek yoktur. Bana öyle geliyor ki, sipariş için bir danışman yazmanın anlamı, müşteriyi bu tür soru ve açıklamalardan kurtarmaktır.

Ve NormalizeDouble () işlevi olmadan ihtiyacınız olan yerde olması nasıl garanti edilir? Ve NormalizeDouble() kullanmadan kendinizi açıklamalardan nasıl kurtarabilirsiniz?
 
Irtron :
VBAG :
Ancak siparişinizden sunucudan alınan fiyatın bile normalleştirilmesi gerektiği ortaya çıktı!!!
Bu pek olası değil. Sakatat MT zanormalizeny neredeyse hiçbir yerde.
Anlaşılmaz tarihsel verileri test ederken danışmanın anlaşılmaz çalışması hakkında çok fazla konuşma yapıldı ve konuşuldu.
Aynen, yanlış bir hikaye vardı, hatırladım. Ancak testçi için normalleşme eksikliğinin kritik olduğu ortaya çıktı. Önemli olan değil.
Ve normalleştirmeden 0 vb. ile karşılaştırırken gösterge çiftleriyle nasıl başa çıkıyorsunuz? Çok ilginç.
 
VBAG :
Ve normalleştirmeden 0 vb. ile karşılaştırırken gösterge çiftleriyle nasıl başa çıkıyorsunuz? Çok ilginç.
inanmayın :)
    double cci ;
    
    cci = iCCI ( NULL , 0 , 14 , PRICE_CLOSE , 1 ) ;
    
    if ( cci > 0 . )
        Print ( " Above " ) ;
    else if ( cci < 0 . )
        Print ( " Below " ) ;
    else
        Print ( " Bingo! " ) ;
 
Irtron :
VBAG :
Ve normalleştirmeden 0 vb. ile karşılaştırırken gösterge çiftleriyle nasıl başa çıkıyorsunuz? Çok ilginç.
inanmayın :)
    double cci ;
    
    cci = iCCI ( NULL , 0 , 14 , PRICE_CLOSE , 1 ) ;
    
    if ( cci > 0 . )
        Print ( " Above " ) ;
    else if ( cci < 0 . )
        Print ( " Below " ) ;
    else
        Print ( " Bingo! " ) ;
Evet, evet ... - bu anlaşılabilir bir durumdur. Yaklaşımınızı anlıyorum, böylece her özel durumda en basit çözüm aranır.


 
VBAG bu betiği gör
 int start ()
  {
//----
string str ;
bool ok1 , ok2 ;
   for ( int i = 0 ; i < 10 ; i ++ ){
      double NotNormPrice_1 = StrToDouble ( " 1.1111 " + i ) ;
         for ( int j = 0 ; j < 10 ; j ++ ){
            double NotNormPrice_2 = StrToDouble ( " 1.1111 " + j ) ;
               if ( NormalizeDouble ( NotNormPrice_1 , 4 ) == NormalizeDouble ( NotNormPrice_2 , 4 )){
                  str = " Metod 1: " + DoubleToStr ( NotNormPrice_1 , 5 ) + " = " + DoubleToStr ( NotNormPrice_2 , 5 ) + " " ;
                  ok1 = true ;
               }                 
               else {
                  str = " Metod 1: " + DoubleToStr ( NotNormPrice_1 , 5 ) + " != " + DoubleToStr ( NotNormPrice_2 , 5 ) + " " ;
                  ok1 = false ;
               }
               if ( NormalizeDouble ( NotNormPrice_1 - NotNormPrice_2 , 4 ) == 0.0 ){
                  str = str + " Metod 2: " + DoubleToStr ( NotNormPrice_1 , 5 ) + " = " + DoubleToStr ( NotNormPrice_2 , 5 ) ;
                  ok2 = true ;
               }         
               else {
                  str = str + " Metod 2: " + DoubleToStr ( NotNormPrice_1 , 5 ) + " != " + DoubleToStr ( NotNormPrice_2 , 5 ) ;                
                  ok2 = false ;
               }
            if ( ok1 != ok2 ) Print ( str ) ;
         }
   }
//----
   return ( 0 ) ;
  }

ve çalışmalarının sonuçları

09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11111 != 1.11115 Yöntem 2: 1.11111 = 1.11115
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11111 != 1.11116 Yöntem 2: 1.11111 = 1.11116
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11112 != 1.11115 Yöntem 2: 1.11112 = 1.11115
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11112 != 1.11116 Yöntem 2: 1.11112 = 1.11116
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11112 != 1.11117 Yöntem 2: 1.11112 = 1.11117
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11113 != 1.11115 Yöntem 2: 1.11113 = 1.11115
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11113 != 1.11116 Yöntem 2: 1.11113 = 1.11116
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11113 != 1.11117 Yöntem 2: 1.11113 = 1.11117
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11114 != 1.11115 Yöntem 2: 1.11114 = 1.11115
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11114 != 1.11116 Yöntem 2: 1.11114 = 1.11116
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11114 != 1.11117 Yöntem 2: 1.11114 = 1.11117
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11114 != 1.11118 Yöntem 2: 1.11114 = 1.11118
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11114 != 1.11119 Yöntem 2: 1.11114 = 1.11119
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11115 != 1.11111 Yöntem 2: 1.11115 = 1.11111
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11115 != 1.11112 Yöntem 2: 1.11115 = 1.11112
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11115 != 1.11113 Yöntem 2: 1.11115 = 1.11113
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11115 != 1.11114 Yöntem 2: 1.11115 = 1.11114
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11116 != 1.11111 Yöntem 2: 1.11116 = 1.11111
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11116 != 1.11112 Yöntem 2: 1.11116 = 1.11112
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11116 != 1.11113 Yöntem 2: 1.11116 = 1.11113
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11116 != 1.11114 Yöntem 2: 1.11116 = 1.11114
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11117 != 1.11112 Yöntem 2: 1.11117 = 1.11112
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11117 != 1.11113 Yöntem 2: 1.11117 = 1.11113
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11117 != 1.11114 Yöntem 2: 1.11117 = 1.11114
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11118 != 1.11114 Yöntem 2: 1.11118 = 1.11114
09:04:13 NormExperiment EURUSD,M5: Yöntem 1: 1.11119 != 1.11114 Yöntem 2: 1.11119 = 1.11114

En çok hangi aritmetiği sevdiğinize kendiniz karar verin.

Bir gösterge çizgisinin (örneğin, MA) bir fiyatla (Price_Now>MA_Now ve Önceki_Fiyat<=Önceki_MA gibi) kesişimini belirlerken, 8 karaktere normalleştirmek gerekir.

 
Integer :

8 karaktere normalleştirme yaptığınızdan emin olun.


Hayır, peki, neden 8'e kadar? :) 7,9 veya 6 tane daha var.Bazıları 4 alır.
Doğru, neden tam olarak 8? kriter nedir?
 
VBAG :
Yaklaşımınızı anlıyorum, böylece her özel durumda en basit çözüm aranır.

Düzeltme. En uygun ve mümkünse etkili. Ne yazık ki, her zaman kolay değil.
 
Irtron :
tamsayı :

8 karaktere normalleştirme yaptığınızdan emin olun.


Hayır, peki, neden 8'e kadar? :) 7,9 veya 6 tane daha var.Bazıları 4 alır.
Doğru, neden tam olarak 8? kriter nedir?

Diyelimki

fiyat = 1.1111

ana = 1.11110001

8 işarete normalleştirildiğinde ma>fiyat - sağ. Daha az sayıda karaktere normalleştirildiğinde, bunların eşit olduğu ortaya çıkıyor - yanlış. Bu şekilde maksimum doğruluk elde edilir.

9 karaktere normalleştirme çalışmıyor. Görünüşe göre fiyat 9 karaktere sahip ve gösterge 8 veya tam tersi (hatırlamıyorum), kısacası belirsizliğin gizemiyle kaplı.

 
Irtron :

    double cci ;
    
    cci = iCCI ( NULL , 0 , 14 , PRICE_CLOSE , 1 ) ;
    
    if ( cci > 0 . )
        Print ( " Above " ) ;
    else if ( cci < 0 . )
        Print ( " Below " ) ;
    else
        Print ( " Bingo! " ) ;

Bu yöntem işe yarıyor. Şimdiye kadar hiç kimse ortaya çıkan hatayı fark etmedi))