Buongiorno. Volevo chiedervi se cortesemente mi aiutavate a realizzare quanto segue:
1)Mercato Forex (lo dico perché ragiono in pips e non in percentuale o valore assoluto).
2)Apertura ordine Buy o Sell che identifichi la distanza dall’ingresso basandosi sulla volatilità del momento:
Stop Loss = 1,5 * ATR(14)
Take Profit = 2 * ATR(14)
3)Calcolo della size della posizione basata su una percentuale dell’equity attuale (chiaramente all’inizio è il capitale iniziale)):
Il valore del rischio deve essere il 2% dell’equity attuale.
Vi ringrazio anticipatamente. Questo pezzo di codice mi aiuterebbe tantissimo nel backtest delle mie strategie.
GRAZIE MILLE !!!
Marzio
Ecco fatto, devi sostituire i valori iniziali secondo lo strumento ed il tuo piacimento (capitale iniziale, % rischio, % margine richiesta dal broker e taglia minima tradabile):
DEFPARAM CumulateOrders = false
//
Capitale = 10000 + StrategyProfit //Capitale utilizzato(adeguato all'andamento della strategia)
Margine = 5 //5% margine richiesto dal broker
Rischio = 2 //2% rischio max.
MinLotti = 0.5 //0.5 numero minimo di Lotti
//
ATR = AverageTrueRange[14](close)
SL = ATR * 1.5 / PipSize
TP = ATR * 2.0 / PipSize
EntryPrice = close
MyRisk = round(((Capitale * Rischio) / 100) - 0.5)
vSL = (SL * PipValue)
MioMargine = ((EntryPrice * Margine / 100) * PipValue)
Lotti1 = MyRisk / vSL
Temp = MioMargine * Lotti1
IF Temp > MyRisk THEN
LottiX = (Lotti1 * MyRisk) / Temp
ENDIF
Lotti = max(MinLotti,(Round((LottiX * 10) - 0.5)) / 10)
//
IF MieCondizioniLong AND Not OnMarket THEN
BUY Lotti CONTRACT AT MARKET
SET STOP pLOSS SL
SET TARGET pPROFIT TP
ENDIF
//
IF MieCondizioniShort AND Not OnMarket THEN
SELLSHORT Lotti CONTRACT AT MARKET
SET STOP pLOSS SL
SET TARGET pPROFIT TP
ENDIF
ovviamente saprai tu quali sono le tue condizioni per entrare long e short.
Link a sopra aggiunto come Log 288 qui …
Libreria di collegamenti snippet
Ciao Roberto e grazie per il tuo aiuto.
Ho provato ad applicarla ma non apre nessuna posizione.
Ti ho allegato il file itf , è proprio una semplice strategia basata su una media mobile. Quando il prezzo attraversa la media mobile da una parte o dall’altra apre una posizione.
Ho provato a cambiare queste due righe:
SL = ATR * 1.5 / PipSize
TP = ATR * 2.0 / PipSize
in questo modo:
SL = ATR * 1.5
TP = ATR * 2.0
E così genera dei segnali ma non sono sicuro che siano corretti a questo punto.
Grazie e buona giornata
Io ho tolto l’ottimizzazione, che usava sempre 1, ho aggiunto questa riga alla 3 e funziona perfettamente:
Periodo = 200 //o qualunque altro numero > 1
Ciao Roberto e grazie ancora.
Io utilizzo Prorealtime proprio per la bellissima funzione di ottimizzazione delle variabili.
Il problema è nella variabile MinLotti che deve essere per forza maggiore o uguale a 1 se no non funziona.
La variabile MinLotti deve essere adeguata alle richieste di IG per lo specifico strumento che usi, in alcuni casi può essere 0.2, in altri 0.5 oppure 1, va verificato con IG.