Kodlama yardımı - sayfa 362

 
triip:
Arkadaşlar, RSI ve SMA ilişkisini kodlamak için biraz yardıma ihtiyacım var.

Resimde gördüğünüz gibi sinyaller var(yukarı-aşağı oklar), ancak bazıları yanlış sinyaller. Bu yüzden üzerinde RSI14 ve SMA20 ile yanlış sinyalleri ortadan kaldırmaya karar verdim.

Arkasındaki mantık çok kolay, RSI14 SMA20'nin ÜZERİNDE ise yukarı ok görünmelidir. RSI, SMA20'nin ALTINDA ise aşağı ok görünmelidir.

Bazı yukarı okları yanlış işaretledim çünkü RSI çok yüksek ama o kısmı kendim kodlayabilirim.

Çok sayıda RSI<MA geçiş kodu buldum, ancak çapraz görünürse çoğu uzun/kısa gidiyor. Ancak RSI'nin YUKARI veya AŞAĞI olduğu bir terime ihtiyacım var ve sonra bir şeyler yapıyorum.

Şimdilik bulduğum kadarıyla, bunun için IRSI ve dizi kullanmam gerekiyor ama bu kodu kendim bir araya getiremiyorum.

gezi

Burada yayınlananı kontrol ettiniz mi: https://www.mql5.com/en/forum/general

 
mladen:
triip Burada yayınlananı kontrol ettiniz mi : https://www.mql5.com/en/forum/general

Evet, ama bulduğum tek şey geçiş sinyaliydi. RSI, SMA'nın üstünde/altındaysa koşullara ihtiyacım var.

Önce YUKARI ve AŞAĞI ne demek olduğunu açıklamam gerektiğini anlıyorum, bundan sonra bunları IF cümlesinde kullanabilirim.

 
mladen:
gezi


Burada yayınlananı kontrol ettiniz mi: https://www.mql5.com/en/forum/174476



Evet, ama bulduğum tek şey geçiş sinyaliydi. RSI, SMA'nın üstünde/altındaysa koşullara ihtiyacım var.


Önce YUKARI ve AŞAĞI ne demek olduğunu açıklamam gerektiğini anlıyorum, bundan sonra bunları IF cümlesinde kullanabilirim.

 
triip:
Evet, ama bulduğum tek şey geçiş sinyaliydi. RSI, SMA'nın üstünde/altındaysa koşullara ihtiyacım var. Önce YUKARI ve AŞAĞI ne demek olduğunu açıklamam gerektiğini anlıyorum, bundan sonra bunları IF cümlesinde kullanabilirim.

gezi

Resminize bu sinyalleri almak için hangi rsi'yi kullandığınıza dair hiçbir fikrim yok, yani ... tüm söyleyebileceğim bu. Kod olmadan daha fazla yardımcı olamam

 
mladen:
triip Resminizde bu sinyalleri almak için hangi rsi'yi kullandığınıza dair hiçbir fikrim yok, yani ... tüm söyleyebileceğim bu. Kod olmadan daha fazla yardımcı olamam

Üzgünüm, ok sinyallerinin RSI'dan gelmediğinden bahsetmedim. kullandığım başka bir kod. Ancak SMA'lı RSI'nin yanlış sinyalleri önlemeye yardımcı olacağını gördüm. Bu nedenle, RSI koşullarını da tanımlayabilmesi için sinyal kodunu düzenlemeyi seviyorum.

İhtiyacım olan şey:

Ok sinyalleri gelir, ancak hepsi gerçek sinyaller değildir. Yani ok gelmeden önce, RSI koşullarını neyin kontrol ettiğini kontrol etmek için başka bir tane olması gerekir.

