Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 985
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
do { ... arabellek doldurma kodu
}
while( bu iki değer uyuşmuyor )
kısacası, bir döngüde eşleşene kadar değerleri alın, ancak bundan sonra aşağıdaki kodu yürütündo { ... arabellek doldurma kodu
}
while( bu iki değer uyuşmuyor )
kısacası, bir döngüde eşleşene kadar değerleri alın, ancak bundan sonra aşağıdaki kodu yürütünYani bir gösterge çalışana kadar, veri (akış) diğerine aktarılmaz, yani. Bu göstergenin OnCalculate işlemini bitirmeden göstergede bir döngü yardımcı olmaz. Ve OnCalculate biter bitmez, veriler derhal danışmana verilir ve bunlar hatalıdır.
Ya da ben senin fikrini yanlış anladım.Yani bir gösterge çalışana kadar, veri (akış) diğerine aktarılmaz, yani. Bu göstergenin OnCalculate işlemini bitirmeden göstergede bir döngü yardımcı olmaz.
sırayla diğer göstergelerin arabelleklerinden değerler alın, aynı sayı değilse, aynı olana kadar tekrar alın, akışları unutun. ama genel olarak hiç kimse göstergelerin göstergelerden sapmasını çok yavaş yapmaz
Yani bir gösterge çalışana kadar, veri (akış) diğerine aktarılmaz, yani. Bu göstergenin OnCalculate işlemini bitirmeden göstergede bir döngü yardımcı olmaz. Ve OnCalculate biter bitmez, veriler derhal danışmana verilir ve bunlar hatalıdır.
Ya da ben senin fikrini yanlış anladım.koşulun yerine getirilmesine ihtiyacınız var, o zaman anladığım kadarıyla yalnızca arabellekler doldurulacak (böylece diğer göstergelerin arabelleklerindeki çubukların sayısı eşleşir)
mevcut göstergenin tamponlarını doldurmadan önce tüm koşulları zorla
ya da çarpık programcıya neden problemlerini yanlış konuda çözmemiz gerektiğini geri verin
sırayla diğer göstergelerin arabelleklerinden değerler alın, aynı sayı değilse, aynı olana kadar tekrar alın, akışları unutun. ancak genel olarak hiç kimse göstergelerin göstergelerden sapmasını çok yavaş yapmaz
koşulun yerine getirilmesine ihtiyacınız var, o zaman anladığım kadarıyla yalnızca arabellekler doldurulacak (böylece diğer göstergelerin arabelleklerindeki çubukların sayısı eşleşir)
mevcut göstergenin tamponlarını doldurmadan önce tüm koşulları zorla
ya da çarpık programcıya neden problemlerini yanlış konuda çözmemiz gerektiğini geri verin
Hesaplama diğer göstergelerden hazır değilse, değerler sıfır olacaktır, bu nedenle zorla doldurmanın bir anlamı yoktur, geçmiş verileri doldurabilirsiniz, ancak aynı etkiyle, veriler için değil, veri talep edebilirsiniz. göstergeden geçerli çubuk, ancak geçmiş için ve ardından kodun hiç düzenlenmesi gerekmez.
Neden burada tartışıyoruz - test cihazındaki ve gerçek hesaptaki durum farklı olduğundan, Uyku simülasyonu çok garip çalışıyor ve gösterge uykunun 15 saniyesinde yalnızca bir kez yeniden hesaplanır, ancak her tikte gerçekleşmesi gerekir veya istek üzerine ve 15 saniyede değil, günlüğe bakılırsa 13'te olur.
Ek olarak, senkronizasyon sorunu önemlidir ve bu tür durumlar için göstergeyi veri akışını diğer göstergelere aktarma ihtiyacı hakkında bilgilendirme yeteneği eklemek iyi olur, bu olmadan daha fazla hesaplama yapmak imkansızdır - bu çözüm ol - hesaplamayı tamamlamadan akışı diğerine aktarma komutu.
Buna göre, EA, göstergeden veri alınmasını beklemek ve tam hesaplamanın sonuna kadar keneleri atlamak zorundadır ve şimdi, doğru hesaplama sonuçlarını beklemek için while ifadesini kullanmaya çalışırken donuyor / dönüyor ( yani hiçbir şey olmuyor, sadece test cihazı duruyor) ve bu aynı doğru değil.
Tabii ki, geliştiriciyi bilgilendirdim, ancak ondan bir aydan fazla bir süredir haber yok - serbest çalışmanın maliyeti.
test cihazındaki ve gerçek hesaptaki durum farklıdır, Uyku simülasyonu çok garip çalışır ve gösterge uykunun 15 saniyesinde yalnızca bir kez yeniden hesaplanır, ancak her tikte veya istek üzerine gerçekleşmesi gerekir ve olmaz 15 saniyede ve günlüğe bakılırsa 13'te gerçekleşir.
Ek olarak, senkronizasyon sorunu önemlidir ve bu tür durumlar için göstergeyi veri akışını diğer göstergelere aktarma ihtiyacı hakkında bilgilendirme yeteneği eklemek iyi olur, bu olmadan daha fazla hesaplama yapmak imkansızdır - bu çözüm ol - hesaplamayı tamamlamadan akışı diğerine aktarma komutu.
Buna göre, EA, göstergeden veri alınmasını beklemek ve tam hesaplamanın sonuna kadar keneleri atlamak zorundadır ve şimdi, doğru hesaplama sonuçlarını beklemek için while ifadesini kullanmaya çalışırken donuyor / dönüyor ( yani hiçbir şey olmuyor, sadece test cihazı duruyor) ve bu aynı doğru değil.
Sevgili Artyom Trishkin !
Umarım yukarıdaki soruların yeni başlayanlar için olduğunu belirlediğine göre, bunların cevabını zaten biliyorsun ve bana yardım edebilirsin!
Bir profesyonelden cevap bekliyorum.
Sevgili Artyom Trishkin !
Yukarıdaki soruların yeni başlayanlar için olduğunu belirlediğinize göre, bunların cevabını zaten bildiğinizi ve bana yardımcı olabileceğinizi umuyorum!
Bir profesyonelden cevap bekliyorum.
Yalnızca şunu tavsiye edebilirim: gösterge, hesaplama için gerekli sayıda çubuğu almadıysa OnCalculate()'den çıkmalıdır: if(rates_total<required_number_of_bars) return 0;
EA, göstergeden alınan verileri kontrol etmeli ve göstergenin boş değerine eşit değilse, ancak o zaman alınan verilerle hesaplamalar yapmalıdır.
... ... ...
Yalnızca şunu tavsiye edebilirim: gösterge, hesaplama için gerekli sayıda çubuğu almadıysa OnCalculate()'den çıkmalıdır: if(rates_total<required_number_of_bars) return 0;
Tavsiyen için teşekkürler çıktıyla ilgili herhangi bir sorun yok ama bu durumu çözmüyor şimdiye kadar başarısız bir hesaplama yaptım
Ve bir şekilde arabellekler doldurulur ve diğer göstergelerden veriler alınırken, veriler koşul karşılanana kadar danışmana aktarılmaz. Verilerin doğruluğu henüz kontrol edilmedi, ancak gözle her şey doğru. Yoksa yanılıyor muyum ve bir şeyler kesinlikle yanlış mı?
EA, göstergeden alınan verileri kontrol etmeli ve göstergenin boş değerine eşit değilse, ancak o zaman alınan verilerle hesaplamalar yapmalıdır.
EA , yeni bir çubuk geldiğinde bir hesaplama yapar ve buna göre, göstergeden doğru değeri beklemeye çalışırken, test cihazı çalışmayı durdurur.
... ... ...
1. Öyle.
2. Olan bu. Ve bir sonraki tikte hesaplama doğru olacak, ancak ilk tikte doğru hesabı almam gerekiyor, çünkü danışman döngüde diğer tikler için beklemez veya sabrımla orantılı olmayan bir beklenti vardır, yani. gerçekçi değil - bir hata var.
3. Öyle.
4. Elbette.
5. Evet, yapıyoruz, ancak göstergenin diğer göstergelerden veri alması gerekiyor ve sorun da bu!
6. 1-2. gösterge arabelleğine kasıtlı olarak yanlış veri koymak doğru değildir, bu yalnızca koddaki EA algoritmasındaki bir hatanın tespit edilmesini zorlaştıracaktır.
7. Her şeyi mantıklı bir şekilde anlatıyorum, ancak göstergeyi yazmadım, bu yüzden sebebinin ne olduğunu anlamak benim için zor, göstergenin çalışmasının tezahürlerini, yani tampon değerleri almadan hesaplayamamayı makul bir şekilde açıkladım. veri akışının özel kullanımı nedeniyle diğer göstergeler (göstergeler ardışık olarak sayılır).
8. Burada ve daha önce yazar olmadığımı belirtmiştim, nedenleri belirlemek için çok zaman harcadım - neredeyse bir gün.
9. Ve soruna bir çözüm arıyorum, ayrıca bu durumla karşılaşan varsa bana hemen yardımcı olabilir. Tekrar ediyorum, o konuya Uyku yüzünden yazmaya başladım ve sonra testçinin çalışmasının diğer özellikleri ortaya çıktı, ki bunu da bir hata olarak görüyorum.
Cevap için teşekkürler.
Tavsiyen için teşekkürler çıktıyla ilgili herhangi bir sorun yok ama bu durumu çözmüyor şimdiye kadar başarısız bir hesaplama yaptım
Ve bir şekilde arabellekler doldurulur ve diğer göstergelerden veriler alınırken, veriler koşul karşılanana kadar danışmana aktarılmaz. Verilerin doğruluğu henüz kontrol edilmedi, ancak gözle her şey doğru. Yoksa yanılıyor muyum ve bir şeyler kesinlikle yanlış mı?
EA , yeni bir çubuk geldiğinde bir hesaplama yapar ve buna göre, göstergeden doğru değeri beklemeye çalışırken, test cihazı çalışmayı durdurur.
1. Öyle.
2. Olan bu. Ve bir sonraki tikte hesaplama doğru olacak, ancak ilk tikte doğru hesabı almam gerekiyor, çünkü danışman döngüde diğer tikler için beklemez veya sabrımla orantılı olmayan bir beklenti vardır, yani. gerçekçi değil - bir hata var.
3. Öyle.
4. Elbette.
5. Evet, yapıyoruz, ancak göstergenin diğer göstergelerden veri alması gerekiyor ve sorun da bu!
6. 1-2. gösterge arabelleğine kasıtlı olarak yanlış veri koymak doğru değildir, bu yalnızca koddaki EA algoritmasındaki bir hatanın tespit edilmesini zorlaştıracaktır.
7. Her şeyi mantıklı bir şekilde anlatıyorum, ancak göstergeyi yazmadım, bu yüzden sebebinin ne olduğunu anlamak benim için zor, göstergenin çalışmasının tezahürlerini, yani tampon değerleri almadan hesaplayamamayı makul bir şekilde açıkladım. veri akışının özel kullanımı nedeniyle diğer göstergeler (göstergeler ardışık olarak sayılır).
8. Burada ve daha önce yazar olmadığımı belirtmiştim, nedenleri belirlemek için çok zaman harcadım - neredeyse bir gün.
9. Ve soruna bir çözüm arıyorum, ayrıca bu durumla karşılaşan varsa bana hemen yardımcı olabilir. Tekrar ediyorum, o konuya Uyku yüzünden yazmaya başladım ve sonra testçinin çalışmasının diğer özellikleri ortaya çıktı, ki bunu da bir hata olarak görüyorum.
Cevap için teşekkürler.
OnInit() içinde, sembolün zaman serilerine bir çağrı yapın: iTime(Symbol,Timeframe,1);
OnTick()'te, en başta, en azından aynı if( iTime(Symbol,Timeframe,10)==0) return;
Daha sonra danışman yeni bir çubuk tanımına ulaşmayacak ve bir sonraki onay işaretini bekleyecektir.
OnInit()'te, zaman serisi verilerini istedik, böylece veri sayfalamayı etkinleştirdik.
OnTick()'te, EA için gerekli minimum geçmişin kullanılabilirliğini kontrol ederiz ve henüz mevcut değilse, bir sonraki onay için beklemeye bırakırız.
Ve EA tarafından istenen tüm veriler alınana kadar bir sonraki onay işaretini beklemeye devam edecektir.
Gerekli tüm veriler indirilip alınır alınmaz EA, yeni bir çubuk ve ihtiyaç duyduğu geçmişle çalışmaya başlayacaktır.
Seri verileri güncel tutmak için en az iki dakikada bir erişim sağlamak gerekir. Yaklaşık bir buçuk dakika (90 saniye) için ikinci bir zamanlayıcı yapın ve içindeki istenen sembolün herhangi bir zaman serisine bakın, örneğin iTime(Symbol,Timeframe,1); Alınan verileri kontrol etmeden - sadece hikayeyi "taşıyın". Ardından sembol üzerindeki tüm veriler her zaman güncel olacaktır.