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

 
Igor Makanu :

Bu, bir göstergede nasıl yapılacağına bir örnektir. Ve soru danışmanla ilgiliydi.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

MQL4, yardım ve algoritmalar ve kodlar hakkında herhangi bir acemi sorusu

Kuzeybatı , 2019.03.28 03:54

Hepinize iyi günler!

İki saat kaybetti ama hiçbir şey bulamadı.

Lütfen bana mq4'te danışmanda yetkin bir şekilde nasıl olduğunu söyle

yerleşik işlevleri kullanarak diğerinin verileri üzerinde bir gösterge oluşturun

ve hatta tüm bunların testler sırasında beklendiği gibi alt pencerede görüntülenmesi için,

örneğin RSI verilerinde MA?


Ancak, genel olarak, neredeyse doğrudur. Bir gösterge yazmak ve ondan değer almak, iMAOnArray için bir diziyi doldurmaktan daha kolaydır. Ama neden iki döngü?

 
Alexey Viktorov :

Ama neden iki döngü?

göstergenin ilk başlatılmasını veya geçmiş verilerin yüklenmesini kontrol etmemek

bazen kod daha kompakt ve koşul kontrolü kullanmak için / for için ek bir if ve ardından koşul karşılandıktan sonra döngü deyimleri kullanmaktan daha verimlidir

iMAOnArray() hesaplama kodunu RSI verileriyle dizi doldurma döngüsüne "bağlarsanız", rsiBuffer[] dizisinde hala doldurulmamış e-postaların yanlış hesaplamaları olacaktır.

örnekte tüm dizi öğeleri için iMAOnArray() hesaplaması kullandığımı (toplam = 0) not edin, bu soruyu birkaç ay önce inceledim, ancak ne yazık ki, iMAOnArray() öğesinin ve https parametresinin nasıl doğru kullanılacağına dair özel bir bilgi yok ://docs.mql4.com/ru/indicators/imaonarray

int toplam, // eleman sayısı


iMAOnArray() konusunu tartışan başlık https://www.mql5.com/ru/forum/303372/page2#comment_10617854




Alexey Viktorov :

Bu, bir göstergede nasıl yapılacağına bir örnektir. Ve soru danışmanla ilgiliydi.

sorunun bu olduğundan emin misin

kuzeybatı :

ve hatta tüm bunların testler sırasında beklendiği gibi alt pencerede görüntülenmesi için,

))))))

iMAOnArray - Технические индикаторы - Справочник MQL4
iMAOnArray - Технические индикаторы - Справочник MQL4
  • docs.mql4.com
В отличие от iMA(...), функция iMAOnArray не выбирает данные на основе названия инструмента, таймфрейма и используемой цены - ценовые данные должны быть подготовлены заранее...
 
Igor Makanu :

göstergenin ilk başlatılmasını veya geçmiş verilerin yüklenmesini kontrol etmemek

bazen kod daha kompakt ve koşul kontrolü kullanmak için / for için ek bir if ve ardından koşul karşılandıktan sonra döngü deyimleri kullanmaktan daha verimlidir


sorunun bu olduğuna emin misin

))))))

)))) Bu, dikkatsizliğime ilk düştüğüm zaman değil. Göstergeyi okumadım bile.

Ama ek hakkında eğer

 if (prev_calculated== 0 ) limit=rates_total- 1 ; else limit=rates_total-prev_calculated+ 1 ;

bu şu şekilde yazılabilir

limit = prev_calculated == 0 ? rates_total- 1 : rates_total-prev_calculated+ 1 ;
Bu tür kayıtları kullanmıyor musunuz?
 

Igor Makanu :

...Bu soruyu birkaç ay önce inceledim ama ne yazık ki, iMAOnArray() işlevinin ve parametresinin https://docs.mql4.com/en/indicators/imaonarray doğru şekilde nasıl kullanılacağına dair özel bir bilgi yok

int toplam, // eleman sayısı

Basit bir ortalamadan daha fazlasına ihtiyacınız olduğunda öğelerin sayısı önemlidir. Hangi MA türlerinin hesaplamalarında önceki değerlerini kullandığını önceden hatırlamıyorum. Bu durumda, eleman sayısı sonucu etkileyecektir. Ancak genel olarak, mql5'te bu yarım dürtme ile çözülür ve artık ilgilenmiyorum.

 
Alexey Viktorov :
Bu tür kayıtları kullanmıyor musunuz?

Kullanıyorum, ancak genellikle kodlarımı "iki geçişte" yazarım - sıfırdan yazarken, if () koşullarıyla "fonetik analiz" (aslında yüksek sesle okumak için) için anlaşılabilir yapılar kullanırım, hepsini telaffuz etmek daha kolay)))

o zaman evet biraz “kodu birleştirip” benzer yapılar yapabilirim ama genelde bunu hazır örnekler (kodlar) kitaplığımda kullanırım

