Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 578
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
dataCandles bir yapıdır. Mumları geçmişten yazdığımız bir dizi - dizi[]. Bu nedenle, indekslemesinin grafikteki mumların indekslenmesiyle çakışması için bir zaman serisi olarak yapılması gerekir. Yani, [] dizisinin sıfır hücresi, geçerli tarihe en yakın mumlara karşılık gelir.
Yani 1. mumları dizi[] dizisine kopyalayın, 2. onu bir zaman dizisi yapın, ardından ondan değerleri yapıya okuyun.
[] dizisi olmadan yapmak mümkün olurdu - verileri doğrudan grafikten yapıya yazın, ancak bunu beş ile uyumluluk için önerdim - yalnızca yüksek [i], düşük kullanarak doğrudan göstergede kopyalayabilirsiniz. [i] ve diğer veriler, ancak bir komut dosyasında veya bir Uzman Danışmanda, yine de önce istenen geçmiş bölümünü bir diziye kopyalamamız gerekiyor, hemen yaptım.
Uyarı(seri);
bunun gibi?
hala her iki uyarı da yanlış veriyor
Uyarı(seri);
bunun gibi?
hala her iki uyarı da yanlış veriyor
Dolayısıyla bu, "Bugs, Bugs, Questions" bölümünde rapor edilmesi gereken bir hatadır.
İşte bir test betiği, [] dizisinin sıfır ve son hücrelerinde kopyalanan mumların zamanını gösterir:
Dolayısıyla bu, "Bugs, Bugs, Questions" bölümünde rapor edilmesi gereken bir hatadır.
İşte bir test betiği, [] dizisinin sıfır ve son hücrelerinde kopyalanan mumların zamanını gösterir:
Bunu verir:
Dizi dizidir: yanlış
zaman dizisi[0]: 2016.05.12 21:00
zaman dizisi[9]: 2016.05.12 12:00
Bunu verir:
Dizi dizidir: yanlış
zaman dizisi[0]: 2016.05.12 21:00
zaman dizisi[9]: 2016.05.12 12:00
Ne verdiğini kontrol ettim - her zaman yanlıştır, ancak zaman doğrudur: dizi dizisini betiği başlatırken "Evet" zaman serisi olarak seçerseniz, o zaman:
"Hayır"ı seçerseniz:
diziye yazılan mumların zamanı yerleri değiştirdi, bu da ArraySetAsSeries() işlevinin doğru çalıştığı anlamına geliyor, ancak ArrayIsSeries() çalışmıyor, her zaman false döndürür, ki zaten yukarıda bahsedilen hata dizisine aboneliğimi iptal ettim.
Ah, bu programlama. Ormana ne kadar uzaksa...
Anlayın, dizinin yönünü bilmenize gerek yok. Algoritma tekrarları arıyor. Bu nedenle, çubukların hangi sırayla işleneceği önemli değildir.
ihtiyaç. Sonuçta, hangi mumların tesadüf oluşturduğunu bulmam ve mevcut fiyata en yakın olandan Düşük fiyatı almam gerekiyor.
Bunu yapmak için, yapının bir mum süresi vardır, bu sayede ihtiyacınız olan herhangi bir zamana en yakın mumu bulabilirsiniz.
Ve mum numaralarını göstermenize gerek yok - çubukların gerçek sayılarıyla eşleşmezler. Sonuçta diziyi dolduruyoruz ve dizideki indeksler sadece dizideki mum sayısına aittir, grafikte değil.
Ne verdiğini kontrol ettim - her zaman yanlıştır, ancak zaman doğrudur: dizi dizisini betiği başlatırken "Evet" zaman serisi olarak seçerseniz, o zaman:
"Hayır"ı seçerseniz:
diziye yazılan mumların zamanı yerleri değiştirdi, bu da ArraySetAsSeries() işlevinin doğru çalıştığı anlamına geliyor, ancak ArrayIsSeries() çalışmıyor, her zaman false döndürür, ki zaten yukarıda bahsedilen hata dizisine aboneliğimi iptal ettim.
Kodu biraz değiştirdim:
ArraySetAsSeries (dizi,doğru); //buraya doğru koy
ve ardından kendi kendini test etmek için mum sayılarını yazmak için eklendi:
Alert("Dizi dizidir: ",ArrayIsSeries(dizi),
"\nCandle "+IntegerToString(0,2,'0')+" zaman dizisi[0]: ",TimeToString(dizi[0].time,TIME_DATE|TIME_MINUTES),
"\nCandle "+IntegerToString(searchperiod-1,2,'0')+" time array[",string(searchperiod-1),"]: ",TimeToString(array[ArraySize(array)-1].time, TIME_DATE|TIME_MINUTES));
Aşağıdakileri verir:
Dizi dizidir: yanlış
Mum 00 zaman dizisi[0]: 2016.05.12 22:00
Mum 09 zaman dizisi[9]: 2016.05.12 13:00
Bunu yapmak için, yapının bir mum süresi vardır, bu sayede ihtiyacınız olan herhangi bir zamana en yakın mumu bulabilirsiniz.
Kodu biraz değiştirdim:
ArraySetAsSeries(dizi,doğru); //buraya doğru koy
ve ardından kendi kendini test etmek için mum sayılarını yazmak için eklendi:
Alert("Dizi dizidir: ",ArrayIsSeries(dizi),
"\nCandle "+IntegerToString(0,2,'0')+" zaman dizisi[0]: ",TimeToString(dizi[0].time,TIME_DATE|TIME_MINUTES),
"\nCandle "+IntegerToString(searchperiod-1,2,'0')+" time array[",string(searchperiod-1),"]: ",TimeToString(array[ArraySize(array)-1].time, TIME_DATE|TIME_MINUTES));
Aşağıdakileri verir:
Dizi dizidir: yanlış
Mum 00 zaman dizisi[0]: 2016.05.12 22:00
Mum 09 zaman dizisi[9]: 2016.05.12 13:00