Gösterge Sorusu - sayfa 4

 
SDC :

Ya da belki böyle bir şey?

gerçi gerçekten IndicatorCounted() kullanmalısınız, çünkü bunu böyle yaparsanız, göstergeniz tüm bu nesneleri bir kerede çizmek ve yeni çubuklar oluştukça yenilerini eklemek yerine her yeni tıklamada yeniden çiziyor.

Bu ve harici booller hakkındaki diğer yazınız bana başka fikirler de veriyor, teşekkürler

Odak noktamın daha geniş olması gerekiyor, ancak NooB olduğum için kodun bir kısmına odaklanmaya ve dış kısımlar gibi diğerlerini ihmal etme eğilimindeyim.
Ben sadece şimdi dizilere giriyorum ve arabellekleri anlamakta büyük bir mücadele yaşadım, ancak son zamanlarda bunu aşmaya başladım.

Teşekkürler, bu bana şimdi de bir sürü yeni fikir verecek.
 
SDC :


Ne yaptığınızı düşünmelisiniz, bir gösterge oluşturduğunuzda, kodunuzu grafikteki her bir çubuğa uyguluyorsunuz, bu, bu tarihsel çubukların her biri için olduğu gibi macd gösterge değerini almanız gerektiği anlamına geliyor.

orijinal kodunuzda yaptığınız:

son parametre 1, grafiğin 1. Çubuğunda olduğu gibi macd'nin değeridir, mevcut çubuktan önceki çubuk, çubuk 0 olarak endekslenir

Açıkçası, tüm geçmiş grafiğin üzerinde koşullu operatörünüzde macd'nin bu tek değerini kullanmak istemezsiniz.

Macd'yi her çubukla aynı çubuk dizinine endekslemeniz gerekir, bu nedenle örneğin 500 numaralı çubukta buna ihtiyacınız vardır.

bu son parametre, göstergenizin algoritmalarını uyguladığı çubuk numarasına uyacak şekilde değişmelidir.

Bu nedenle, döngü içinde buna ihtiyacınız vardır, böylece son parametre için döngü döngüsü yineleyicisini kullanabilirsiniz, böylece geçmiş grafiğin her çubuğu için olduğu gibi macd değerinizi elde edersiniz.

umarım bu işleri biraz netleştirmeye yardımcı olur.

Doğru, bunu hallettim.

Ancak, if(val1 > 0 && daha hızlı > daha yavaş) gibi kodları eklerken, döngü dışında daha hızlı ve daha yavaş bildirildiğinde bu işe yaramaz.

AHHHHH Öyle görüyorum çünkü vardiya (i) o zaman buna OOOOPPPS LOL döngüsü içinde ihtiyacım var
 
