Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 33
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Bir seçim 0 döndürebilir. BCS çarpıştı.
Evet, sahtekar komisyoncular. Hala negatif sayıları oraya doldururlardı.
Brokerler semboller oluşturduğunda geliştiricilerin her parametre için olası değer aralığı üzerinde bir sınırı olsaydı iyi olurdu.
Tam olarak yanlış olan nedir? Kulağa gelen soru buydu - yerel olmayan bir zaman diliminden gösterge verilerini almak için neyi yanlış yapıyorum?
Örnek: gösterge M1'de başlatılır ve AO'dan gelen veriler M5'ten alınmalıdır. Yani - sınırımız> 1 iken (geçmişi yeniden hesaplamamız gerekiyor), o zaman M5'li AO, veri eksikliği hatasıyla sıfırları döndürür. Tüm geçmiş hesaplanır hesaplanmaz (limit==0), M5 ile AO'dan gelen veriler gelmeye başlar.
Yeni başlayanlar için, bunun gibi girişler yapmanız gerekmez:
İlk başta bir değişkene kendi değerini atadığınızı düşündüm.
Daha ileri:
Başlatma sırasında kopyalamanız gerekmez. Başlatma bunun için değil. Ayrıca, OnInit()'ten istek sırasında henüz hesaplanmamış olan eski TF'lerden veri istenirken bu kayıt bir anlam ifade etmeyecektir.
Ancak bu giriş, başlatma aşamasında yalnızca bir kez yapılması yeterlidir.
Ayrıca... um... öznel olarak, yanlış yapardım.
Programı bölmeyi seviyorum:
1. İlk lansman (geçmiş analizi);
2. Sonraki lansmanlar:
2.1. Her kene;
2.2. Oluşan çubuk;
Onlar:
Ve sadece sonra - hesaplamaların ana döngüsü (fonksiyonu).
Kopyalama işlevleri size bilgi vermeyen hatalar verir. Bu sadece kod - gerçekten değil.
Kıdemli TF'nin verilerinin senkronizasyon kontrolü yoktur.
Ve burada en önemli şey sırayı anlamaktır. İlk başlangıçta yalnızca eski zaman diliminin verilerini talep etmesi ve kopyalamanın nasıl gerçekleştiğini anlaması için bir test göstergesi oluşturmanızı tavsiye ederim. Onlar. bunu kodun başından kaldırın:
Ve dizinin ilk ve son elemanının çıktısını alın. Ve ancak o zaman gerekirse, indeksleme yönünü değiştirin.
Yeni başlayanlar için, bunun gibi girişler yapmanız gerekmez:
İlk başta bir değişkene kendi değerini atadığınızı düşündüm.
Daha ileri:
Başlatma sırasında kopyalamanız gerekmez. Başlatma bunun için değil. Ayrıca, OnInit()'ten istek sırasında henüz hesaplanmamış olan eski TF'lerden veri istenirken bu kayıt bir anlam ifade etmeyecektir.
Ancak bu giriş, başlatma aşamasında yalnızca bir kez yapılması yeterlidir.
Ayrıca... um... öznel olarak, yanlış yapardım.
Programı bölmeyi seviyorum:
1. İlk lansman (geçmiş analizi);
2. Sonraki lansmanlar:
2.1. Her kene;
2.2. Oluşan çubuk;
Onlar:
Ve sadece sonra - hesaplamaların ana döngüsü (fonksiyonu).
Kopyalama işlevleri size bilgi vermeyen hatalar verir. Bu sadece kod - gerçekten değil.
Kıdemli TF'nin verilerinin senkronizasyon kontrolü yoktur.
Ve burada en önemli şey sırayı anlamaktır. İlk başlangıçta yalnızca eski zaman diliminin verilerini talep etmesi ve kopyalamanın nasıl gerçekleştiğini anlaması için bir test göstergesi oluşturmanızı tavsiye ederim. Onlar. bunu kodun başından kaldırın:
Ve dizinin ilk ve son elemanının çıktısını alın. Ve ancak o zaman gerekirse, indeksleme yönünü değiştirin.
Değişkenleri bir bakışta anlayacağım şekilde yapıyorum. Anlamıyorsun - anlaman için onları yap;)
Genel olmayan değişkenleri her zaman küçük bir harfle yazmaya başlarım - nedeni basit: büyük/küçük harfe duyarlı zeka ...
Bu test kodudur, çünkü bir test kodu değildir, yeterince büyüktür ve tf'yi değiştirirken MT4'te uçar ve veri eksik hatası yoktur - her şey her zaman oradadır. MT5'te, tf'yi değiştirirken, geçmişi yalnızca yarım dakika yükler ve daha sonra kendi olmayan bir tf'nin verileriyle de çalışmaz - onların yokluğundan bahseder.
Bu yüzden neyi yanlış yaptığımı tartışmak için gündeme getirdim. İnternetteki tüm kullanılmış TF'ler hakkında veri istemeniz gerektiği ortaya çıktı. Tahmini kullanılan TF'lerin sayısı önceden bilinmiyorsa, hepsini talep etmeniz gerektiğini düşünüyorum. Yarım dakika için sadece bir tane sayılır. Sadece 21 tane var...
Yine düşündüğüm bir şey değil mi?
MT5'te, tf'yi değiştirirken, geçmişi yalnızca yarım dakikalığına yükler
bunun hakkında yazdı
daha fazla ayrıntı burada
https://www.mql5.com/en/forum/1111/page1871#comment_4866969
https://www.mql5.com/ru/forum/1111/page1871#comment_4867939
öyle ve olacak. ne kadar fazla TF veya karakter istenirse, o kadar fazla fren başlangıcı olur.
bunun hakkında yazdı
daha fazla ayrıntı burada
https://www.mql5.com/en/forum/1111/page1871#comment_4866969
https://www.mql5.com/ru/forum/1111/page1871#comment_4867939
öyle ve olacak. ne kadar fazla TF veya karakter istenirse, o kadar fazla fren başlangıcı olur.
Evet, göstergenin sadece ilk başlangıcında olsa iyi olurdu. Şimdilik, zaman dilimini her değiştirdiğimde, geçmiş yarım dakikalığına yükleniyor. Bunun olmaması gerektiğini anlıyorum, ama... Yanlış bir şey yapıyorum ya da başka bir şey... Ve sadece bir göstergede bu - yerel olmayan bir zaman dilimine erişmeye çalışıyorum.
Peki, başka bir TF'den veri kopyalama hızını ölçün ve darboğazın nerede olduğunu görün.
Hesaplamalar için farklı zaman dilimlerinden birkaç gösterge kullanmanız gerekiyorsa, her bir zaman dilimini ele almanız gerekir.
Her şeyin daha hızlı hesaplanmasını istiyorsanız, terminaldeki geçmişin boyutunu küçültün.
Test göstergemi çalıştırdın mı? Veriler toplanıyor mu?
Hesaplamalar için farklı zaman dilimlerinden birkaç gösterge kullanmanız gerekiyorsa, her bir zaman dilimini ele almanız gerekir.
Her şeyin daha hızlı hesaplanmasını istiyorsanız - terminaldeki geçmişin boyutunu küçültün.
Test göstergemi çalıştırdın mı? Veriler toplanıyor mu?
Hayır, henüz başlamadı.
TÜM zaman dilimlerine ihtiyaç duyulursa, AO göstergesinin 21 tanıtıcısını oluşturmanız gerektiği ortaya çıktı. Bu israf değil mi?
Hayır, henüz başlamadı.
TÜM zaman dilimlerine ihtiyaç duyulursa, AO göstergesinin 21 tanıtıcısını oluşturmanız gerektiği ortaya çıktı. Bu israf değil mi?