Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 440
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Merhaba! 2015.09.17_19:07 GMT+3. EA programında dinamik dizilerin boyutlarını ayarladım. Ve derleyici hatalar üretir: "virgül bekleniyor". Ve program metninde bir değişken bulunursa, uyarılar verir: "şu ve böyle değişken, global düzeyde bir değişkenin bildirimini gizler." Anlamıyorum. Kılavuzda olduğu gibi her şey doğru görünüyor. Kod parçacıkları ekliyorum:
//--- maksimum çubuk fiyatları dizisi
bool ArraySetAsSeries(double &High[],bool);
//---
bool ArraySetAsSeries(çift &Düşük[],bool);
//--- yedekli (yedek) dizilerin boyutlarını ayarla
int ArrayResize(double &mrate[],int 16,int 9);
int ArrayResize(double &maVal[],int 16,int 9);
int ArrayResize(double &fVal[],int 3,int 2);
int ArrayResize(double &zVal[],int 3,int 0);
int ArrayResize(double &High[],int 1,int 0);
int ArrayResize(double &Düşük[],int 1,int 0);
//+------------------------------------------- --------------------+
//| Uzman başlatmasızlaştırma işlevi |
//+------------------------------------------- --------------------+
geçersiz OnDeinit(const int nedeni)
{
Merhaba! 2015.09.17_19:07 GMT+3. EA programında dinamik dizilerin boyutlarını ayarladım. Ve derleyici hatalar üretir: "virgül bekleniyor". Ve programın metninde oluşursa
Kodumu kastediyorsanız - o zaman evet, kodum yeni bir çubuğun kontrolüdür.
Eklediğim kodla ilgileniyorum - ne yaptığını anlamak istiyorum.
Gönderdiğiniz kod hiçbir şey yapmıyor veya daha doğrusu çalışmıyor. Hata:
Bu koşul yalnızca bir kez çalışır - programın ilk başlangıcında. Bu noktada, statik değişken başlatılacaktır.
Aşağıdaki koşulu kontrol etmek anlamsızdır, çünkü kodunuzda TimeN değişkeni sonsuz sıfıra eşit olacaktır (daha doğrusu 1 Ocak 1970 tarihi olacaktır) ve bu sonsuz sıfırın TimeC değişkeni ile karşılaştırılması önerilmiştir. , geçerli çubuğun açılış süresine eşittir):
Sağladığınız kod hiçbir şey yapmıyor veya daha doğrusu çalışmıyor. Hata:
Bu koşul yalnızca bir kez çalışır - programın ilk başlangıcında. Bu noktada, statik değişken başlatılacaktır.
Aşağıdaki koşulu kontrol etmek anlamsızdır, çünkü kodunuzda TimeN değişkeni sonsuz sıfıra eşit olacaktır (daha doğrusu 1 Ocak 1970 tarihi olacaktır) ve bu sonsuz sıfırın TimeC değişkeni ile karşılaştırılması önerilmiştir. , geçerli çubuğun açılış süresine eşittir):
Şimdi bunu bir danışmana yazmanın neden gerekli olduğunu düşünüyorum.
Açıklama için teşekkürler!
Yeni çubuk M1 zaman dilimindeyse şu mesajı yazdırın:
Tam kodu vermediğim ortaya çıktı, bu şekilde doğruydu
int init()
{
static datetime TimeN=0;
return(INIT_SUCCEEDED);
}
int start()
{
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC) return(0);
TimeN=TimeC;
// Код программы исполняется при появлении нового бара
return(INIT_SUCCEEDED);
}
Tam kodu vermediğim ortaya çıktı, bu şekilde doğruydu
int init()
{
static datetime TimeN=0;
return(INIT_SUCCEEDED);
}
int start()
{
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC) return(0);
TimeN=TimeC;
// Код программы исполняется при появлении нового бара
return(INIT_SUCCEEDED);
}
İşte çalışma kodu:
Bu kodu derlemeyi denediniz mi? Burada bir hata var: TimeN değişkeni OnInit() içinde bildirildi ve OnInit() çıktığında bu değişken yok edilecek. Bu nedenle, OnTick() işlevinde bir hata oluşur
İşte çalışma kodu:
Bunu yanlış yazdım static datetime TimeN=0; int'den önceki bölgede OnInit () - harici ve diğer değişkenlerin bildirildiği yer.