Chiusura parziale posizione
Forums › ProRealTime forum Italiano › Supporto ProOrder › Chiusura parziale posizione
- This topic has 43 replies, 2 voices, and was last updated 4 years ago by robertogozzi. 
- 
	
		
- 
		
			
				
09/01/2021 at 1:57 PM #17659809/02/2021 at 7:58 AM #176633Un dubbio: se sostituisco “PerCentGain = 0.005” con la formula che hai riportato: ONCE PipsGain = 100 poi come devo modificare le seguenti righe? (perchè non basta sostituire 0.005 con il 100 del PipsGain) IF partialclose AND LongOnMarket and close >= (PositionPrice * (1 + PerCentGain)) AND Flag THENIF partialclose AND ShortOnMarket and close <= (PositionPrice * (1 – PerCentGain)) AND Flag THEN09/02/2021 at 10:49 AM #176651Così: 12IF partialclose AND LongOnMarket and close >= PipsGain*Pipsize AND Flag THENIF partialclose AND ShortOnMarket and close <= PipsGain*Pipsize) AND Flag THEN09/02/2021 at 11:39 AM #176655Ho provato il codice ma non funziona. Chiude sempre metà posizione dopo la prima barra. Prova da te se va bene, ecco il codice: once partialcloseGain = 1 If partialcloseGain then 
 ONCE PerCent = 0.5
 ONCE PipsGain = 100 //PUNTI
 ONCE MinLotSize = 0.5
 ExitQuantity = abs(CountOfPosition) * PerCent
 LeftQty = max(MinLotSize,abs(CountOfPosition) – ExitQuantity)
 CloseQuantity = abs(CountOfPosition) – LeftQtyIF Not OnMarket THEN 
 Flag = 1
 ENDIFIF partialcloseGain AND LongOnMarket and close >= pipsGain*pointSize AND Flag THEN 
 SELL CloseQuantity Contracts AT Market
 Flag = 0
 endifIF partialcloseGain AND ShortOnMarket and close <= pipsGain*pointSize AND Flag THEN 
 exitshort CloseQuantity Contracts AT Market
 Flag = 0
 endif
 endif09/02/2021 at 11:54 AM #176658Posta un codice funzionante. 09/02/2021 at 12:38 PM #176663Ok. Stò riscrivendo e ripulendo profondamente un codice del forum inglese di proOrder per il Nasdaq 15minuti (così mi dici anche cosa nè pensi). Appena completato lo posto lì per dare il mio contributo. Ancora mancano delle aggiunte da provare se migliorano il TS. Oltre queste volevo provare anche lo split della posizione (long-short separati e poi entrambi). E’ sempre una prova. I codici in % li ho entrambi e funzionano, però siccome il TS in questione usa i punti, ecco il motivo per cui ti stò chiedendo queste cose, ossia la traduzione del codice in punti. Questo è il TS con lo split solo long 1% (ossia chiude metà posizione al target di 1%.) Prova ad usare 100 punti con le formule scambiate sopra (rif. 176651). Non funziona insert PRt quindi uso il copia ed incolla. //TS KD Mean Reverting v2-TrP (TrP = trailingProfit) – Nasdaq 15 minuti cfd 1 contratto 
 DEFPARAM CUMULATEORDERS = FALSE
 PositionSize=1
 //——————————————————
 avgHull=average[150,7] //150-7
 cVol = Volume
 volBars=15 //15
 lowBars=10 //10
 c1 = close>avgHull
 c2 = cVol < cVol[volBars]
 If close > lowest[lowBars](low) and c1 and c2 and openDayOfWeek <> 5 then
 Buy PositionSize CONTRACTS AT MARKET
 ENDIF
 //———————————————————
 SET STOP pLOSS 130 //SL 100
 SET TARGET pPROFIT 180 //TP 175
 //———————————————————
 pointToReachLong=35*pointSize // 30
 pointToKeepLong=10*pointSize // 12
 If not onMarket then
 newSL=0
 endif
 If longOnMarket then
 If newSL=0 and high-tradePrice(1)>pointToReachLong then
 newSL=tradePrice(1)+ pointToKeepLong
 endif
 If newSL>0 and close-newSL>pointToReachLong then
 newSL = newSL+pointToKeepLong
 endif
 endif
 If newSL>0 then
 sell at newSL STOP
 endif
 //————————————————————
 myrsiM5=rsi[14](close)
 if myrsiM5<30 and longonmarket and close>positionprice then
 sell at market
 endif
 if myrsiM5>70 and shortonmarket and close<positionprice then
 exitshort at market
 endif
 //—————————————————————-
 once partialcloseGain = 1
 If partialcloseGain then
 ONCE PerCent = 0.5 //close 1/2 size
 ONCE PerCentGain = 0.01 // = 1%
 ONCE MinLotSize = 0.5
 ExitQuantity = abs(CountOfPosition) * PerCent
 LeftQty = max(MinLotSize,abs(CountOfPosition) – ExitQuantity)
 CloseQuantity = abs(CountOfPosition) – LeftQtyIF Not OnMarket THEN 
 Flag = 1
 ENDIF
 IF partialcloseGain AND LongOnMarket and close >= (PositionPrice * (1 + PerCentGain)) AND Flag THEN
 SELL CloseQuantity Contracts AT Market
 Flag = 0
 endif
 IF partialcloseGain AND ShortOnMarket and close <= (PositionPrice * (1 – PerCentGain)) AND Flag THEN
 exitshort CloseQuantity Contracts AT Market
 Flag = 0
 endif
 endif
 //————————————————————————————————————————————-09/02/2021 at 2:45 PM #176667Avevo fatto un paio di errori logici. Sostituisci tutte le righe, dalla 42 fino alla fine, con queste: 12345678910111213141516171819202122232425262728293031once partialcloseGain = 1If partialcloseGain thenONCE PerCent = 0.5 //close 1/2 sizeONCE PerCentGain = 0.001 //0.1% = 1%ONCE MinLotSize = 0.5PipsGain = 100//PositionPrice * PerCentGain / PipSizeExitQuantity = abs(CountOfPosition) * PerCentLeftQty = max(MinLotSize,abs(CountOfPosition) - ExitQuantity)CloseQuantity = max(0,abs(CountOfPosition) - LeftQty)TempGain = PositionPerf * PositionPrice / PipSizeIF Not OnMarket THENFlag = 1ENDIFIF partialcloseGain AND LongOnMarket and TempGain >= PipsGain*pipsize AND Flag THENSELL CloseQuantity Contracts AT MarketFlag = 0endifIF partialcloseGain AND ShortOnMarket and TempGain >= PipsGain*pipsize AND Flag THENexitshort CloseQuantity Contracts AT MarketFlag = 0endifendif//————————————————————————————————————————————-//graphonprice PositionPrice coloured(0,0,255,255)//graphonprice PositionPrice + (PositionPerf * PositionPrice) coloured(255,0,0,255)//graphonprice PositionPrice * (1 + PerCentGain) coloured(0,255,0,255)//graph abs(CountOfPosition) coloured(255,0,0,255)//graph LeftQty//Graph CloseQuantity//graph PositionPrice * PositionPerf / PipSize//graph PipsGain09/02/2021 at 2:50 PM #176668Qui faccio riferimento al numero di riga della parte che ho postata (il resto non l’ho modificato). Alla riga 6 ho messo 100. Se lo lasci così va bene anche ONCEdavanti, ma se togli 100 e lasci la riga dopo i commenti ONCE non va messo, perché il calcolo va fatto ad ogni barra. Quindi conviene non usare ONCE su questa riga. Alla riga 10 ho inserito il calcolo, in Pips, del profitto temporaneo (corrente), che serve per fare il confronto alle righe 14 e 18, righe che ho modificato per usare i Pips. 09/02/2021 at 3:11 PM #176670OK ora funziona bene! Puoi fare anche la parte per lo split della perdita in punti? (dovrebbe essere una piccola modifica). E’ il corrispettivo in punti del secondo (B) di questi codici in % (verificati) (vd sotto) che posto come sintesi per gli utenti del forum. CODICE PER SPLITTARE UNA POSIZIONE //A splittare una posizione long once partialcloseGain = 1 If partialcloseGain then ONCE PerCent = 0.5 //close 1/2 size ONCE PerCentGain = 0,01 //0,01 = 1% – 0.005 = 0.5% ONCE MinLotSize = 0.5 ExitQuantity = abs(CountOfPosition) * PerCent LeftQty = max(MinLotSize,abs(CountOfPosition) – ExitQuantity) CloseQuantity = abs(CountOfPosition) – LeftQty IF Not OnMarket THEN Flag = 1 ENDIF IF partialcloseGain AND LongOnMarket and close >= (PositionPrice * (1 + PerCentGain)) AND Flag THEN SELL CloseQuantity Contracts AT Market Flag = 0 endif IF partialcloseGain AND ShortOnMarket and close <= (PositionPrice * (1 – PerCentGain)) AND Flag THEN exitshort CloseQuantity Contracts AT Market Flag = 0 endif endif //———————————————————————————————- //B splittare una posizione short once partialcloseLoss = 1 If partialcloseLoss then ONCE PerCent = 0.5 //close ½ size ONCE PerCentLoss = 0,01 //0,01 = 1% – 0.005 = 0.5% ONCE MinLotSize = 0.5 ExitQuantity = abs(CountOfPosition) * PerCent LeftQty = max(MinLotSize,abs(CountOfPosition) – ExitQuantity) CloseQuantity = abs(CountOfPosition) – LeftQty IF Not OnMarket THEN Flag = 1 ENDIF IF partialcloseLoss AND LongOnMarket and close <= (PositionPrice * (1 – PerCentLoss)) AND Flag THEN SELL CloseQuantity Contracts AT Market Flag = 0 endif IF partialcloseLoss AND ShortOnMarket and close >= (PositionPrice * (1 + PerCentLoss)) AND Flag THEN exitshort CloseQuantity Contracts AT Market Flag = 0 endif endif //————————————————————————————– 09/02/2021 at 4:33 PM #176674E’ quella che ho postato sopra. Alla riga 6 ho messo i punti ed ho variato le righe 14 e 18. 09/02/2021 at 6:05 PM #176684La formula riportata con i punti splitta correttamente una posizione VINCENTE long o short, proprio come fa il codice A, in percentuale, sopra riportato. Vorrei invece modificare il tuo codice in punti come il codice B, ossia splittare una posizione PERDENTE long o short. Praticamente: quando una posizione long o short (magari con uno SL in punti di 200 punti) perde 100 punti splitta in due la posizione. 09/02/2021 at 6:08 PM #176685ho fatto un errore nello scrivere velocemente i rem iniziali del codice in %: il codice A splitta una posizione vincente (long o short che sia) e NON una long il codice B splitta una posizione perdente (long o short che sia) e NON una short 09/02/2021 at 8:34 PM #176690Ciao Roberto, ho creato questo per lo split in punti di posizioni perdenti (modificando il tuo codice sopra – rif. 176667 – per lo split in punti di posizioni vincenti). Sembra che funzioni. Volevo solo sapere se è logicamente corretto (dato che è stata una prova empirica più che logica!) chiudendo così questo topic. once partialcloseLoss = 1 
 If partialcloseLoss then
 ONCE PerCent = 0.5 //close 1/2 size
 PipsLoss = -100 //PositionPrice * PerCentGain / PipSize
 ONCE MinLotSize = 0.5
 ExitQuantity = abs(CountOfPosition) * PerCent
 LeftQty = max(MinLotSize,abs(CountOfPosition) – ExitQuantity)
 CloseQuantity = max(0,abs(CountOfPosition) – LeftQty)
 TempGain = PositionPerf * PositionPrice / PipSize
 IF Not OnMarket THEN
 Flag = 1
 ENDIF
 IF partialcloseLoss AND LongOnMarket and TempGain <= PipsLoss*pipsize AND Flag THEN
 SELL CloseQuantity Contracts AT Market
 Flag = 0
 endif
 IF partialcloseLoss AND ShortOnMarket and TempGain <= PipsLoss*pipsize AND Flag THEN
 exitshort CloseQuantity Contracts AT Market
 Flag = 0
 endif
 endif09/02/2021 at 10:29 PM #176696Alle righe 14 e 18 del mio post basta che verifichi se sono in perdita: 1and TempGain <= -PipsLoss*pipsize ANDdovrai mettere nella variabile PipsLoss i pips di perdita a cui chiudere la prima parte. 1 user thanked author for this post.
- 
		AuthorPosts
			Find exclusive trading pro-tools on 


 
		 
		 
		