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

 
Alexey Viktorov :

Soru MT5 ile ilgili gibi görünüyor. Cevap: yazılım yok. Soru kapatılabilir.

teşekkürler

 

Herkese iyi günler! Söz verdiğim gibi, yeni talimatlar için geri döndüm J ;-) Elbette, Kase makinesini başlattım, ancak çok yavaş test edildi L , bu yüzden kene içindeki kodun yalnızca yeni bir çubuk oluştuğunda nasıl yürütüleceği konusunda seçenekler aramaya başladım. . Bu seçeneği buldum. Küresel düzeyde bir değişken tanımlanır

int intBars; // ГЛОБАЛЬНО ОПРЕДЕЛЁННАЯ ПЕРЕМЕННАЯ ДЛЯ ОПРЕДЕЛЕНИЯ НАСТУПЛЕНИЯ

Sonra yeni bir çubuğun gelip gelmediğini kontrol eden bir fonksiyon yazdım - bu şaheser


 bool f_IsNewBar()
{
   if (intBars != Bars ) 
   {
      intBars = Bars ;
       return ( true );
   } 
return ( false );
}

Bu seçeneği bulduğumda, içine tüm mantığı basitçe doldurduğumuz bir işlev oluşturduğumuzu yazıyorlar. Dürüst olmak gerekirse, işlevlerle ilgili bu yaklaşımı hiç sevmiyorum, bu yüzden yeni bir çubuğun görünümünün koşulunu kontrol ettim ve eğer doğruysa, o zaman kene üzerindeki kodu çalıştırmak için uçtular. Basitleştirilmiş bir biçimde, tüm gerçek işler olmadan, bu iş şöyle görünür

 void OnTick ()
{ //НАЧАЛО ОН ТИК
   // если появился новый бар:
   if (f_IsNewBar()) // ЕСЛИ ПОЯВИЛСЯ НОВЫЙ БАР
    { // ВЫПОЛНЯЕМ ВЕСЬ КОД В ОН ТИК
/*
МНОГО МНОГО СЕКРЕТНОГО ГРААЛЬНОГО КОДА😃😃😃
*/

    }
} // КОНЕЦ ОН ТИК

Farklı bir sorum var. Kase kesinlikle gerçek hayatta çalışacak. Öyleyse, kasenin test cihazında takip edilmeyecek, ancak gerçek hayatta patlayacak olan versiyonunda, danışmanın her tik üzerinde çalışması için bu kontrolün kaldırılması gerekecek veya bu kontrolün de bırakılması gerekir mi? gerçek? Sadece bu kontrol gerçek sürümde olacaksa, ilk seferde açılmadıysa, siparişleri açmak için ikinci bir girişim nasıl yapılır?

 
DanilaMactep :

Herkese iyi günler! Söz verdiğim gibi, yeni talimatlar için geri döndüm J ;-) Elbette, Kase makinesini başlattım, ancak çok yavaş test edildi L , bu yüzden kene içindeki kodun yalnızca yeni bir çubuk oluştuğunda nasıl yürütüleceği konusunda seçenekler aramaya başladım. . Bu seçeneği buldum. Küresel düzeyde bir değişken tanımlanır

Sonra yeni bir çubuğun gelip gelmediğini kontrol eden bir fonksiyon yazdım - bu şaheser


Bu seçeneği bulduğum yerde, içine tüm mantığı basitçe doldurduğumuz bir işlev oluşturduğumuzu yazıyorlar. Dürüst olmak gerekirse, işlevlerle ilgili bu yaklaşımı hiç sevmiyorum, bu yüzden yeni bir çubuğun görünümünün koşulunu kontrol ettim ve eğer doğruysa, o zaman kene üzerindeki kodu çalıştırmak için uçtular. Basitleştirilmiş bir biçimde, tüm gerçek işler olmadan, bu iş şöyle görünür

Farklı bir sorum var. Kase kesinlikle gerçek hayatta çalışacak. Öyleyse, kasenin test cihazında takip edilmeyecek, ancak gerçek hayatta patlayacak olan versiyonunda, danışmanın her tik üzerinde çalışması için bu kontrolün kaldırılması gerekecek veya bu kontrolün de bırakılması gerekir mi? gerçek? Sadece bu kontrol gerçek sürümde olacaksa, ilk seferde açılmadıysa, siparişleri açmak için ikinci bir girişim nasıl yapılır?

Açık, yüksek, düşük, kapalı bar değerleri üzerinde hesaplamalar yapılırsa, her tik için saymaya gerek yoktur. Ancak her tikte fiyatı takip etmek doğrudur. Bunlar ayrı hesaplamalar veya durum kontrolleri olmalıdır.

Sıfır çubuğunun açılma süresine göre yeni bir çubuk izlenmeye devam eder.

FlagNewBar= false ;   // глобальная или статик булева переменная
   if (BarTime!=Time[ 0 ])
     {
      BarTime=Time[ 0 ];
      FlagNewBar= true ;
     }
 
Artyom Trishkin :

Bu başlıkta, yeni MQL4'te programlamayı gerçekten anlamak ve öğrenmek isteyenlere ve MQL5'e kolayca geçmek isteyenlere yardım etmeye başlamak istiyorum - diller çok benzer.

Burada görevleri, bunları çözmek için algoritmaları ve bu arada, MT için programlama ile ilgili soruları bir şekilde tartışmak mümkün olacak.

Umarım forumumuzun diğer deneyimli üyeleri sorunların çözümüne gelir ve konu herkesin ilgisini çeker.

MQL4 görevi: Bir dizedeki büyük harfin konum numarasını belirleyin. Teşekkür ederim.

 
Mikhail Nazarenko :

MQL4 görevi: Bir dizedeki büyük harfin konum numarasını belirleyin. Teşekkür ederim.

 string str= "preved mEdved" ;
string uppercase= "ABCDEF.....ZАБВГД....Я" ;

int finish= StringLen (str)- 1 ;
int pos=- 1 ;
for ( int i= 0 ; i<=finish; i++)
   {
   pos= StringFind (uppercase, StringSubstr (str,i, 1 ));
   if (pos>= 0 ) break ;
   }
printf (pos);
 
Aleksei Stepanenko :

Teşekkür ederim.

 
Mikhail Nazarenko :

Teşekkür ederim.

Bir hata yaptım, StringFind sonucuna ihtiyacımız yok, ama i.

Böyle:

 string str= "preved mEdved" ;
string uppercase= "ABCDEF.....ZАБВГД....Я" ;

int finish= StringLen (str)- 1 ;
int pos=- 1 ;
for ( int i= 0 ; i<=finish; i++)
   {
   if ( StringFind (uppercase, StringSubstr (str,i, 1 ))>= 0 )
      {
      pos=i;
       break ;
      }
   }
printf (pos);
 
Mikhail Nazarenko :

MQL4 görevi: Bir dizedeki büyük harfin konum numarasını belirleyin. Teşekkür ederim.

StringGetCharacter() işlevini kullanabilirsiniz . "A" karakteri 65'tir ve "a" 32 daha fazladır - 97. Ve böylece tüm karakterler. Bu nedenle, karakter kodu > 90 ve <= 122 ise, bu doğru durumda bir Latince karakterdir. Kiril karakterleri de 32 ile farklılık gösterir

 
Alexey Viktorov :

Yapabilir

Aynen, iyi bir seçenek.

 
Merhaba Burada lider skoru nasıl yapılır?