Aiuto per la codifica - pagina 362

 
triip:
Ragazzi ho bisogno di un piccolo aiuto per codificare la relazione RSI e SMA.

Come vedete nell'immagine, ci sono segnali (frecce su-giù), ma alcuni di essi sono falsi segnali. Così ho deciso di eliminare i falsi segnali con RSI14 e SMA20.

La logica dietro è molto semplice, la freccia su dovrebbe apparire se RSI14 è SOPRA SMA20. La freccia in basso dovrebbe apparire se RSI è SOTTO SMA20.

Ho segnato alcune frecce verso l'alto sbagliate, perché RSI è troppo alto, ma quella parte posso codificarla da solo.

Ho trovato molti codici di incrocio RSI<MA, ma la maggior parte di essi va lungo/corto se appare l'incrocio. Ma ho bisogno di un termine in cui RSI è SOPRA o SOTTO e poi fare qualcosa.

Per quanto ho trovato per ora, devo usare IRSI e array per questo, ma non posso mettere insieme quel codice da solo.

triip

Hai controllato quello postato qui: https: //www.mql5.com/en/forum/general

 
mladen:
triip Hai controllato quello postato qui: https: //www.mql5.com/en/forum/general

Sì, ma tutto quello che ho trovato è stato un segnale di attraversamento. Ho bisogno di condizioni se RSI è sopra/sotto SMA.

Ho capito che prima devo dichiarare cosa significa SOPRA e cosa significa SOTTO, dopo di che posso usarli nella frase IF.

 
mladen:
triip


Hai controllato quello postato qui: https: //www.mql5.com/en/forum/174476



Sì, ma tutto quello che ho trovato era un segnale di incrocio. Ho bisogno di condizioni se RSI è sopra/sotto SMA.


Ho capito che prima devo dichiarare cosa significa SOPRA e cosa significa SOTTO, dopo di che posso usarli nella frase IF.

 
triip:
Sì, ma tutto quello che ho trovato era un segnale di attraversamento. Ho bisogno di condizioni se RSI è sopra/sotto SMA. Ho capito che prima devo dichiarare cosa significa SOPRA e cosa significa SOTTO, dopo di che posso usarli nella frase IF.

triip

Non ho idea di cosa rsi stavi usando per ottenere quei segnali sulla tua foto, quindi ... questo è tutto quello che posso dire. Senza il codice non può aiutare più

 
mladen:
triip Non ho idea di cosa rsi stavi usando per ottenere quei segnali sulla tua foto, quindi ... questo è tutto quello che posso dire. Senza il codice non può aiutare di più

Mi dispiace non aver menzionato che i segnali delle frecce non provengono da RSI. è un altro codice che uso. Ma ho visto che RSI con SMA aiuta ad evitare segnali sbagliati. Ecco perché mi piace modificare il codice del segnale in modo che sia in grado di identificare anche le condizioni RSI.

Quello di cui ho bisogno è:

Arrivano i segnali a freccia, ma non sono tutti veri segnali. Quindi prima che arrivi la freccia ci deve essere un altro controllo if che controlli le condizioni RSI.

if (il mio codice attuale && RSI è sopra/sotto SMA)

{ mostra la freccia

}

Ho bisogno della parte rossa.

 
triip:
Mi dispiace non aver menzionato che i segnali delle frecce non provengono da RSI. è un altro codice che uso. Ma ho visto che RSI con SMA aiuta ad evitare segnali sbagliati. Ecco perché mi piace modificare il codice del segnale in modo che sia in grado di identificare anche le condizioni RSI.

Quello di cui ho bisogno è:

Arrivano segnali di frecce, ma non sono tutti veri segnali. Quindi, se arriva la freccia, ci deve essere un altro controllo if che controlla le condizioni RSI.

se (il mio codice attuale && RSI è sopra/sotto SMA)

{ mostra la freccia

}

Ho bisogno di quella parte rossa.

triip

Devi fare quanto segue:

1. Salvare i valori di RSI in un buffer

2. Utilizzare iMAOnArray() per calcolare la SMA dei valori RSI

3. Confrontate il valore di RSI salvato e il valore di iMAOnArray() calcolato e questa è la vostra condizione

 
mladen:
triip

Dovete fare quanto segue:

1. Salvare i valori di RSI in un buffer

2. Usare iMAOnArray() per calcolare la SMA dei valori RSI

3. Confrontate il valore di RSI salvato e il valore di iMAOnArray() calcolato e questa è la vostra condizione

Quindi 1 e 2 qualcosa del genere?

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:
Quindi 1 e 2 qualcosa del genere?

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);

}

Sì, si può fare anche così

E quando ne avete bisogno, basta confrontare RSi e MA buffer e sarete sempre in grado di vedere la loro posizione relativa

 
mladen:
Sì, puoi farlo anche in questo modo E quando ne hai bisogno, basta confrontare RSi e MA buffer e sarai sempre in grado di vedere la loro posizione relativa

Fantastico, grazie mille mladen

 
mladen:
apprendista codificatore Ecco un indicatore che ha una tale procedura di ordinamento (è l'ordinamento di un array a 2 dimensioni): spearman_rank_correlation_nmc.mq4

mladen

Qualche esempio di c/c++ che fa la stessa cosa?