Chiusura parziale posizione
Forums › ProRealTime forum Italiano › Supporto ProOrder › Chiusura parziale posizione
- This topic has 43 replies, 2 voices, and was last updated 3 years ago by robertogozzi.
-
-
07/31/2021 at 9:41 AM #174429
Il TS base (long) SI in quanto non ha split.
Il primo codice (long) NO: chiude troppo presto il secondo contratto.
Il secondo codice (long) NO: spesso è corretto, ma a volte chiude la posizione in 3 parti e non in due (ma temporalmente, sia che splitta correttamente in due parti, che erroneamente in 3 parti, rispetta sempre il tempo del TS base per la chiusura completa della posizione).
07/31/2021 at 9:43 AM #17443007/31/2021 at 9:54 AM #17443507/31/2021 at 10:55 AM #174438Dimmi quale codice vuoi che controlli e in che data ed ora (e strumento e TF) è iniziato un trade errato.
Non posso eseguire tutti i codici e analizzare tutte le operazioni, ma solo quelle errate che mi segnali. E’ inutile che controlli quelle corrette.
07/31/2021 at 11:10 AM #174440Partiamo da:
2 codice (solo long, riportato sopra nell’elenco per ultimo) –
data 29 giugno 2021 (ultima foto sopra nel secondo esempio) ora apertura posizione: 7:45 -TF 15 minuti – Cdf Dax
Tipo di error: ci sono 3 chiusure in split
07/31/2021 at 5:10 PM #174456Io ho usato quete righe per il debugging:
123456graphonprice (PositionPrice * (1 + (PerCentGain * Increments)))[1] AS "Uscita Parziale"graphonprice positionprice coloured(0,0,255,255)graph abs(countofposition)graph (PerCentGain * Increments)[1] AS "PerCentGain * Increments"graph ExitQuantitygraph CloseQuantity07/31/2021 at 9:32 PM #17447007/31/2021 at 9:59 PM #174471Ecco il codice corretto, da aggiungere in fondo al proprio Ts per splittare la posizione:
once partialclose = 1 //N.B. nello snippet questa variabile è posta a 0, ma cosi non si ottiene nessuno split della posizione!
If partialclose then
ONCE PerCent = 0.5 //0.1 = 10% positions to close
ONCE PerCentGain = 0.005 //0.005 = 0.5% gain
ONCE MinLotSize = 0.5 //IG minimum
ExitQuantity = abs(CountOfPosition) * PerCent
LeftQty = max(MinLotSize,abs(CountOfPosition) – ExitQuantity)
CloseQuantity = abs(CountOfPosition) – LeftQtyIF Not OnMarket THEN
Flag = 1
ENDIFIF partialclose AND LongOnMarket and close >= (PositionPrice * (1 + PerCentGain)) AND Flag THEN
SELL CloseQuantity Contracts AT Market
Flag = 0
endifIF partialclose AND ShortOnMarket and close <= (PositionPrice * (1 – PerCentGain)) AND Flag THEN
exitshort CloseQuantity Contracts AT Market
Flag = 0
endif
endif
//—————————————————–
GRAPHONPRICE (PositionPrice * (1 + PerCentGain)) coloured(0,255,0,255) AS “ProfittoL”
GRAPHONPRICE (PositionPrice * (1 – PerCentGain)) coloured(255,0,0,255) AS “ProfittoS”
graph abs(countofposition)08/01/2021 at 2:16 AM #174473Mancava la prima metà della risposta al mio post, non so cosa ho fatto, ma è sparita.
Ad ogni modo:
- ha aperto una posizione
- ne ha chiusa metà (1)
- ne ha chiusa un’altra metà (0.5)
- ha chiuso tutto all’orario DEFPARAM
Mi pare tutto corretto.
08/03/2021 at 8:42 PM #17463608/03/2021 at 9:59 PM #174638Come al solito, puoi scrivere:
a) da 0.001
b) a 0.010
c) passo 0.001 (10 combinazioni)
oppure
c) passo 0.0001 (100 combinazioni)
08/04/2021 at 8:23 AM #174652Ok funziona, mi sembrava che lo zero iniziale non andava bene (come per l’ottimizzazione del tempo in cui va tolto).
Un ultima cosa: la formula (la riporto per semplicità) si potrebbe modificare in modo tale da utilizzarla NON per chiudere metà posizione in gain, ma per chiudere metà posizione in perdita, es. dello -0.005 (e l’altra metà secondo lo stop loss % del TS )?
In teoria non dovrebbe essere difficile, ma ancora non sono pratico con queste operazioni di split. Grazie
12345678910111213141516171819202122232425262728once partialclose = 1If partialclose thenONCE PerCent = 0.5 //0.1 = 10% positions to closeONCE PerCentGain = 0.005 //0.005 = 0.5% gainONCE MinLotSize = 0.5 //IG minimumExitQuantity = abs(CountOfPosition) * PerCentLeftQty = max(MinLotSize,abs(CountOfPosition) - ExitQuantity)CloseQuantity = abs(CountOfPosition) - LeftQtyIF Not OnMarket THENFlag = 1ENDIFIF partialclose AND LongOnMarket and close >= (PositionPrice * (1 + PerCentGain)) AND Flag THENSELL CloseQuantity Contracts AT MarketFlag = 0endifIF partialclose AND ShortOnMarket and close <= (PositionPrice * (1 - PerCentGain)) AND Flag THENexitshort CloseQuantity Contracts AT MarketFlag = 0endifendif//-----------------------------------------------------//GRAPHONPRICE (PositionPrice * (1 + PerCentGain)) coloured(0,255,0,255) AS "ProfittoL"//GRAPHONPRICE (PositionPrice * (1 - PerCentGain)) coloured(255,0,0,255) AS "ProfittoS"//graph abs(countofposition)raph cLong coloured(0,128,0)08/04/2021 at 11:03 AM #174660Perché nelle ore è numericamente superfluo a sinistra, ma non quello accanto al punto decimale/virgola.
0.01 resta così mentre 01.32 diventa 1.32.
Si, basta cambiare le righe 15 e 20 così:
12IF partialclose AND LongOnMarket and close <= (PositionPrice * (1 - PerCentGain)) AND Flag THEN //riga 15IF partialclose AND ShortOnMarket and close >= (PositionPrice * (1 + PerCentGain)) AND Flag THEN //riga 201 user thanked author for this post.
09/01/2021 at 1:46 PM #176596Ciao Roberto, riesci a convertire (se non è troppo complicato) la riga 5 del codice sopra riportato (riferimento 174652) da percentuale a punti?
La riga è questa:
ONCE PerCentGain = 0.005 //0.005 = 0.5% gain (vorrei, ad esempio, chiudere metà posizione dopo un guadagno di 100 punti e NON del 0.5%)
Grazie
09/01/2021 at 1:56 PM #176597Puoi farlo direttamente:
1ONCE PipsGain = 100 //100 pipsoppure, se prefrisci indicare una percentuale e poi convertirla in punti:
12ONCE PerCentGain = 0.005 //0.005 = 0.5%ONCE PipsGain = PositionPrice * PerCentGain / PipSize //Pips1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on