credo che ora sia la volta giusta,
non pensavo fosse così complicato



Citazione Originariamente Scritto da Francario Massimiliano Visualizza Messaggio
Salve,


è un pò più complicato di quanto avevo inizialmente inteso. In ogni caso, bisogna sfruttare il fatto che le condizioni valutate come false hanno un valore numerico pari a 0, mentre se sono valutate vere hanno un valore numerico pari a 1.
Con questa premessa, gli script dovrebbero essere i seguenti:

Buy Script:

INPUTS: @price(CLOSE), @longCycle(26), @shortCycle(13), @signalPeriods(9), @periods1(10), @periods2(12) @matype(SIMPLE)
 
 
SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
SET C = MovingAverage(@price, @periods1, @matype)
SET D = MovingAverage(@price, @periods2, @matype)
 
SET combinazione = CROSSOVER(A, B) AND (C > D)
SET condSMA = CROSSOVER(C, D)
SET periodo = LASTIF(condSMA)
SET somma = SUM(combinazione, periodo)
SET condizione = (somma = 1)

combinazione AND condizione

Sell Script:

SET A = MACD(@longCycle, @shortCycle, @signalPeriods, @matype)
SET B = MACDSignal(@longCycle, @shortCycle, @signalPeriods, @matype)
SET C = MovingAverage(@price, @periods1, @matype)
SET D = MovingAverage(@price, @periods2, @matype)
 
SET combinazione = CROSSUNDER(A, B) AND (C < D)
SET condSMA = CROSSUNDER(C, D)
SET periodo = LASTIF(condSMA)
SET somma = SUM(combinazione, periodo)
SET condizione = (somma = 1)

combinazione AND condizione

L'interpretazione della parte di codice relativa al calcolo delle condizioni è un pò complicata.
La variabile "combinazione" contiene la variabile che prima veniva usata come condizione di entrata, che genera più segnali a partire da un singolo incrocio delle medie.
In "condSMA" viene memorizzato il crossover delle medie, ottenendo quindi un vettore di valori 0 ed 1. In "periodo" calcoliamo da quanto tempo (barre) è avvenuto l'ultimo incrocio delle medie mobili.
La variabile "somma" viene calcolata come somma del numero di segnali presenti in "combinazione" a partire da "periodo" barre fà. In questo modo, nel primo segnale dopo l'incrocio delle medie, la variabile "somma" avrà il valore 1, mentre nel secondo segnale avrà il valore 2 e così via.
In "condizione" ci assicuriamo di utilizzare esclusivamente il primo segnale a partire dall'ultimo incrocio delle medie, e pertanto la condizione finale dello script è rappresentata da un AND tra "condizione" e "combinazione".


Max Francario