Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 143
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
int(round) konusunda hemfikirim. Teşekkür ederim. Açık tip döküm zarar vermez. Açık bir oyuncu kadrosu olmadan çalışmasına rağmen.
Herhangi bir hatam yok. En son inşa et.
Teşekkürler, MT5 güncellemesi yardımcı oldu. Hata gitti. yapı 23 Temmuz 2013 tarihli. Bu arada eski yapıda tip döküm uyarıları yoktu, o yüzden fark etmemiştim.
Peki, derleyiciden bu kadar ciddi hataları kim beklerdi.
Teşekkürler, MT5 güncellemesi yardımcı oldu. Hata gitti. yapı 23 Temmuz 2013 tarihli. Bu arada eski yapıda tip döküm uyarıları yoktu, o yüzden fark etmemiştim.
Peki, derleyiciden bu kadar ciddi hataları kim beklerdi.
Zaman aralığında minimumu bulmak gerekir. Zamanı belirlemek için aşağıdaki kodu derledi:
Bu aralıkta düşükleri aramak için CopyLow işlevini kullanıyorum:
Ayrıca, eğer doğru anlarsam, tek boyutlu bir Low[] dizisi alıyorum,
ArrayMinimum kullanarak içinde minimum arıyorum:
Bugün başlama saatini 1 saat ayarlamaya, 2 saat durdurmaya ve min=-1'i kontrol etmek için Alert'ı aramaya çalıştım.
Soru: Bu görev için, bu görevi çözmek için doğru seçilmiş fonksiyonlar mı yoksa bir yerde bir hata mı var? Minimum fiyatı almanız gerekiyor.
Bu soruyu El Kitabında ele almaya çalıştım ama sınıfların kullanımıyla ilgili bir örnek var ve henüz buna hazır değilim.
Henüz sınıfları kullanmadan bir EA yazmak istiyorum. Her biri için 3 hareketli ortalama elde etmek için, gereksiz olan her şeyi değerlendirme dışı bıraktım.
kullanılan para birimi programın aşağıdaki parçasını yazdı:
giriş int Kurtz_Period = 5; // hızlı hareket eden ortalama periyot Kurtz
giriş intMittel_Period=8;
girdi int Uzun_Dönem=13;
intmaHandle; // Hareketli Ortalama göstergesinin tutamacı
çift ma_buf[]; // bu MA işlevinden elde edilen hareketli ortalama okumalar için bir arabellek dizisidir
// ve daha sonra ilgili dizilere yeniden yazılacak
tarih saat zaman_tamponu [ ]; // bar açılış zamanlarının temel dizisi
tarihsaat Saat_[6][150]; // bar açılış zamanları dizisi
çift Kurtz[6]][70]; //bu hızlı hareket eden ortalama Kurtz için bir dizidir, buradaki satır numaraları kullanılan para birimlerinin sayıları ile aynıdır ve sütunlar hareketli ortalamaların okumalarıdır
doubleMittel[6]][70]; // bu, orta dönem hareketli ortalama Mittel için bir dizidir
çift Uzun[6]][70]; // bu, uzun dönemli hareketli ortalama Uzun için bir dizidir.
string İsim_sembol[6] = { "AUDUSD", "EURUSD", "GBPUSD", "USDCAD", "USDCHF", "USDJPY" }; // bu, para birimi adlarından oluşan bir metin dizisidir:
int sayı_instr; // bu, enstrümanın (para birimi) sayısıdır, yalnızca döngüleri para birimlerine göre düzenlemek içindir
int OnInit()
{
//-----
//-------
}
geçersiz OnDeinit(const int nedeni)
{
//---
ArrayFree(Zaman_tampon);
ArrayFree ( ma_buf ) ; // serbest bırakılan diziyi sıfırla
//-------
}
geçersiz OnTick()
{
//----------------------
ArraySetAsSeries(Time_buf, true); // time_array dizisi için indekslemeyi zaman serilerinde olduğu gibi ayarla
ArraySetAsSeries ( ma_tampon , true ) ; // ma _ buf dizisi için indekslemeyi zaman serilerinde olduğu gibi ayarla
for( nomer_instr=0; nomer_instr<=5; nomer_instr++ ) // bu, kullanılan tüm para birimleri arasında bir döngüdür
{
int basamak = int( SymbolInfoInteger( Name_symbol[nomer_instr], SYMBOL_DIGITS)); // bu, para birimi teklifindeki karakter sayısıdır
CopyTime( Name_symbol[nomer_instr], PERIOD_M1,0,160,Time_buf); // her çubuk için geçmiş zaman verilerini ara belleğe kopyalayın
for( i=1; i<=145; i++ ) Zaman[nomer_instr][i]=Zaman_buf[i]; // 1. çubukların açılma zamanı
//############################################## ############################################
// İlk 3 kayan olanın okumalarını oluşturmak için BLOK: Kurtz , Mittel , Long
manHandle = iMA( Name_symbol[nomer_instr],PERIOD_M1, Kurtz_Period , 0, MODE_SMMA, PRICE_CLOSE );
if( CopyBuffer(maHandle,0,0,155,ma_buf)<0 )
{
Alert("Gösterge arabellekleri kopyalanırken hata ---PERIOD_M1,Kurtz_Period--- Hareketli Ortalama - hata numarası:",GetLastError());
dönüş;
}
for( i=1; i<=45; i++ ) Kurtz[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], basamak);
/*
//============================================== ==============
// Zaman serilerinde olduğu gibi çubukların kaymasını ve sayıların normalleştirilmesinin doğruluğunu kontrol etmek için BLOK
// hızlı hareket eden MA-5
if( Multi_Torgi == 0 && Optim_parametrov == nomer_instr ) // EA çalışma modunu seçme anahtarı bu, şimdi program hata ayıklama modunda
{
for( i=1; i<=5; i++ )
{
if(i==1) Alert("====================");
if(i==1) Alert(" 1. çubuğun açılış zamanı : Time[nomer_instr][1]=",Time[nomer_instr][1] );
Alert(" çubuk numarası : i=",i,", MA_buf[i]=",MA_buf[i],", Kurtz[nomer_instr][i]=",Kurtz[nomer_instr][i]);
}
}
//============================================== ================
*/
//------------------------------------------------ -------------------------------------------------- ---------------------------
maHandle = iMA( Name_symbol[nomer_instr],PERIOD_M1, Mittel_Period, 0, MODE_SMMA, PRICE_CLOSE );
if(CopyBuffer(maHandle,0,0,155,ma_buf)<0)
{
Alert("Gösterge arabellekleri kopyalanırken hata oluştu ===PERIOD_M1, Mittel_Period,=== Hareketli Ortalama - hata numarası:",GetLastError());
dönüş;
}
for( i=1; i<=45; i++ ) Mittel[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], basamak);
//------------------------------------------------ -------------------------------------------------- --------------------
maHandle = iMA( Name_symbol[nomer_instr],PERIOD_M1, Long_Period, 0, MODE_SMMA, PRICE_CLOSE);
if(CopyBuffer(maHandle,0,0,155,ma_buf)<0)
{
Alert("Gösterge arabellekleri kopyalanırken hata oluştu ===PERIOD_M1, Long_Period,===Hareketli Ortalama - hata numarası:",GetLastError());
dönüş;
}
for( i=1; i<=45; i++ ) Uzun[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], basamak);
// ilk 3 kaymanın okumalarının oluşumu için BLOK'un sonu : Kurtz , Mittel , Long
//############################################## ############################################
} // kullanılan para birimleri için döngünün sonu
//============================================== ===========
Diğer program ifadeleri
//=============================================== ===========
//--------------------------------------------
}// OnTick() fonksiyonunun sonu
//+------------------------------------------- --------------------+
Bu programa göre derleme sırasında herhangi bir hata algılanmaz, ancak Journal'da test yapılırken her hareketli ortalama için bir mesaj görüntülenir.
hata: 4806, "İstenen veri bulunamadı".
Lütfen bana hatamın nerede olduğunu söyle.
Teşekkür ederim.
Tip döküm ilkesini gerçekten anlamadın mı? Bu kadar basit:
Şimdi açık görünüyor) int st işleneninin datetime tp[]'den daha küçük bir tür olduğu ortaya çıktı.
Yani operasyonda saniyeye dönüşüm yok:
Zaman aralığında minimumu bulmaya çalıştım. Doğru yaptığımdan emin değilim. Bir önceki gönderiyi görebiliyor musunuz?
Hafta sonu kontrolleri yapmak için yeni tikler olmadan nasıl Uyarı veya Yorum çağrılabilir?
Zaman aralığında minimumu bulmak gerekir. Zamanı belirlemek için aşağıdaki kodu derledi:
Bu aralıktaki düşükleri aramak için CopyLow işlevini kullanıyorum:
Ayrıca, eğer doğru anlarsam, tek boyutlu bir Low[] dizisi alıyorum,
ArrayMinimum kullanarak içinde minimum arıyorum:
Bugün başlama saatini 1 saat ayarlamaya, 2 saat durdurmaya ve min=-1'i kontrol etmek için Alert'ı aramaya çalıştım.
Soru: Bu görev için, bu görevi çözmek için doğru seçilmiş fonksiyonlar mı yoksa bir yerde bir hata mı var? Minimum fiyatı almanız gerekiyor.
Dikkatlice okuyoruz:
Geri dönüş değeri
İşlev, dizinin seriliğini dikkate alarak bulunan öğenin dizinini döndürür. Başarısız olduğunda, işlev -1 değerini döndürür.
bu yüzden bunu yapmanız gerekir:
Sadece script ile değil hafta sonları da kontrol edip test etmek gerekiyor.
Sadece script ile değil hafta sonları da kontrol edip test etmek gerekiyor.