double v1[1000]; double v2[1000]; double v3[1000];<------ leave out the '1000' initialization for indicator buffers, as they don't require
Pekala, bunu ilk başta yaptım ama sonra yapmak istediğim tamponun değerlerini yazdıramadım.
Peki bekle, şunu yeniden ifade edeyim:
Arabellekteki öğelerin sayısını bildirmezsem, gösterge v1[i]=Yüksek[i] ile olduğu gibi çalışacaktır.
Ama Yazdır (v1[i]); çıktı almayacak çünkü söyleyebileceğim kadarıyla, eleman sayısı bildirilmediyse bildirilmeyen dizi değerlerini yazdırmanın bir yolu yok, bu nedenle her zaman 0 yazdıracak
Bu nedenle, genel olarak ilan etmezsem, gösterge çalışır, ancak if(daha hızlı> daha yavaş) yine de göstergeyi ortadan kaldırır ve değerleri de yazdıramıyorum.
Bunu bildirir ve ayrıca v1[i]=High[i] ile yeniden başlatırsam, yazdırabilirim, ancak && daha hızlı > daha yavaş gibi eklemeler göstergeyi yeniden kaldıracaktır .
Nedenini tam olarak anlamıyorum.
teşekkürler
Kodunuzu aldım, arabellek bildirimlerinden değerleri çıkardım ve gayet iyi çalışıyor. . .
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[4]= 1.5913 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v1[8]= 1.5962 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[11]= 1.5948 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v1[15]= 1.5992 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v1[18]= 1.5996 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[20]= 1.5919 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[27]= 1.5954 ise
Kodunuzu aldım, arabellek bildirimlerinden değerleri çıkardım ve gayet iyi çalışıyor. . .
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[4]= 1.5913 <----Yüksek ise
------> şu anda Fraktallar tutarsız Yüksek önceki Düşük <---------
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[11]= 1.5948 eğer<----Yüksek
------> şu anda Fraktallar tutarsız Yüksek önceki Düşük <---------
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v1[15]= 1.5992 ise<----Düşük
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v1[18]= 1.5996 eğer<----Yüksek
------> şu anda değişken Fraktallar tutarlı <---------
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[20]= 1.5919 <----Düşük ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[27]= 1.5954 eğer <----Yüksek
İlginç, sonuç için teşekkürler Ajan86V2. Fraktallar gerçekten de merak uyandıranlardan biridir, ancak ticaret yapmak için karlı bir yol olabilir.
Kodunuzu aldım, arabellek bildirimlerinden değerleri çıkardım ve gayet iyi çalışıyor. . .
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[4]= 1.5913 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v1[8]= 1.5962 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[11]= 1.5948 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v1[15]= 1.5992 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v1[18]= 1.5996 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[20]= 1.5919 ise
2011.09.27 13:04:03 Agent86V2 GBPUSD,H1: v2[27]= 1.5954 ise
Üzgünüm, anlamıyorum. Yaptığımı düşündüm, ama hala bir şeyleri kaçırıyor gibiyim.
int start() { double test[]; test[ 39 ] = 45.6 ; Print ( "test[39]= " ,test[ 39 ] ); return ( 0 ); }Bana yukarıdaki gibi beyan etmemi söyledin:
Ve bu konuyu alıntıladın:
"Bir diziyi bildirirken, veri türü, dizi adı ve her boyutun eleman sayısı belirtilmelidir:"
Yani bir yandan, önce double test[40] bildirmeden diziyi bu komut dosyasındaki gibi yazdıramıyorum; talimat verdiğiniz gibi, ancak şimdi bildirim olmadan da yazdırabiliyorum.Öyle görünüyor ki, bildirimden bağımsız olarak arabellekteki değerleri yazdırabilirim.
Ancak, if(hızlı > daha yavaş) veya && daha hızlı > daha yavaş gibi normalde istenen sonucu üretecek ek koşullar ekleyemiyorum
EMA olabilir, neden çalışmadığını anlamak istiyorum.
Gösterge yüksek değerlerinin kaybolmasına neden olur ve v1 yazdırma çıktısı yazdırmayı durdurur. Koşulla uyumlu olmasını ve çıktıyı yazdırmasını bekliyordum.
Bunun için de aynı sonuçlarla ek kod blokları eklemeye çalıştım.
teşekkürler
Bunu da yazdım. . .
Gösterge arabellekleri özel Dizilerdir. . . Dizileri ve Tamponları karıştırmayın, benzer ancak farklıdırlar.
Orijinal kodda v1[] ve v2[] arabelleklerdir, en son kodunuzda bunlar Dizilerdir, bir Dizi bildirdiğinizde ona bir boyut vermeniz gerekir, örneğin v1[50], v1[0]'dan 50 öğeye sahiptir. v1'e[49]. Arabellek, ihtiyaç duyulan daha fazla öğe olduğunda otomatik olarak Yeniden Boyutlandırılır ve değerler, Tamponda otomatik olarak değişir. Şu anda oluşan çubuk 0'ı düşünün, bu çubuk o çubukla ilişkili bir Gösterge değerini tamamladığında indeks 1'e kaydırmak zorundadır. . . bu, Buffers ile otomatik olarak yapılır. . Arrays ile benzer bir şey istiyorsanız yapabilirsiniz, ancak bunu kendiniz kodlamanız gerekir.
Ancak, if(hızlı > daha yavaş) veya && daha hızlı > daha yavaş gibi normalde istenen sonucu üretecek ek koşullar ekleyemiyorum
EMA olabilir, neden çalışmadığını anlamak istiyorum.
Gösterge yüksek değerlerinin kaybolmasına neden olur ve v1 yazdırma çıktısı yazdırmayı durdurur. Koşulla uyumlu olmasını ve çıktıyı yazdırmasını bekliyordum.
Bunun için de aynı sonuçlarla ek kod blokları eklemeye çalıştım.
teşekkürler
Bunu da yazdım. . .
Gösterge arabellekleri özel Dizilerdir. . . Dizileri ve Tamponları karıştırmayın, benzer ancak farklıdırlar.
Orijinal kodda v1[] ve v2[] arabelleklerdir, en son kodunuzda bunlar Dizilerdir, bir Dizi bildirdiğinizde ona bir boyut vermeniz gerekir, örneğin v1[50], v1[0]'dan 50 öğeye sahiptir. v1'e[49]. Arabellek, ihtiyaç duyulan daha fazla öğe olduğunda otomatik olarak Yeniden Boyutlandırılır ve değerler, Tamponda otomatik olarak değişir. Şu anda oluşan çubuk 0'ı düşünün, bu çubuk o çubukla ilişkili bir Gösterge değerini tamamladığında indeks 1'e kaydırmak zorundadır. . . bu, Buffers ile otomatik olarak yapılır. . Arrays ile benzer bir şey istiyorsanız yapabilirsiniz, ancak bunu kendiniz kodlamanız gerekir.
İlk gösterge döngüsünde yazdıramadığım için yalnızca ikincil bir döngü oluşturdum, ancak şimdi yazdırıyor
Her neyse, bunu tekrar etmeyeceğim, sanırım anladım.
Bu nedenle, çalışmayacak kod burada gösterilen bazı örneklerdir:
//+------------------------------------------------------------------+ //| //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_color2 Blue #property indicator_color3 White //---- buffers double v1[]; double v2[]; double v3[]; double val1; double val2; double val3; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { //---- IndicatorBuffers ( 3 ); SetIndexArrow ( 0 , 111 ); SetIndexStyle ( 0 , DRAW_ARROW , STYLE_DOT , 1 , Blue ); SetIndexBuffer ( 0 , v1); SetIndexLabel ( 0 , "Resistance" ); SetIndexArrow ( 1 , 111 ); SetIndexStyle ( 1 , DRAW_ARROW , STYLE_DOT , 1 , Red ); SetIndexBuffer ( 1 , v2); SetIndexLabel ( 1 , "Support" ); SetIndexArrow ( 2 , 111 ); SetIndexStyle ( 2 , DRAW_ARROW , STYLE_DOT , 1 , White ); SetIndexBuffer ( 2 , v3); SetIndexLabel ( 2 , "High A" ); //---- return ( 0 ); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double faster = iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN, 1 ), //MODE_MAIN slower = iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_SIGNAL, 1 ); //MODE_SIGNAL int i= Bars ; //---- for (i= Bars ; i>= 0 ; i--) { val1= iFractals ( NULL , 0 , MODE_UPPER,i); if (val1 > 0 && faster > slower) // I think I need to add some more comparisons for the Low[i] also // the comparison works but shows indicator when faster < slower too. // adding additional code blocks instead of above and including the part below and inserting this instead // if(faster>slower) // { // v1[i]=High[i]; // } // causes indicator to disappear { v1[i]=High[i]; Print ( "v1[" , i, "]= " , v1[i], " if" ); } else { //v1[i]=v1[i+1]; //Print ("v1[", i, "]= ", v1[i], " else"); } val2= iFractals ( NULL , 0 , MODE_LOWER,i); if (val2 > 0 ) { v2[i]=Low[i]; Print ( "v2[" , i, "]= " , v2[i], " if" ); } else { //v2[i]=v2[i+1]; //Print ("v2[", i, "]= ", v2[i], " else"); } } //---- return ( 0 ); } //+------------------------------------------------------------------+
teşekkürler
Yani çalışmayacak kod burada gösterilen bazı örneklerdir:
teşekkürler
Tamam, sana sorununun ne olduğunu söyleyebilirim veya sana bazı ipuçları verebilirim. . . . önce ipuçları, söylememi istiyorsan söylemen yeterli. .
Döngünün içinde, for (i= Bars ; i>= 0 ; i--) . . daha hızlı ve daha yavaş için değerler nelerdir?
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Herkese selam,
Forumlarda gurulardan büyük yardım alarak iFractals içeren bir kod tabanlı göstergeden diziler hakkında bazı genel konular öğreniyordum.
her neyse
Göstergeye ekleme işlevi eklemek için koşullu işleçler veya mantıksal işlemler ekleyemedim
Bu fikirle oynamak için if(hızlı > daha yavaş) kodunun çeşitli alanlarına eklemeyi denedim. Normalde bu fikirler bir EA'da işe yarar ancak bir göstergede çalışmaz.
IE if(v1 > 0 && daha hızlı > daha yavaş)
ancak bu göstergenin kaybolmasına neden olur.
İstenen göstergeyi üretmesi gerektiğini düşündüğüm diğer birçok kombinasyon if(diğer koşullar) vb.
Hepsi hiçbir print deyimi çıktısı üretmez.
Burada hangi noktayı kaçırıyorum.
Tavsiye lütfen
teşekkürler