Tempo fa mi sono imbattuto nella descrizione di una strategia che mi ha incuriosito. Provo a descriverla e speriamo che venga codificata. Sottostante EURUSD TF 15 minuti, in uno scenario rialzista, si entra long a una determinata condizione e SL a 50 Euro, se il gain diventa 50 E si compra un altro contratto e si alza lo SL a 0 (praticante a paraggio), se l’incremento cresce ancora es 100 si compra una altro contratto e si sposta ancora lo SL a 50 e cosi ad andare. Quando vi è un rintracciamento le posizioni si chiudono con diverse possibilità , per esempio da un minimo di – 50 , ad un pareggio, ed una vincita. La stessa cosa ma a rovescio per un mercato ribassista.
Grazie
Prova questa:
DEFPARAM CumulateOrders = True
ONCE SL = 50
ONCE TP = SL
ONCE Uscita = 0
ONCE myTP = TP
Sma200 = average[20,0](close)
Rialzo = close > Sma200
Ribasso = close < Sma200
L1 = Rsi[14](close) CROSSES OVER 50
S1 = Rsi[14](close) CROSSES UNDER 50
CondizioniLong = L1 AND Not OnMarket
CondizioniShort = S1 AND Not OnMarket
IF CondizioniLong THEN
BUY 1 Contract at Market
Prezzo = close
myTP = TP
Uscita = Prezzo - SL * PipSize
SET STOP Price Uscita
ENDIF
IF CondizioniShort THEN
SELLSHORT 1 Contract at Market
Prezzo = close
myTP = TP
Uscita = Prezzo + SL * PipSize
SET STOP Price Uscita
ENDIF
Profitto = PositionPrice * PositionPerf / PipSize / PipValue
IF Profitto >= myTP THEN
IF LongOnMarket THEN
BUY 1 Contract at Market
IF myTP = TP THEN
Uscita = Prezzo
ELSE
Uscita = Prezzo + (TP * PipSize)
ENDIF
Prezzo = close
myTP = myTP + TP
SET STOP Price Uscita
ENDIF
ELSIF ShortOnMarket THEN
SELLSHORT 1 Contract at Market
IF myTP = TP THEN
Uscita = Prezzo
Prezzo = close
ELSE
Uscita = Prezzo - (TP * PipSize)
Prezzo = close
myTP = myTP + TP
ENDIF
SET STOP Price Uscita
ENDIF
graphonprice Uscita
graphonprice Prezzo coloured("Blue")
non sono sicuro di avere interpretato bene la tua richiesta.
Grazie, sempre molto gentile, lo proverò.
Sembra che funzioni, ma non da gran risultati. Forse bisogna ottimizzare i valori della mm e del rsi. Tu lo hai provato?
Grazie
L’ho provata solo per fare i test di funzionamento. Ho notato che non da buoni risultati.
Prova ad ottimizzarla.
Che cosa devo ottimizzare?
Più che altro devi inserirci le tue condizioni, si per individuare il trend che per entrare a mercato.
Per il trend ho utilizzato una media a 20 periodi (in realtà volevo scrivere 200), per l’entrata l’RSI quando passa sopra o sotto il valore 50.
E’ solo un esempio.
Dovresti leggere il manuale per sapere cosa stai effettivamente facendo qui.
Roberto, io di sicuro non so programmare, ma rileggendo il tuo codice per cercare di capire, ho visto le righe 7 e 8 e non vedo come lavorano.
Grazie
Stabiliscono il trend a seconda che il prezzo sia sopra o sotto la media mobile semplice a 20 periodi (anche se volevo scrivere 200).
OK ma non vedo collegamenti con altre istruzioni.
Solo adesso mi sono reso conto! Scusami è stata una svista.
Vanno modificate le linee 11 e 12 così:
CondizioniLong = L1 AND Not OnMarket AND Rialzo
CondizioniShort = S1 AND Not OnMarket AND Ribasso
Roberto buongiorno,
Ho provato con la modifica e sembra andare meglio, ma fa tanti trade short di poca entità e non capisco il motivo. Comunque ho apportato delle modifiche e sembra andare meglio, è più regolare, anche se il gain è più o meno equivalente .
Ho tolto la media mobile perchè ritengo possa interferire e per gli ingressi ho usato l’indicatore “RSI e regressione lineare” di Nicolas.
Se hai tempo dagli un occhiata , lo allego.
Grazie
1) la riga 14 non serve e rischia di fare confusione, oltre a rallentare l’esecuzione. L’indicatore è già stato richiamato con CALL precedentemente e non cambierà più fino alla prossima candela;
2) quando fai la CALL utilizzi solo i primi due parametri, ma il secondo è la banda bassa e va bene per i LONG, mentre per gli SHORT devi usare la banda ALTA che è il quarto (ed ultimo) parametro. Il terzo non viene effettivamente utilizzato (è la banda mediana).
Ho fatto anche qualche piccola modifica nella logica, in modo particolare ho messo lo Stop & Reverse nella prima entrata (sia Long che Short).
Ti allego il codice modificato:
// Stop e target: Inserisci qui i tuoi stop di protezione e profit target
DEFPARAM CumulateOrders = True
ONCE SL = v
ONCE TP = SL
ONCE Uscita = 0
ONCE myTP = TP
// Condizioni per entrare su posizioni long
indicator1, indicator2, ignored, indicator4 = CALL "rsi e regressione lineare"
L1 = (indicator1 CROSSES OVER indicator2)
S1 = (indicator1 CROSSES UNDER indicator4)
CondizioniLong = L1 AND Not LongOnMarket //OnMarket
CondizioniShort = S1 AND Not ShortOnMarket //OnMarket
IF CondizioniLong THEN
BUY 1 Contract at Market
Prezzo = close
myTP = TP
Uscita = Prezzo - SL * PipSize
SET STOP Price Uscita
ENDIF
IF CondizioniShort THEN
SELLSHORT 1 Contract at Market
Prezzo = close
myTP = TP
Uscita = Prezzo + SL * PipSize
SET STOP Price Uscita
ENDIF
Profitto = PositionPrice * PositionPerf / PipSize / PipValue
IF Profitto >= (myTP * PipSize) THEN
IF LongOnMarket THEN
BUY 1 Contract at Market
IF myTP = TP THEN
Uscita = PositionPrice
Prezzo = TradePrice
ELSE
Uscita = TradePrice + (TP * PipSize)
ENDIF
Prezzo = close
myTP = myTP + TP
SET STOP Price Uscita
ENDIF
ELSIF ShortOnMarket THEN
SELLSHORT 1 Contract at Market
IF myTP = TP THEN
Uscita = PositionPrice
Prezzo = TradePrice
ELSE
Uscita = TradePrice - (TP * PipSize)
Prezzo = close
myTP = myTP + TP
ENDIF
SET STOP Price Uscita
ENDIF
graphonprice Uscita
graphonprice Prezzo coloured("Blue")
graphonprice Uscita + (myTP * PipSize) coloured("Green")
//graph L1 coloured("Green")
//graph S1 coloured("Red")
//graph myTP