Buonasera, vorrei se possibile un aiuto con questo codice.
L’intento sarebbe quello di trasformare lo stop espresso in % nel suo valore equivalente in punti per poterlo inserire in una formula di money managment. Il problema è che non funzione nella versione short. Se lo si lascia solo per le posizioni long funziona e i valori sono corretti, mentre per la parte short il calcolo non restituisce alcun valore.
Vi allego un codice di esempio che ho provato sul Fib a 15 min
DEFPARAM CUMULATEORDERS=FALSE
MM10=Average[10](close)
MM100=Average[100](close)
C1=(MM10 CROSSES OVER MM100)
C2=(MM10 CROSSES UNDER MM100)
// Condizioni per entrare su posizioni long
IF NOT LongOnMarket AND C1 THEN
BUY SIZE CONTRACTS AT MARKET
VALSTOP=(TRADEPRICE/100)*1
//Money Management
Capital = 10000
equity = Capital + StrategyProfit
Risk = 0.05
maxrisk = (equity*Risk)
Size = (maxrisk/(VALSTOP*POINTVALUE))
SET STOP pLOSS VALSTOP
ENDIF
// Condizioni per uscire da posizioni long
If LongOnMarket AND C2 THEN
SELL AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
IF NOT ShortOnMarket AND C2 THEN
SELLSHORT SIZE CONTRACTS AT MARKET
VALSTOP=(TRADEPRICE/100)*1
//Money Management
Capital = 10000
equity = Capital + StrategyProfit
Risk = 0.05
maxrisk = (equity*Risk)
Size = (maxrisk/(VALSTOP*POINTVALUE))
SET STOP pLOSS VALSTOP
ENDIF
// Condizioni per uscire da posizioni short
IF ShortOnMarket AND C1 THEN
EXITSHORT AT MARKET
ENDIF
GRAPH VALSTOP
Su quale strumento e timeframe l’hai provato?
Ciao, su ita40 cash di IG. Time frame 15 min
Tra la riga 11 e la 12 e tra la 30 e la 31 inserisci questa riga per fare in modo che SIZE sia almeno 1 (altrimenti è zero, arrotondato, come da foto):
Size = min(1,Size)
Alle righe 13 e 32, perché alla fine aggiungi *1, a cosa serve moltiplicare per uno?
Alle righe 13 e 32 c i sono due cose dubbie:
- ProOrder ha bisogno di una barra per potere aggiornare TRADEPRICE (e tutto quel che concerne un’operazione), per cui il prezzo che ti restituisce subito dopo l’entrata a mercato è il prezzo dell’operazione precedente; se vuoi il prezzo corrente, essendo un’entrata a mercato, usa CLOSE al posto di Tradeprice, non sarà preciso al 100% perché quando entra a mercato (almeno in reale) c’è un minimo di slippage o gap e una differenza di qualche microsecondo che può influire sul reale prezzo di entrata
- dividi il prezzo di cui sopra per 100, a che proposito, per avere uno SL che sia l’1% del prezzo?
Metti a posto queste cose e poi vedi come va.
Grazie per la risposta, il *1 è il valore di stop in percentuale che voglio ottenere ed è una variabile.
Ho provato ieri sera inserendo CLOSE[0] come hai suggerito tu adesso e pur non essendo precisissimo funziona.
Grazie