Risposta

impostazione del periodo di validità delle condizioni IF

7 risposte

huangwh88

Customer, bbp_participant, community, 113 replies.

Visita il profilo

7 anni fa #116256

Salve colleghi commercianti, 

 

Mi chiedevo se sia possibile programmare quanto segue nella procedura guidata:

 

Supponiamo di avere un sistema di crossover MACD e RSI con 2 condizioni di ingresso.

 

La condizione 1 prevede che il MACD superi lo 0. Supponendo che rimanga sopra lo 0, c'è una finestra di 10 periodi in cui l'RSI deve superare il 50. Se ciò accade, il trade viene eseguito. Se ciò accade, l'operazione viene eseguita. In caso contrario, la condizione MACD viene reimpostata e si attende il prossimo caso di incrocio del MACD sopra lo 0. 

 

Nei casi in cui sia il MACD che l'RSI si incrociano contemporaneamente, l'istruzione IF può essere:

 

MACD incrociato su 0 E RSI incrociato su 50

 

Ma se il cross RSI avviene 5 periodi dopo, l'istruzione IF può essere:

 

MACD > 0 E RSI incrociato oltre 50

 

Come posso fare in modo che l'EA riconosca che si è verificato il crossover MACD in modo da utilizzare MACD > 0 per i periodi successivi?

 

In secondo luogo, come posso aggiungere la finestra di validità di 10 periodi?

 

Spero che questo abbia senso. Grazie per l'assistenza.

0

chris.marshall

Abbonato, bbp_partecipante, comunità, 4 risposte.

Visita il profilo

7 anni fa #141290

Sono solo pochi indicatori nel mio viaggio con questo prodotto, ma ho ottenuto la seguente soluzione per lavorare con un problema simile che avevo in un EA. Quando ho provato a usarlo come indicatore, però, non ha funzionato, non so ancora perché.

Si possono impostare 2 variabili MACDP (per contare le candele dopo l'incrocio sopra) e MACDN (per contare le candele dopo l'incrocio sotto) o qualsiasi altra cosa che abbia senso per voi. Questo si fa nella scheda Strategia, nella casella inferiore "Parametri della strategia". Rendeteli di tipo intero.

Quindi impostare 2 nuove regole che calcolano sulla chiusura della candela
1) SE MACD > 0 Allora MACDP = MACDP + 1 E MACDN = 0
2) SE MACD < 0 Allora MACDN = MACDN + 1 E MACDP = 0
Assicuratevi che queste 2 regole siano prima del test RSI in ordine di esecuzione

Allora il test RSI sarebbe
1) SE RSI incrocia sopra 50 e MACDP > 0 e MACDP < 11 Allora condizione di trading
2) Se l'RSI incrocia sotto 50 e il MACDN -11 allora la condizione di trading

0

huangwh88

Customer, bbp_participant, community, 113 replies.

Visita il profilo

7 anni fa #141294

Sono solo pochi indicatori nel mio viaggio con questo prodotto, ma ho ottenuto la seguente soluzione per lavorare con un problema simile che avevo in un EA. Quando ho provato a usarlo come indicatore, però, non ha funzionato, non so ancora perché.

Si possono impostare 2 variabili MACDP (per contare le candele dopo l'incrocio sopra) e MACDN (per contare le candele dopo l'incrocio sotto) o qualsiasi altra cosa che abbia senso per voi. Questo si fa nella scheda Strategia, nella casella inferiore "Parametri della strategia". Rendeteli di tipo intero.

Quindi impostare 2 nuove regole che calcolano sulla chiusura della candela
1) SE MACD > 0 Allora MACDP = MACDP + 1 E MACDN = 0
2) SE MACD < 0 Allora MACDN = MACDN + 1 E MACDP = 0
Assicuratevi che queste 2 regole siano prima del test RSI in ordine di esecuzione

Allora il test RSI sarebbe
1) SE RSI incrocia sopra 50 e MACDP > 0 e MACDP < 11 Allora condizione di trading
2) Se l'RSI incrocia sotto 50 e il MACDN -11 allora la condizione di trading

Ciao Chris, 

 

Apprezzo molto l'intuizione. Capisco quello che dici, ma come fa l'EA a riconoscere che dovrebbe aggiungere a MACDP e MACDN solo dopo che si è verificato un cross over/under nei 10 periodi precedenti? 

 