Agent86 :
Neden for(int i = Bars-1 ? <----------------------- Barlar diziler gibi indekslenir, ilk bar=0, 1 yerine Yani son Bar Bars-1'dir;

Ve neden bu daha iyi o zaman for(int i = Bars ?? <----- yukarıya bakın.

Lütfen öğüt verin, teşekkürler


Ayrıca:

Bunun yalnızca göstergeler/özel göstergeler için değil, herkes için geçerli olduğunu varsayıyorum? <--- ben ve WHRoeder : tartıştıklarımız oldukça genel konular. Belirli bir şey yok. Biz sadece birbirimizle değişken bildirimi ve atamaları, vb., wrt döngüleri hakkında konuşuyorduk.

 
diostar :

Ayrıca:


for(int i=Bars; i>=0; i--) kullandığım kod

for(int i=Bars-1; i>=0: i--) önerilir

Bars = mevcut grafikteki bar sayısı diye düşündüm. en azından sözlüğe göre.

Bu yüzden --i 1002 gibi en yüksek çubuk sayısından geriye doğru sayıyordum ve --i'yi aslında -1'e kadar sayıyordum.
Çünkü while i>=0 bu nedenle yanlış hale gelmeden önce aslında -1'e kadar geri saymalıdır. 0 veya daha büyük olsaydı, doğru olurdu ve -1'e ulaşana kadar son bir kez döngüye girerdi.

En azından ben böyle çalıştığını düşündüm? Yanlış mıyım ?

Eğer i=0 ve ++i ise ve sayarsa, o zaman son çubuğa kadar sayacağını düşündüm.

Ama bu durumda Bars-1 dediğiniz şey aslında tüm yakın Barlar değil, aslında henüz kapanmamış olan Bar[0]'ı falan mı içeriyor?

Bars-1 ve Bars arasındaki farkı anladığımdan pek emin değilim. Sadece Barlara atıfta bulunulduğunda sayılmayan mevcut bar 0 ile ilgisi var mı?

Lütfen öğüt verin, teşekkürler


 

evet, çünkü 0 çubuğunuz var, bu nedenle Çubuklar size 0 çubuğu dahil olmak üzere grafikteki çubukların sayısını verir

yani küçük bir grafik düşünün, grafikte sadece 2 çubuk var, çubuk[0] ve çubuk[1]

Barlar size sayımı verir, böylece Barlar == 2

göstergenizi grafikteki son çubuktan başlayacak şekilde uygulamak istiyorsanız

i=Bars'ı deneyebilirsiniz.

Bildiğimiz gibi, Bars = 2 ama bar[2] olarak indekslenmiş bar yok, son bar Bar[1]

yani yapmanız gereken i=Bars-1

 
Agent86 :
for(int i=Bars; i>=0; i--) kullandığım koddur <--- örneğin, örneğin. Kapat[i], bu, kapanış[Çubuklar]'dan kapanış[0]'a kadar sayılır. i=Bars olduğunda, close[i] var mı?

for(int i=Bars-1; i>=0: i--) önerilir <--- örneğin, örneğin. Kapat[i], bu, kapanış[Çubuk-1]'den kapanış[0]'a kadar sayılır. i=Bars -1 olduğunda, close[i] var mı?

Bars = mevcut grafikteki bar sayısı diye düşündüm. en azından sözlüğe göre. <---tamam

Yani --i 1002 gibi en yüksek çubuk sayısından aşağı doğru sayıyordum ve --i aslında -1'e kadar sayıyordum. Close [1002], close[-1] var mı?
Çünkü while i>=0 bu nedenle yanlış hale gelmeden önce aslında -1'e kadar geri saymalıdır. 0 veya daha büyük olsaydı, doğru olurdu ve kapanışta [-1] -1 <---- olana kadar son bir kez döngüye girer, 0 döndürür. Yanlış değil

En azından ben böyle çalıştığını düşündüm? Yanlış mıyım ? <--- aşağıya bakın ref.

Eğer i=0 ve ++i ise ve sayarsa, o zaman son çubuğa kadar sayacağını düşündüm. <--- İtaatkar bir şekilde yapacak, bunu yap.

Ama bu durumda Bars-1 dediğiniz şey aslında tüm yakın Barlar değil, aslında henüz kapanmamış olan Bar[0]'ı falan mı içeriyor? <---bu durumda, kapanış fiyatı mevcut Teklif adımı fiyatını döndürür

Bars-1 ve Bars arasındaki farkı anladığımdan pek emin değilim. Sadece Barlara atıfta bulunulduğunda sayılmayan mevcut bar 0 ile ilgisi var mı? <--- aşağıya bakın ref

Lütfen tavsiyede bulunun Teşekkürler hoş geldiniz





çift Kapat[]
Geçerli grafiğin her çubuğu için yakın fiyatları içeren dizi dizisi.

Seri dizi elemanları ters sırada, yani sonuncudan birinciye doğru indekslenir. Dizideki son çubuk olan geçerli çubuk 0 olarak indekslenir. En eski çubuk, grafikteki ilk çubuk, Çubuklar -1 olarak indekslenir.
 
Anlıyorum, nedense arabelleğin bu konuyu biraz farklı ele aldığını düşünüyordum çünkü teknik olarak dizideki öğelerin sayısını bile bildirmedim, bu yüzden arabelleğin bunu zaten çözdüğünü düşündüm.

Her neyse, bunu anlıyorum ve mantıklı, teşekkürler

 
Agent86 :
Anlıyorum, nedense arabelleğin bu konuyu biraz farklı ele aldığını düşünüyordum çünkü teknik olarak dizideki öğelerin sayısını bile bildirmedim, bu yüzden arabelleğin bunu zaten çözdüğünü düşündüm.

Her neyse, bunu anlıyorum ve mantıklı, teşekkürler



Ne??? Aslında tüm bunları gösterge arabelleklerine atıfta bulunduğunuzu bilmiyordum. Şimdi yaptığım için, şu adresten alınan referansları okuyun: https://www.mql5.com/en/articles/1500

(1) gösterge arabellekleri ve kullanıcı dizileri - ikisi de aynı ve FARKLI. & Gösterge arabelleklerinin kullanıcı tarafından boyutlandırılmamasının nedeni, bunun önceden çalışılmış olmasıyla hiçbir ilgisi yoktur. aşağıya bakın:

 double ExtMapBuffer1 [] ;

Bu olağan bir dizidir. Ancak boyutluluk gösterilmez ve başlatma yapılmaz. Bu dizi daha sonra bir veri arabelleği olarak kurulacaktır.

(2) çıktıdaki ve girdideki gösterge arabellekleri (yukarıdaki veri arabelleği) aynı görünebilir, ancak farklı olabilir.

 SetIndexBuffer ( 0 , ExtMapBuffer1 ) ;

Bu işlev, bir diziyi bir arabellek numarasına "bağlar" . Yani belirtilen numaraya sahip tamponun veri depolamak için belirtilen diziyi kullanacağını gösterir. Böylece, bu dizinin öğelerini değiştirerek arabelleğin değerini değiştireceksiniz. Aslında bir dizi bir veri arabelleğidir. İlk argüman , bağlanması gereken dizinin adıdır .


Görüyorsun, hepsi işe yarıyor. Şimdi kodun ne yaptığını görelim:

 for ( int i = 0 ; i < Bars ; i ++ )

Veri arabelleğinin tüm öğelerini gözden geçirmek için döngüyü kullanırız. Tamponun her elemanına belirli bir bar karşılık geldiği için, sıfır bardan (mevcut olan son) başlayarak ve Bars değişkeninden art arda bir eksik olan ilk kullanılabilir ile biten döngüyü kullanırız (çünkü sıfır).

 {
   ExtMapBuffer1 [ i ] = MathRand () % 1001 ;
}

Her yinelemede bir sayaç bir artırılır ve her bir arabellek elemanına (belirli bir çubuğa karşılık gelir) 0 ile 1000 arasında rastgele bir sayı atayarak aynı anda son kullanılabilir çubuktan ilkine geçeriz. belirli bir arabellek öğesinin belirli bir çubuğa nasıl karşılık geldiğini anlamak sizin için zor, döngüyü aşağıdaki şekilde değiştirmeyi deneyin ve sonucu terminalde görün:

 for ( int i = 0 ; i < Bars ; i ++ )
{
   ExtMapBuffer1 [ i ] = i ;
}
 
diostar :

çift Kapat[]
Geçerli grafiğin her çubuğu için yakın fiyatları içeren dizi dizisi.

Seri dizi elemanları ters sırada, yani sonuncudan birinciye doğru indekslenir. Dizideki son çubuk olan geçerli çubuk 0 olarak indekslenir. En eski çubuk, grafikteki ilk çubuk, Çubuklar -1 olarak indekslenir.

Tamam sanırım şimdi gördüm teşekkürler
 
Herkese teşekkürler

Göstergeler hakkında daha fazla şey öğrendikçe, kullandığım tasarımın bir EA'da kullanım için çok yararlı olmayacağı, ancak yalnızca görsel ve/veya manuel kullanım için iyi olacağı görülüyor.

Sayaç geri saydığından 1-- bu yöntemi kullanmanın, ticarette kullanım için herhangi bir dizi nesnesine başvurmak iyi olmayacağı anlaşılıyor, belki de sadece belirli bir kaymaya[i] atıfta bulunmadıkça, bu durumda çözmem gerekecek Yalnızca belirli Barlarda bulunan bir ticaret sinyali için kullanmak istediğim dizi öğelerine özel olarak nasıl atıfta bulunacağım.

Onu olduğu gibi kullanmak, tıpkı gösterge gibi tüm grafikte ticaretin gerçekleşmesine neden olabilir.

Şimdi sanırım bu değerlere/zamanlara/çubuklara vb. atıfta bulunmak için herhangi bir göstergedeki çeşitli dizi öğelerine nasıl atıfta bulunacağımı öğreneceğim.

Yardım için herkese teşekkürler ve bu bana iCustom göstergelerini nasıl oluşturabileceğim ve bunları bir EA'da nasıl faydalı hale getirebileceğim hakkında düşünmem için çok şey verecek.