if (geçerli kodum && RSI, SMA'nın üstünde/altında )

{ oku göster

}

O kırmızı parçaya ihtiyacım var.

 
triip:
Üzgünüm, ok sinyallerinin RSI'dan gelmediğinden bahsetmedim. kullandığım başka bir kod. Ancak SMA'lı RSI'nin yanlış sinyalleri önlemeye yardımcı olacağını gördüm. Bu nedenle, RSI koşullarını da tanımlayabilmesi için sinyal kodunu düzenlemeyi seviyorum.

İhtiyacım olan şey:

Ok sinyalleri gelir, ancak hepsi gerçek sinyaller değildir. Bu nedenle, eğer ok gelirse, RSI koşullarını neyin kontrol ettiğini kontrol etmek için başka bir tane olması gerekir.

if (geçerli kodum && RSI, SMA'nın üstünde/altında )

{ oku göster

}

O kırmızı parçaya ihtiyacım var.

gezi

Aşağıdakileri yapmanız gerekir:

1. RSI değerlerini bir arabelleğe kaydedin

2. Bu RSI değerlerinin SMA'sını hesaplamak için iMAOnArray() kullanın

3. Kaydedilen RSI değeri ile iMAOnArray() hesaplanan değerin değerini karşılaştırın ve bu sizin durumunuz

 
mladen:
gezi

Aşağıdakileri yapmanız gerekir:

1. RSI değerlerini bir arabelleğe kaydedin

2. Bu RSI değerlerinin SMA'sını hesaplamak için iMAOnArray() kullanın

3. Kaydedilen RSI değeri ile iMAOnArray() hesaplanan değerin değerini karşılaştırın ve bu sizin durumunuz

Yani 1 ve 2 böyle bir şey mi?

1.

#property indicator_buffers 2

extern int rsi_p = 14;

extern int MA_Period=20;

extern int MA_Shift=0;

extern int MA_Method=0;

extern int NumberOfBarsToCalculate = 10000;

double Buffer0[];

double Buffer1[];

double Ma[];

double RSi[];

int init()

{

IndicatorBuffers(4);

SetIndexBuffer(0,Buffer0);

SetIndexBuffer(1,Buffer1);

SetIndexBuffer(2,Ma);

SetIndexBuffer(3,RSi);

return(0);

}

[/CODE]

2.

[CODE]int start() {

int shift;

double rsi = 0;

for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){

RSi[shift] = iRSI(NULL,0,rsi_p,PRICE_CLOSE,shift);

}

for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){

Ma[shift] = iMAOnArray(RSi,0,MA_Period,MA_Shift,MA_Method,shift);

Buffer0[shift] = RSi[shift];

Buffer1[shift] = Ma[shift];

}

return(0);

}

 
triip:
Yani 1 ve 2 böyle bir şey mi?

1.

#property indicator_buffers 2

extern int rsi_p = 14;

extern int MA_Period=20;

extern int MA_Shift=0;

extern int MA_Method=0;

extern int NumberOfBarsToCalculate = 10000;

double Buffer0[];

double Buffer1[];

double Ma[];

double RSi[];

int init()

{

IndicatorBuffers(4);

SetIndexBuffer(0,Buffer0);

SetIndexBuffer(1,Buffer1);

SetIndexBuffer(2,Ma);

SetIndexBuffer(3,RSi);

return(0);

}

[/CODE]

2.

[CODE]int start() {

int shift;

double rsi = 0;

for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){

RSi[shift] = iRSI(NULL,0,rsi_p,PRICE_CLOSE,shift);

}

for(shift=NumberOfBarsToCalculate-1;shift>=0;shift--){

Ma[shift] = iMAOnArray(RSi,0,MA_Period,MA_Shift,MA_Method,shift);

Buffer0[shift] = RSi[shift];

Buffer1[shift] = Ma[shift];

}

return(0);

}

evet o şekilde de yapabilirsiniz

Ve ihtiyacınız olduğunda, sadece RSi ve MA arabelleğini karşılaştırın ve her zaman göreli konumlarını görebileceksiniz.

 
mladen:
Evet, bu şekilde de yapabilirsiniz Ve ihtiyacınız olduğunda, sadece RSi ve MA tampon belleğini karşılaştırın ve her zaman onların göreceli konumlarını görebileceksiniz.

Harika, çok teşekkürler mladen

 
mladen:
çırak kodlayıcı İşte böyle bir sıralama prosedürüne sahip bir gösterge (2 boyutlu diziyi sıralıyor): spearman_rank_correlation_nmc.mq4

mladen

Aynı şeyi yapan herhangi bir c/c++ örneği var mı?