Salve,
Citazione Originariamente Scritto da viser12000 Visualizza Messaggio
Ciao Max, e grazie per la risposta,
mi riservo di verificare ma nn credo che funzioni...perchè come lo hai scritto tu, lo script mi fa entrare ogni volta che c'è un incrocio rialzista del MACD, fermo restando l'altra condizione, ma io voglio entrare solo al primo incrocio del Macd successivo all'incrocio rialzista delle medie mobili.
è 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