MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 361

 
ijonhson :

Soru farklıdır, bir kene ile gösterge kodunu 900 kez (örneğin 300 çubukluk 3 zaman dilimi) veya 3 kez hesaplayın, icustom ile daha az yaygara olduğu açıktır, onu bir döngüye ve işe attım, çünkü bir değişken, bir danışmana gösterge değerleri dizisinin adresini dll kullanarak gördüm, ancak göstergeyi kitte sürüklemek istemiyorum


Sorunun formülasyonunda bir başka hata.. Danışmanda neden 900 bara ihtiyacınız var? Doğru ayarlanmış bir görev, göstergeden 2-3 çubuğun okunmasını gerektirir.Göstergede gerçekten veriye ihtiyacınız varsa, 900 parça, o zaman bunlarla göstergenin kendisinde çalışın, neden bunları danışmana sürükleyin? Doğru görev %50 başarıdır

 
Nikolay Ivanov :

Sorunun formülasyonunda bir başka hata.. Danışmanda neden 900 bara ihtiyacınız var? Doğru ayarlanmış bir görev, göstergeden 2-3 çubuğun okunmasını gerektirir.Göstergede gerçekten veriye ihtiyacınız varsa, 900 parça, o zaman bunlarla göstergenin kendisinde çalışın, neden bunları danışmana sürükleyin? Doğru görev %50 başarıdır


Trendleri belirlemek için örneğin 5dk 15dk ve 30dk gibi 3 zaman diliminde göstergenin minimum ve maksimum zirvelerini karşılaştırmam gerekiyor, zirveleri tahmin edemem, yani tümünden geçmem gerekecek tarih tek tek. Örnek olarak 300 bar tarihi aldım.

Her neyse, icustom'ı kullanmak çok kaynak yoğun.

 
ijonhson :

Trendleri belirlemek için örneğin 5dk 15dk ve 30dk gibi 3 zaman diliminde göstergenin minimum ve maksimum zirvelerini karşılaştırmam gerekiyor, zirveleri tahmin edemem, yani tümünden geçmem gerekecek tarih tek tek. Örnek olarak 300 bar tarihi aldım.

Her neyse, icustom'ı kullanmak çok kaynak yoğun.


Ontick fonksiyonunda soru açık kalıyor IndicatorCounted() ilk hesaplamada -1 veriyor Expert Advisor'da nasıl değiştirilebilir?

 
ijonhson :

"Hiçbir şeyle değiştirmenize gerek yok" - yani, Uzman Danışmanda onTick ile ve göstergede onCalculate ile çalışıyor mu?

Hayır, orada buna hiç gerek yok demek istedim.

 
Alexey Viktorov :

Hayır, orada buna hiç gerek yok demek istedim.


https://www.mql5.com/en/articles/1456 , anladım, ama daha basit bir seçenek olduğunu düşündüm

Перенос кода индикатора в код эксперта. Строение индикатора.
Перенос кода индикатора в код эксперта. Строение индикатора.
  • 2007.02.16
  • Nikolay Kositsin
  • www.mql5.com
Прежде чем приступить к основной теме статьи, мне следовало бы вкратце коснуться общего строения индикатора под углом зрения программиста, которого этот индикатор интересует, как будущая часть кода эксперта: Вполне естественно, что у реального индикатора может быть другое количество отображаемых индикаторных значений, другое количество...
 
ijonhson :

Ontick fonksiyonunda soru açık kalıyor IndicatorCounted() ilk hesaplamada -1 veriyor Expert Advisor'da nasıl değiştirilebilir?

Her tike bakmanıza gerek yok, değişmezler.

Danışmanda, çubuğun açılışında döngüyü kontrol edin ve üst bulunur bulunmaz döngüden çıkın.

   int count= Bars ( Symbol , Period );
   for ( int i= 0 ; i<count; i++) {
     // ищем и запоминаем в переменную, если нашли break;
   }
 
ijonhson : Ontick fonksiyonunda soru açık kalıyor IndicatorCounted() ilk hesaplamada -1 veriyor Expert Advisor'da nasıl değiştirilir?

IndicatorCounted() işlevi daha önce start() işlevine sahip göstergelerde kullanılıyordu. OnCalculate() işlevine sahip yeni göstergelerde, bunun yerine ikinci parametre prev_calculated kullanılır. Onları özel olarak inceledim ve 1 ile farklılık gösterdiklerini buldum. Fark küçüktür ve zaten kaç çubuğun hesaplandığını gösterirler. 0 (veya -1) ise, tüm çubukların hesaplanması gerekir. Bu, gösterge başlatıldığında, tüm satırı çizmesi ve sonucu arabellek dizilerinde saklaması gerektiğinde gerçekleşir. Sonraki tiklerde, yalnızca son çubuğun verileri yeniden hesaplanmalıdır. Bu nedenle, sıfır (veya -1) değeriyle yapılanlar Expert Advisor'ın OnInit()'ine yerleştirilmelidir. Gerisi - çok az - OnTick()'te

 
YarTrade :

Teşekkür ederim. Çalışacağım. Nedense ders kitabında uzun tiple ilgili hiçbir şey okumadım.

İmleci uzun int veya kısa (veya dilin herhangi bir başka kelimesi) üzerine getirmeniz ve F1 tuşuna basmanız gerekir.

 
ijonhson :

Çok teşekkür ederim ama fonksiyonun açıklamasından anladığım kadarıyla benim belirttiğim yerde yani tüm köşeleri almak için tek bir değer almak için gösterge kodunun tamamını çalıştırıyor yani hesaplamam gerekecek gösterge kodu n'inci kez (tüm çubukları tek tek geçmek için) ve bu göstergenin üst sıralarını birkaç zaman diliminde karşılaştırmam gerekiyor.

Ayrıca, köşeleri manuel olarak arayın

Kesinlikle doğru değil! iCustom() kullanılarak bir EA'dan çağrıldığında, göstergenin tüm çubukları yalnızca bir kez yeniden hesaplanır! Göstergenin sonraki tüm çağrıları önceden hesaplanmış sonuçlarla çalışır, yalnızca önceki çağrıdan önceki hesaplanmamış çubuklar yeniden hesaplanır. Örneğin, her yeni çubukta H1 grafiğinden M15 döneminin göstergesi çağrılır, çağrıdan aramaya göstergenin 4 15 dakikalık çubuk için yeniden hesaplanmadığı ortaya çıkar. Dolayısıyla sadece bu 4 çubuk yeniden hesaplanacaktır.

0'dan xxx'e kadar olan çubuk dizisi arasında geçiş yapsanız bile, gösterge ilk aramada yalnızca 1 kez yeniden hesaplanacaktır. Aşağıdaki tüm aramalar herhangi bir yeniden hesaplama yapmaz.

 
ijonhson :

https://www.mql5.com/en/articles/1456 , anladım, ama daha basit bir seçenek olduğunu düşündüm

Bu kötü bir örnek. O zaten 10 yaşında!!! Dil zaten daha iyiye doğru değişti.