MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 961

 
Yevhenii Levchenko :

Söylenmesi gereken: Bu oluyor mu ve ayrıca tırnak içindeki bazı sövelerden mi kaynaklanıyor yoksa yanlış bir şey mi yazdım?

MT4 test cihazının düzgün çalışmadığını benden duymak ister misiniz? - tik veya çubuk oluşturma hatalarıyla ekranınızı duymazsınız - test cihazı, olası herhangi bir düşük TF'den her şeyi üretecektir

geliştiriciler her zaman sizinki gibi soruları yanıtladı - kodları doğru yazın!

nasıl yazılır, kodunuzu nasıl yazdığınıza bir örnek gösterdim .... evet, görünmüyor ve artık ilginç değil))) - Meşgulüm, makaleler okuyorum, kodlarım ile ilgileneceğim

 
Igor Makanu :

MT4 test cihazının düzgün çalışmadığını benden duymak ister misiniz? - tik veya çubuk oluşturma hatalarıyla ekranınızı duymazsınız - test cihazı, olası herhangi bir düşük TF'den her şeyi üretecektir

geliştiriciler her zaman sizinki gibi soruları yanıtladı - kodları doğru yazın!

nasıl yazılır, kodunuzu nasıl yazdığınıza bir örnek gösterdim .... evet, görünmüyor ve artık ilginç değil))) - Meşgulüm, makaleler okuyorum, kodlarım ile ilgileneceğim

TAMAM! teşekkürler

 
Yevhenii Levchenko :

TAMAM! teşekkürler

İşe yarayabilir: https://www.mql5.com/ru/forum/165405#comment_5602248

Архивные котировки от Metaquotes
Архивные котировки от Metaquotes
  • 2017.01.02
  • www.mql5.com
Ситуация: В терминале MT4 по клавише F2 можно закачать архивные котировки. Они нужны всем, кто разрабатывает свою торговую систему...
 

İyi günler yoldaşlar. mql4'te basit şeyler yazmayı öğreniyorum, şimdi dizilerle çalışmaya çalışıyorum. Bu kod parçasındaki hatayı çözemiyorum:

   double d1 = NormalizeDouble (Low[ iLowest ( NULL , 0 , MODE_LOW , MaxLimit, 0 )], 4 );
   double d2 = NormalizeDouble (High[ iHighest ( NULL , 0 , MODE_HIGH , MaxLimit, 0 )], 4 );
   double CrossBarsNum[][ 2 ];
   for ( double d = d1; d <= d2; d += 0.0001 )
     {
       double a = 0.0 ;
       for ( int i = 0 ; i < MaxLimit; i++)
           if (d > Low[i] && d < High[i])
               a+= 1 ;
               CrossBarsNum[(d-d1)/ 0.0001 , 0 ] = d;
               CrossBarsNum[(d-d1)/ 0.0001 , 1 ] = a;

son iki satırda beklenen tamsayı ifadesi ile yemin eder. Anladığım kadarıyla, bir dizideki bir dizin, bir formül kullanılarak ayarlanabilir. Burada dizinin satırları boyunca yineleme yapmak ve alıntıları ve böyle bir alıntının içerdiği çubukların sayısını sırayla kaydetmek gerekir. Formül bir tamsayı değeri üretir (0'dan ve bir'lik artışlarla yukarı), peki sorun ne?

 
Azat0t :

İyi günler yoldaşlar. mql4'te basit şeyler yazmayı öğreniyorum, şimdi dizilerle çalışmaya çalışıyorum. Bu kod parçasındaki hatayı çözemiyorum:

son iki satırda beklenen tamsayı ifadesi ile yemin eder. Anladığım kadarıyla, bir dizideki bir dizin, bir formül kullanılarak ayarlanabilir. Burada dizinin satırları boyunca yineleme yapmak ve alıntıları ve böyle bir alıntının içerdiği çubukların sayısını sırayla kaydetmek gerekir. Formül bir tamsayı değeri üretir (0'dan ve bir'lik artışlarla yukarı), peki sorun ne?

Dizi dizini türünü çift değil, int yapın. Dizi dizini bir tam sayı olmalıdır.

 
Teşekkür ederim! Neredeyse her zaman bunu yaptım. İndirdikten sonra "Güncelle" ye tıkladım - alıntılar farklıydı. Ve anlaşmaların açılmadığı gerçeği hakkında aptaldım - robot için geçici bir çalışma limiti koyduğumu unuttum... :)
 
Azat0t :

İyi günler yoldaşlar. mql4'te basit şeyler yazmayı öğreniyorum, şimdi dizilerle çalışmaya çalışıyorum. Bu kod parçasındaki hatayı çözemiyorum:

son iki satırda beklenen tamsayı ifadesi ile yemin eder. Anladığım kadarıyla, bir dizideki bir dizin, bir formül kullanılarak ayarlanabilir. Burada dizinin satırları boyunca yineleme yapmak ve alıntıları ve böyle bir alıntının içerdiği çubukların sayısını sırayla kaydetmek gerekir. Formül bir tamsayı değeri üretir (0'dan ve bir'lik artışlarla yukarı), peki sorun ne?

Açık tür dönüştürme kullan

               CrossBarsNum[ int ((d-d1)/ 0.0001 ), 0 ] = d;
               CrossBarsNum[ int ((d-d1)/ 0.0001 ), 1 ] = a;
 
Teşekkürler, hatayı düzelttim ama hala sonuç yok: dizi doldurulmadı. Ne ile bağlanabilir?
   int handle;
   handle = FileOpen ( "FindLevels.txt" , FILE_CSV | FILE_WRITE , '\t' );
   double d1 = NormalizeDouble (Low[ iLowest ( NULL , 0 , MODE_LOW , MaxLimit, 0 )], 4 );
   double d2 = NormalizeDouble (High[ iHighest ( NULL , 0 , MODE_HIGH , MaxLimit, 0 )], 4 );
   double CrossBarsNum[][ 2 ];
   for ( double d = d1; d <= d2; d += 0.0001 )
     {
       double a = 0.0 ;
       for ( int i = 0 ; i < MaxLimit; i++)
           if (d > Low[i] && d < High[i])
               a++;
               CrossBarsNum[ int ((d-d1)/ 0.0001 ), 0 ] = a;
               CrossBarsNum[ int ((d-d1)/ 0.0001 ), 1 ] = d;
     } 
   FileWrite (handle, CrossBarsNum[ 11 , 1 ], d, d1, d2, a, ArraySize (CrossBarsNum));
   //FileWriteArray(handle, CrossBarsNum, 0, WHOLE_ARRAY);
   FileClose (handle);
   return ( 0 );
d, d1, d2 değişkenleri tam olarak çalışır
 
Azat0t :
Teşekkürler, hatayı düzelttim ama hala sonuç yok: dizi doldurulmadı. Ne ile bağlanabilir? d, d1, d2 değişkenleri tam olarak çalışır
İlk boyutta her zaman bir dizi boyutunuz sıfırdır. ArrayResize()'ı hiçbir yerde görmedim
 
Azat0t :
Teşekkürler, hatayı düzelttim ama hala sonuç yok: dizi doldurulmadı. Ne ile bağlanabilir? d, d1, d2 değişkenleri tam olarak çalışır

koymayı unutma

 #property strict
Tüm hataları düzeltin ve belki her şey yoluna girecek. Hata ayıklayıcı kullanmayı öğrenin. Adım adım yürütme ile tüm sorunlar belirlenir.