Not: bir yerde C#'daki programların performansını iyileştirmeyle ilgili bilgilerle karşılaştım , foreach() operatörünü ve bu operatörü kullanmaktan kaçınmaya çalışmak için öneriler olduğunu kesin olarak biliyorum. : - if () operatörü daha üretken gibi, ancak bunun kritik olmadığını düşünüyorum - uygun olarak kullanacağım


Alexey Viktorov :

Basit bir ortalamadan daha fazlasına ihtiyacınız olduğunda öğelerin sayısı önemlidir. Hazırlıksız, hangi MA yardımcılarının hesaplamalarında önceki değerlerini kullandığını hatırlamıyorum. Bu durumda, eleman sayısı sonucu etkileyecektir. Ancak genel olarak, mql5'te bu yarım dürtme ile çözülür ve artık ilgilenmiyorum.

daha derin bir sorun var, bu forumda ve İngilizce olarak bir arama yaptım. forumda tartışmalar ve kullanım örnekleri vardı, iMAOnArray() hesaplamaları total = 0 veya total !=0 parametresinden farklıdır - Igor ile tartışırken (yukarıdaki bağlantı), kendim için iMAOnArray()'i yalnızca toplam = ile kullanmaya karar verdim = 0 parametre - eski tartışmalarda aynı çözüm vardı

 
Igor Makanu :

daha derin bir sorun var, bu forumda ve İngilizce olarak bir arama yaptım. forumda tartışmalar ve kullanım örnekleri vardı, iMAOnArray() hesaplamaları total = 0 veya total !=0 parametresinden farklıdır - Igor ile tartışırken (yukarıdaki bağlantı), kendim için iMAOnArray()'i yalnızca toplam = ile kullanmaya karar verdim = 0 parametre - eski tartışmalarda aynı çözüm vardı

Bu doğru. Dizinin tüm öğelerini almazsanız ve EMA'yı bile hatasız almaya çalışırsanız, zor olacaktır.

Üstel Hareketli Ortalama (EMA)

Üstel olarak yumuşatılmış bir hareketli ortalama, önceki hareketli ortalamaya mevcut kapanış fiyatının belirli bir yüzdesinin eklenmesiyle belirlenir. Üstel hareketli ortalamalar kullanıldığında, en son kapanış fiyatları daha fazla ağırlığa sahiptir. Bir p yüzdesi üstel hareketli ortalama şöyle olacaktır:

EMA = (KAPAT (i) * P) + (EMA (i - 1) * (100 - P))

nerede:

KAPAT (i) — cari dönemin kapanış fiyatı;
EMA (i - 1) — önceki dönemin hareketli ortalamasının değeri;
P, fiyat değerinin kullanım payıdır.

Bu nedenle, 30 öğelik bir diziden 30. periyodun EMA'sını sayarsanız, EMA yerine basit bir MA elde edersiniz.

 
Alexey Viktorov :

Bu doğru. Dizinin tüm öğelerini almazsanız ve EMA'yı bile hatasız almaya çalışırsanız, zor olacaktır.

Bu nedenle, 30 öğelik bir diziden 30. periyodun EMA'sını sayarsanız, EMA yerine basit bir MA elde edersiniz.

iMAOnArray() öğesini kontrol ettim - sonuçlar tahmin edilemez, bazen 2 * MA dönemi kullanabilirsiniz, bazen daha fazlasına ihtiyacınız vardır, toplam = 0 kullanırsanız, yine de hesaplama için bir kez kullanabilirsiniz ve çok sık kullanırsanız, o zaman terminal kilitleniyor olacak

peki, nadiren iMAOnArray() kullanırım

 
Maxim Kuznetsov :

if (response == 0) {

   Print("Что-то пошло не так");

  // потом уже добавите диагностику из WinAPI

   return false;

}

ve normal dönüşten önce sonucu da yazdırın

Print(" всё хорошо, результат:" toStr);

return toStr;

ve tüm kodu bir zamanlayıcıda, örneğin dakikada bir çalıştırın. Sizi kesinlikle yasaklamayacak ve kontrol edebilmeniz için her zaman farklı, ancak öngörülebilir bir zaman veren bir kaynak üzerinde eğitim alın.

----
telepatik olarak - eğer sorun gerçekten böyleyse,
ya başlatma işlemi yanlış yapıldı (WinSOCK'un InternetOpenW için başlatılması gerekip gerekmediğini hatırlamıyorum)
veya bazı kaynaklar serbest bırakılmaz.

her şeyi ekledi! Yazdır'da hiçbir şey görüntülenmiyor!!

 

Bir değişkeni grafikte göstermeden veri penceresinde nasıl gösterebilirim?

Nedense belgelerde bulamıyorum.

 
psyman :

Bir değişkeni grafikte göstermeden veri penceresinde nasıl gösterebilirim?

Nedense belgelerde bulamıyorum.

Ekran rengini clrNONE olarak ayarlayın.