Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 763
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
Döngülerde öyle görünüyor ve bir işlev olmadan yapabilirsiniz
Teşekkür ederim.
Ancak, işlevi kaldırdım - frenler kaldı .... kahretsin.
Teşekkür ederim.
Ancak, işlevi kaldırdım - frenler kaldı .... kahretsin.
Programı bir şekilde 4=>5'ten yeniden yazmaya başladım, sonra 4-ke'de Low[1], Time[0] ve diğerleri gibi tüm yapıları modern olanlarla, yani CopyLow , CopyTime ile değiştirdim, program 4'te bile -ke daha hızlı iş oldu. Artık eski tasarımları kullanmıyorum, sadece yenilerini kullanıyorum. Böylece kod 5. platforma kolayca aktarılabilir, sadece ticaret fonksiyonlarını değiştirmeniz yeterlidir.
Programı bir şekilde 4=>5'ten yeniden yazmaya başladım, sonra 4-ke'de Low[1], Time[0] ve diğerleri gibi tüm yapıları modern olanlarla, yani CopyLow , CopyTime ile değiştirdim, program 4'te bile -ke daha hızlı iş oldu. Artık eski tasarımları kullanmıyorum, sadece yenilerini kullanıyorum. Böylece kod 5. platforma kolayca aktarılabilir, sadece ticaret fonksiyonlarını değiştirmeniz yeterlidir.
Diziyi her hapşırma ile doldurmak kaynakları tüketmiyor mu?
Belki bar açıldığında bilgiyi bir diziye kopyalamak ve ardından oradan koda götürmek mantıklı olabilir mi? Bir bar açıldığında ticaret yaparım.
Diziyi her hapşırma ile doldurmak kaynakları tüketmiyor mu?
Belki bar açıldığında bilgiyi bir diziye kopyalamak ve ardından oradan koda götürmek mantıklı olabilir mi? Bir bar açıldığında ticaret yaparım.
Dizi yeni bir çubukta doldurulabilir, böylece daha az kaynak harcanacaktır. Örneğin, birkaç yerde iLow[1] ile çalışıyorsanız, onu bir kez bir değişkene koymanız ve diziyi değil değişkeni okumanız istenir.
öyle varsayalım
Ardından, TM[ 0 ] ve TM[ 1 ] ile değil, TIME_0 ve TIME_1 değişkeniyle çalışıyoruz.Dizi yeni bir çubukta doldurulabilir, böylece daha az kaynak harcanacaktır. Örneğin, birkaç yerde iLow[1] ile çalışıyorsanız, onu bir kez bir değişkene koymanız ve diziyi değil değişkeni okumanız istenir.
öyle varsayalım
Ve yine de, MT4 bir büyüklük sırası daha hızlı - hayal kırıklığına uğradım.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
Aleksey Vyazmikin , 2017.07.21 15:07
Neden hayal kuruyorsun? Fikrinizi anladım ve işe yaradığını onayladım ve istek bir kez gerçekleşirse ve danışmanın çalışması için kaç çubuk gerektiği biliniyorsa etkili olacaktır.
Ya da başka bir yapıyı kullanmayı önerdiğiniz gibi mi? O zaman lütfen açıklayın ve gücenmeyin!
Fantezi yok. Bir mumun 2 veya daha fazla parametresini almanız gerekiyorsa, mesajlarınızdan/sorularınızdan gelen fonksiyonları kullanarak, bu fonksiyonları her mum parametresi için ayrı ayrı çağırmanız gerekecektir. Yani, Copy***() gerçekleştirmek için 2 veya daha fazla kez, ancak CopyRates() kullanıldığında yalnızca bir kopya çağrısı gerekir.
Kopyalanacak miktara gelince, bu tamamen farklı bir konu. Belki de önce hangi çubukta istenen gösterge değerinin olduğunu hesaplamanız ve ardından kopyalamanız gerekir? Yanlış hatırlamıyorsam kopyalanacak bir meblağdan bahsediliyordu. Hangi fantezilerden bahsediyoruz?
Ve aşırı durumlarda, örneğin 10 çubuğu kopyalayabilir ve aralarında arama yapabilir, bulamadıysanız 10 tane daha kopyalayabilirsiniz. Kopyalama maliyetli bir işlemdir, diziyi sıralamak daha ucuzdur.
Genel olarak, birçok seçenek var. Bütün bunları belgelere yazmak imkansız ve artık belge olmayacak. Bu programlama derslerinde öğretilir. Ancak ne yazık ki, tüm öğretmenler bunu nasıl yapacağını bilmiyor ve tüm öğrenciler bunu sınıfta anlamak istemiyor. Ve çok, çok başlangıç, öğretmenin sorunun ayrıntılı bir açıklamasını gerektirdiğinde, 2-5. sınıflardaki aritmetik derslerinde atılır. Ama burada da aynı sorunlar var.
Fantezi yok. Bir mumun 2 veya daha fazla parametresini almanız gerekiyorsa, mesajlarınızdan/sorularınızdan gelen fonksiyonları kullanarak, bu fonksiyonları her mum parametresi için ayrı ayrı çağırmanız gerekecektir. Yani, Copy***() gerçekleştirmek için 2 veya daha fazla kez, ancak CopyRates() kullanıldığında yalnızca bir kopya çağrısı gerekir.
Kopyalanacak miktara gelince, bu tamamen farklı bir konu. Belki de önce hangi çubukta istenen gösterge değerinin olduğunu hesaplamanız ve ardından kopyalamanız gerekir? Yanlış hatırlamıyorsam kopyalanacak bir meblağdan bahsediliyordu. Hangi fantezilerden bahsediyoruz?
Ve aşırı durumlarda, örneğin 10 çubuğu kopyalayabilir ve aralarında arama yapabilir, bulamadıysanız 10 tane daha kopyalayabilirsiniz. Kopyalama maliyetli bir işlemdir, diziyi sıralamak daha ucuzdur.
Genel olarak, birçok seçenek var. Bütün bunları belgelere yazmak imkansız ve artık belge olmayacak. Bu programlama derslerinde öğretilir. Ancak ne yazık ki, tüm öğretmenler bunu nasıl yapacağını bilmiyor ve tüm öğrenciler bunu sınıfta anlamak istemiyor. Ve çok, çok başlangıç, öğretmenin sorunun ayrıntılı bir açıklamasını gerektirdiğinde, 2-5. sınıflardaki aritmetik derslerinde atılır. Ama burada da aynı sorunlar var.
Fantezi hakkında - "Söylenenleri anlamaya çalışmak, ne olduğunu anlamaya çalışmak yerine, bazı inanılmaz itirazlar ortaya çıkıyor." ifadenize bir yanıt verildi ve önerdiğiniz seçeneğin fantezi alanından olduğu gerçeğine değil. .
Konseptinizi çok iyi anlıyorum ve bu size verilen cevapta belirtildi.
Ancak, bilinmeyen miktarda veri ile nasıl çalışmayı önerdiğinizi tam olarak anlamadım - kod şeklinde bir örnek verebilir misiniz?
Bu bağlantıyı kullanarak göstergeyi denetleme ve optimize etme konusunda yardım istiyorum https://www.mql5.com/en/code/16805 - sorun şu ki, çok sayıda çubuk göründüğünde gösterge çok yavaşlamaya başlar - bu test sırasında kendini gösterir.
Ve her kene için değil, sadece çubuğun açılışında nasıl hesaplanır? Danışmanın yöntemi uymuyordu - ilk onay işaretinden sonra tüm değerler kayboluyor ve yalnızca bir sonraki çubukta görünüyor...
Fantezi hakkında - "Söylenenleri anlamaya çalışmak, ne olduğunu anlamaya çalışmak yerine, bazı inanılmaz itirazlar ortaya çıkıyor." ifadenize bir yanıt verildi ve önerdiğiniz seçeneğin fantezi alanından olduğu gerçeğine değil. .
Konseptinizi çok iyi anlıyorum ve bu size verilen cevapta belirtildi.
Ancak, bilinmeyen miktarda veri ile nasıl çalışmayı önerdiğinizi tam olarak anlamadım - kod şeklinde bir örnek verebilir misiniz?
Daha önce cevaplandı...
Alexey Viktorov :
Ve aşırı durumlarda, örneğin 10 çubuğu kopyalayabilir ve aralarında arama yapabilir, bulamadıysanız 10 tane daha kopyalayabilirsiniz. Kopyalama maliyetli bir işlemdir, diziyi sıralamak daha ucuzdur.
Ancak, bir el feneri miktarına sahip olmamak daha iyidir, ancak bir kopya ile idare etmeye çalışmak için yaklaşık olarak maksimumdur.
Örnek kod yazmayacağım. Normal bir programcının sadece bir ipucuna ihtiyacı vardır. İşte örnek bir algoritma:
Böylece, bir kopya ve bir döngüde, gerekirse iki kesişme bulunabilir. ArraySetAsSeries()'e bile gerek yoktur, çünkü kavşağı bulmak mümkündür ve bence çubuk numarasını değil, zamanını hatırlamak daha iyidir. Çubuğun zamanı bilinmesine rağmen, sayısını belirlemekte zorluk yoktur.
Soruya dikkat: Ne daha hızlı çalışacak, gösterge arabelleğini 1 değer kopyalayıp yüksek çubuğu 1 kopyalayıp bu değerleri karşılaştıran bir döngü veya bir kerelik belirli bir miktarı kopyalayıp iki dizinin değerlerini karşılaştıran bir döngü herbiri?
Daha dün yazdı:
Görev:
her onayda açık, yüksek, düşük, yakın ve zaman öğelerinin "InpCountCopy"sini alın.
Uygulama:
Fırsatlar:
nasıl kontrol edeceğinizi seçebilirsiniz: OnTick'te veya OnTimer'da (1 saniye).