Ciao Roberto,
un Augurio per un Buon Inizio Anno e prosequio, speriamo proprio in questo 2021 ……
Ti invio questa richiesta per la codifica della strategia che spiego qui sotto ( dovrebbe perfezionare e massimizzare la prima con MACD + MMS50 che mi avevi fatto, dimmi anche cosa ne pensi …. )
NOME: STRATEGIA MULTIDAY 2 MACD + MM50( solo trend rialzista NO Short ) – N° 02 Grafici uno sopra l’altro
1° GRAFICO: TIME FRAME SETTIMANALE + VOLUME + INDICATORE MACD 12-26-9 + MEDIA MOBILE SEMPLICE 50 Periodi
2° GRAFICO: TIME FRAME MENSILE + VOLUME + INDICATORE MACD 12-26-9
I due grafici devono essere collegati quindi quando metto il cursore su un punto del grafico settimanale mi appare la posizione anche su quello mensile.
SEGNALE ENTRATA ( devono verificarsi 2 condizioni ) : Il segnale MACD deve incrociare al rialzo lo zero su entrambe i Time Frame, settimanale e mensile ( mettere la possibilità di settarlo eventualmente anche sopra lo zero ) + Il prezzo deve sempre stare sopra la MMS 50 periodi del Time Frame SETTIMANALE
SEGNALE USCITA: Quando il MACD incrocia al ribasso lo zero solo sul grafico a Time Frame SETTIMANALE.
STOP LOSS: Settabile percentualmente ( % ) – non so se vale la pena di metterne uno progressivo.
Questa strategia dovrebbe migliorare la prima che mi avevi confezionato ( MACD + MMS50 ) togliendo dei falsi segnali ed evitare di stare sul mercato in fasi più laterali o di basso Tred rialzista , tutto pero da verificare con Backtesting ……
N. 01 allegato – Segnale ACQUISTO + Segnale FALSO ACQUISTO.
Ti ringrazio anticipatamente, cordiali saluti.
Alberto Fiorina
Per le immagini sei pregato di allegare solo file JPEG o PNG. Per i testi file TXT e per testi formattati e documenti usare PDF (non DOCx).
Grazie 🙂
Eccola:
TIMEFRAME(Weekly,UpdateOnClose)
MyMACDw = Average[12,1](close) - Average[26,1](close)
MySignalLINEw = Average[9,1](MyMACDw)
MyHistow = MyMACDw - MySignalLinew
Sma50w = Average[50,0](close)
//
TIMEFRAME(Daily,UpdateOnClose)
MyMACDd = Average[12,1](close) - Average[26,1](close)
MySignalLINEd = Average[9,1](MyMACDd)
MyHistod = MyMACDd - MySignalLined
MyVol = Volume
//
TIMEFRAME(default)
//c1 = MyMACDw CROSSES OVER 0
c1 = MyMACDw > 0
c2 = MyMACDd CROSSES OVER 0
c3 = close > Sma50w
c4 = MyMACDw CROSSES UNDER 0
IF c1 AND c2 AND c3 AND Not OnMarket THEN
BUY 1 Contract at Market
//SET STOP %LOSS 1.0 //1.0% di stop loss
SET STOP %TRAILING 0.5 //0.5% di trailing stop
SET TARGET %PROFIT 2.0 //2.0% di take profit
ENDIF
IF c4 AND OnMarket THEN
SELL at Market
ENDIF
per il MACD settimanale ho messo > 0, non l’incrocio, perché non si verificano mai insieme con il giornaliero.
Ho messo anche un Take Profit ed un Trailing Stop, ma se vuoi puoi toglierli. Gli STOP non possono esserci entrambi, o STOP LOSS o STOP TRAILING, se ci sono entrambi viene considerato l’ultimo che viene trovato sequenzialmente.
Ciao Roberto,
grazie mille, sei il Batman dei programmatori ….
Un caro saluto.
Scusa Roberto,
ma se vedi la mia richiesta il time frames erano SETTIMANALI ( primario ) – MENSILE ( secondario ), a me sembra che tu abbia messo il secondario GIORNALIERO, forse è per quello che non ti si incrociava mai con il SETTIMANALE…..
Mi puoi rimandare il tutto corretto.
GRAZIE.
Ok, questa è la versione corretta:
TIMEFRAME(Weekly,UpdateOnClose)
MyMACDw = Average[12,1](close) - Average[26,1](close)
MySignalLINEw = Average[9,1](MyMACDw)
//MyHistow = MyMACDw - MySignalLinew
Sma50w = Average[50,0](close)
//
TIMEFRAME(Monthly,UpdateOnClose)
MyMACDm = Average[12,1](close) - Average[26,1](close)
MySignalLINEm = Average[9,1](MyMACDm)
//MyHistom = MyMACDm - MySignalLINEm
MyVol = Volume
//
TIMEFRAME(default)
c1 = MyMACDw CROSSES OVER 0
//c1 = MyMACDw > 0
c2 = MyMACDm CROSSES OVER 0
//c2 = MyMACDm > 0
c3 = close > Sma50w
c4 = MyMACDw CROSSES UNDER 0
IF c1 AND c2 AND c3 AND Not OnMarket THEN
BUY 1 Contract at Market
//SET STOP %LOSS 1.0 //1.0% di stop loss
SET STOP %TRAILING 0.5 //0.5% di trailing stop
SET TARGET %PROFIT 2.0 //2.0% di take profit
ENDIF
IF c4 AND OnMarket THEN
SELL at Market
ENDIF
resta il problema degli incroci, che è quasi impossibile che si verifichino contemporaneamente, principalmente perché hanno tempi diversi di chiusura della barra. Una soluzione potrebbe essere quella di modificare la linea 7 con:
TIMEFRAME(Monthly)//,UpdateOnClose)
in modo che sul TF mensile non si attenda la chiusura della barra mensile.
L’altra soluzione è invertire i commenti tra le righe 14-15 e tra le righe 16-17 per non verificare gli incroci, ma solamente quando è maggiore.
Grazie Roberto, buona giornata.