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

 
trader781 :
Nasıl olduğunu anlamıyorum, isimleri düzelttim, siparişin türü ne olursa olsun hat hala kırmızı oluyor, sadece farklı deniyor . (o zaman onu 10 bar kesmenin bir yolunu bulmalısın), tam olarak o yola ihtiyacın var
şimdi dene
Dosyalar:
 
Sergey Gritsay :
şimdi dene

Kaynağın burada asılı kalması iyi)

Derleme düğmesine bastığınızda, bot terminal ile birlikte ölür ve EX'i açtıktan sonra açılmıyor ve bu dosya boş.

Şuna benziyor.

Ben de baktım, mavi, yeşil, altın, beyaz koyarsanız bu renkler değişiyor ama koyu gri ve masmavi koymazsanız beyaz çıkıyor.

Dosyalar:
 
trader781 :

Kaynağın burada asılı kalması iyi)

Derleme düğmesine bastığınızda, bot terminal ile birlikte ölür ve EX'i açtıktan sonra açılmıyor ve bu dosya boş.

Şuna benziyor.

Ben de baktım, mavi, yeşil, altın, beyaz koyarsanız bu renkler değişiyor ama koyu gri ve masmavi koymazsanız beyaz çıkıyor.

benim için her şey yolunda gidiyor
 
Sergey Gritsay :
string    StringSubstr (
   string   string_value,     // строка
   int      start_pos,         // с какой позиции начать
   int      length= 0            // длина извлекаемой строки
   );
...

Teşekkür ederim!

Hala yardıma ihtiyaç var - bir satırda kaç karakter olduğunu bulmam gerekiyor - bu nasıl yapılır?

 
İyi zaman.
Bir dosyadan okunan satırı bölmek için StringSplit kullanıyorum . Ancak çıktı dizisi, birincisi hariç tüm satırları kaybeder. Çıktıda, dizinin boyutu doğru olmasına rağmen, ilk satır hariç tümü boştur.

Ayrıca, dizi dizilerinde garip davranışlarla karşılaşıldı. Bir dizideki dizeleri kaydetmek için iki boyutlu diziler yapmanız gerekir.

Bu davranışla karşılaşan var mı?

while ( idx < size ) {
     if ( StringFind ( fileBuffer[idx][ 0 ], "[Main]" ) >= 0 ) {
        idx++;
         Print ( "Buffer(main) = " + fileBuffer[idx][ 0 ] ); // debug
         if ( StringFind ( fileBuffer[idx][ 0 ], "Kit_Names=" ) >= 0 ) {
             Print ( "check1 - " + fileBuffer[idx][ 0 ] ); // debug
             string tmp = StringSubstr ( fileBuffer[idx][ 0 ], 10 );
             Print ( tmp );                               // debug
             StringReplace ( tmp, "\"" , "" );
             Print ( tmp );                               // debug
             Print ( StringSplit ( tmp, sep, list ) );
             Print ( "check22 - " + tmp );               // debug
             for ( int i = 0 ; i < ArrayRange (list, 0 ); i++) Print (list[i][ 0 ]);   // debug
        }
    }
    idx++;
}
 
-Aleks- :

Teşekkür ederim!

Hala yardıma ihtiyaç var - bir satırda kaç karakter olduğunu bulmam gerekiyor - bu nasıl yapılır?

Bir dizedeki karakter sayısını döndürür.

int    StringLen (
   string   string_value       // строка
   );

 
terentjew23 :

Bir dizedeki karakter sayısını döndürür.

int    StringLen (
   string   string_value       // строка
   );

Teşekkür ederim!

 
Lütfen bana söyle.

EA'nın küresel düzeyinde bir dizi ilan ediyorum. Ardından, özel init() işlevinde diziyi dize sabitleriyle dolduran kullanıcı tanımlı bir işlev çağırırım.

Ayrıca start () özel fonksiyonunda sadece veri okumak için bir dizi kullanıyorum.

Danışmanın çalışmasından bir süre sonra, diğer veriler diziye girer. Yani, Expert Advisor'ı başlatarak, çalışması sırasında dizinin değişmeden kalmasını bekliyorum, ancak veriler bir şekilde diziye giriyor ve yalnızca bir süre sonra (10 dakikadan fazla). EA yeniden başlatıldığında, doğal olarak dizi olması gerektiği gibi dolduruluyor ancak bir süre sonra yine bana net olmayan nedenlerden dolayı diziye yanlış değerler giriyor.

Çıktıyı yalnızca dizi sürekli olarak start () içinde yeniden dolduruluyorsa görebiliyorum, ancak dizinin gerçekten yalnızca başlatma sırasında doldurulması gerektiğinden bir şekilde bundan gerçekten hoşlanmıyorum.

Ne yanlış olabilir? Bir dizi değişikliklerden nasıl korunur?
 
Maksym Mudrakov :
Lütfen bana söyle.
...
Ne yanlış olabilir? Bir dizi değişikliklerden nasıl korunur?
Kodu dikkatlice kontrol edin.
[Silindi]  
Maksym Mudrakov :
Lütfen bana söyle.

EA'nın küresel düzeyinde bir dizi ilan ediyorum. Ardından, özel init() işlevinde diziyi dize sabitleriyle dolduran kullanıcı tanımlı bir işlev çağırırım.

Ayrıca start () özel fonksiyonunda sadece veri okumak için bir dizi kullanıyorum.

Danışmanın çalışmasından bir süre sonra, diğer veriler diziye girer. Yani, Expert Advisor'ı başlatarak, çalışması sırasında dizinin değişmeden kalmasını bekliyorum, ancak veriler bir şekilde diziye giriyor ve yalnızca bir süre sonra (10 dakikadan fazla). EA yeniden başlatıldığında, doğal olarak dizi olması gerektiği gibi dolduruluyor ancak bir süre sonra yine bana net olmayan nedenlerden dolayı diziye yanlış değerler giriyor.

Çıktıyı yalnızca dizi sürekli olarak start () içinde yeniden dolduruluyorsa görebiliyorum, ancak dizinin gerçekten yalnızca başlatma sırasında doldurulması gerektiğinden bir şekilde bundan gerçekten hoşlanmıyorum.

Ne yanlış olabilir? Bir dizi değişikliklerden nasıl korunur?
Kodu görebilir miyim?