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

 

Ama ilginç bir şey fark ettim ... Bir şey bu farka dikkat etmedi.

mql4'te, bu dize eklemesini StringConcatenate() işlevi aracılığıyla yazarsanız, şunu elde edersiniz:

 eStr+= StringConcatenate (i, ": " ,eArray[i], ", " );

ve sadece mql5'te

 StringConcatenate (eStr, i, ": " , eArray[i], ", " );
Belki yanlışlıkla kullanmıyorum…………
 
Alexey Viktorov :

MQL5'te MQL4'ten farklı çalıştığı için bu işlevi kullanmanızı önermiyorum. Bu nedenle, MQL5 diline geçerken anlamada zorluklar olabilir.


Her ne kadar yanılıyor olsam da...

mql4

mql5

Gördüğünüz gibi, mql5'te basit dize eklemeye çok benzer.

Ve tür dönüştürme, bu işlevde ek endişeler olmadan gerçekleşir.

Evet, tartışıldığında bakmayacağım

üç seçenekten StringAdd() , StringConcatenate() ve artı işaretleri,

Artılar daha ucuzdur.

 
ANDREY :

1.6251 neden i kadar açık bir şekilde dizeye aktarılamıyor ? Bu daha kısa ve bilgi işlem kaynaklarından tasarruf sağlıyor ..... bana öyle geliyor.

açıklama için teşekkürler

Çünkü böyle bir dönüşüm 16 (beynim tamamen kuru değilse) karaktere kadar bir değer verebilir. Ve DoubleToString() işlevi, dizeyi belirtilen ondalık basamak sayısına "keser". Ve tamsayı i, ne söylenirse söylensin, tamsayı olarak kalacaktır.

 
Alekseu Fedotov :

Evet, tartışıldığında bakmayacağım

üç seçenekten StringAdd() , StringConcatenate() ve artı işaretleri,

Artılar daha ucuzdur.

Belki... Ama böyle küçük tutarsızlıklar arama taraftarı değilim.
 
TrederMT5 :

Kodu değiştirdim, dizi hala aynı yerde aralık dışında

N'nin her zaman dizide olup olmadığını kontrol edin
 double price[N];

geçerli değerler alır?
 

Değeri değiştirirken Print() 'i nasıl yazdıracağımı söyle

       string symbol;
       long currChart= ChartFirst (); int i= 0 ;
       while (currChart>= 0 )
        {
         if ( ChartGetInteger (currChart, CHART_BRING_TO_TOP , 0 )== true ) 
           { 
             if ( ChartSymbol (currChart)!=symbol)
              {
               symbol= ChartSymbol (currChart); Print (symbol);
              }
           } 
         currChart= ChartNext (currChart);  i++;
        }
 
MakarFX :

Değeri değiştirirken Print() 'i nasıl yazdıracağımı söyle

bir sayaç koy

       string symbol;
       long currChart= ChartFirst (); int i= 0 ;
       while (currChart>= 0 )
        {
         if ( ChartGetInteger (currChart, CHART_BRING_TO_TOP , 0 )== true ) 
           { 
             if ( ChartSymbol (currChart)!=symbol)
              {
               i++;
               symbol= ChartSymbol (currChart); 
               if (i== 1 ) Print (symbol);
              }
           } 
         currChart= ChartNext (currChart);
        }
 
Vitaly Muzichenko :

bir sayaç koy

teşekkürler
 
Vitaly Muzichenko :

bir sayaç koy

Çalışmıyor(
 
MakarFX :

Değeri değiştirirken Print() 'i nasıl yazdıracağımı söyle

booleanları tercih ederim

 if (Work== false ) // Критическая ошибка
     {
       if (AlertWork== false )   // Если Алерта еще не было
        {   Alert ( "Critical error. The expert Advisor doesn't work." ); AlertWork= true ; }
       return ;
     }