Ad esempio, se attacco l'EA quando il MACD è sopra lo 0 e il crossover si è verificato 20 periodi fa, il MACDP sarebbe 1 e la condizione sarebbe matura per l'ingresso, anche se in realtà è scaduta.

 

Se potessimo utilizzare un operatore WHILE insieme a un flag vero/falso, sarebbe molto più semplice, ma con il solo IF non sono ancora sicuro.

0

chris.marshall

Abbonato, bbp_partecipante, comunità, 4 risposte.

Visita il profilo

7 anni fa #141297

Per come è scritto sopra, il conteggio dovrebbe partire dalla prima candela dopo l'incrocio in entrambe le direzioni.

Se ci fossero 20 candele positive, il MACDP arriverebbe a 20, ma il vostro test RSI sarebbe valido solo quando il MACDP è compreso tra 1 e 10.

 

Hai ragione, ma questo non tiene conto del periodo che intercorre tra il caricamento dell'EA e il primo cross. Un modo semplice per aggirare questo problema sarebbe quello di contare le candele dall'ultimo cross sopra o sotto e impostare il valore iniziale di MACDP/MACDN di conseguenza quando si carica l'EA.

 

Sono sicuro che ci sono modi più eleganti per aggirare il problema, ma sono ancora alle prime armi con il programma.

0

tomas262

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

7 anni fa #141311

Salve,

 

il modo più semplice per ottenere questo risultato è quello di impostare un contatore. Quando la condizione MACD è valida, il contatore viene attivato per fare counter = counter + 1 (inizialmente è impostato a 0).

A questo punto si conta ogni nuova barra utilizzando questo contatore. Nello stesso momento in cui il contatore è attivo, osservate la condizione RSI, ma solo finché il contatore non è inferiore a 10. Una volta che il contatore è > 10, lo resettate a 0 e attendete un altro segnale MACD. Una volta che il contatore è > 10, lo si resetta a 0 e si attende un altro segnale MACD.

 

Fatemi sapere se avete bisogno di un progetto di esempio per questo

0

huangwh88

Customer, bbp_participant, community, 113 replies.

Visita il profilo

7 anni fa #141325

Per come è scritto sopra, il conteggio dovrebbe partire dalla prima candela dopo l'incrocio in entrambe le direzioni.

Se ci fossero 20 candele positive, il MACDP arriverebbe a 20, ma il vostro test RSI sarebbe valido solo quando il MACDP è compreso tra 1 e 10.

 

Hai ragione, ma questo non tiene conto del periodo che intercorre tra il caricamento dell'EA e il primo cross. Un modo semplice per aggirare questo problema sarebbe quello di contare le candele dall'ultimo cross sopra o sotto e impostare il valore iniziale di MACDP/MACDN di conseguenza quando si carica l'EA.

 

Sono sicuro che ci sono modi più eleganti per aggirare il problema, ma sono ancora alle prime armi con il programma.

Sì, ci ho pensato e in effetti c'è una soluzione semplice, simile a quella che hai indicato. Possiamo impostare il contatore in modo che si avvii solo dopo un cross. Potrebbe esserci un po' di "tempo perso" se un cross si verificasse poco prima che io attacchi l'EA, ma non è un grosso problema. 

 

Grazie per il vostro aiuto!

0

huangwh88

Customer, bbp_participant, community, 113 replies.

Visita il profilo

7 anni fa #141326

Salve,

 

il modo più semplice per ottenere questo risultato è quello di impostare un contatore. Quando la condizione MACD è valida, il contatore viene attivato per fare counter = counter + 1 (inizialmente è impostato a 0).

A questo punto si conta ogni nuova barra utilizzando questo contatore. Nello stesso momento in cui il contatore è attivo, osservate la condizione RSI, ma solo finché il contatore non è inferiore a 10. Una volta che il contatore è > 10, lo resettate a 0 e attendete un altro segnale MACD. Una volta che il contatore è > 10, lo si resetta a 0 e si attende un altro segnale MACD.

 

Fatemi sapere se avete bisogno di un progetto di esempio per questo

Ciao Tomas, 

 

per favore inviatemi il progetto di esempio. Grazie!

0

tomas262

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

7 anni fa #141338

Salve,

 

trovate l'esempio allegato. L'EA attende che l'RSI attraversi il livello 20. Poi attende 10 barre per l'incrocio del MACD sul livello 0. Se non arriva alcun segnale dal MACD, tutto ricomincia da capo.

0

Stai visualizzando 7 risposte - da 1 a 7 (di 7 totali)