Codice rientro in posizione
Forums › ProRealTime forum Italiano › Supporto ProOrder › Codice rientro in posizione
- This topic has 5 replies, 2 voices, and was last updated 2 years ago by robertogozzi.
-
-
02/03/2022 at 8:57 AM #187433
Ciao Roberto, seguendo tue indicazioni di tempo fa ho costruito un codice per rientrare a mercato dopo che un TS è uscito (lo posto con le note nel caso possano servire ad altri utenti).
Ti volevo chiedere due cose, intanto la prima: se puoi controllare se formalmente è corretto, mi sembra di si ma è sempre meglio un tuo controllo (testato su un TS di prova sul cfd del S&P 500 (1 euro a punto).
Codice rientro in posizione1234567891011121314151617181920212223242526272829303132//PROVA CODICE RIENTRO [ S&P 500 - H1]defparam cumulateorders = falsepositionSize =1avg100 = average[100](close)//------------------------------------------------------------------------------ //ENTRATA1: CROSS INIZIALEif close crosses over avg100 thenbuy positionSize contracts at marketset stop %loss 0.7set target %profit 2endif//------------------------------------------------------------------------------ //ENTRATA 2 : RIENTRO IN POSIZIONEif strategyProfit <> strategyProfit[1] then //NOTA 1closeIndex = barIndex[1]endifnBars = 4if not onMarket and (barIndex - closeIndex) > nBars and close > tradePrice(2) and close > avg100 then //NOTA 2buy positionSize contract at marketset stop %loss 0.7set target %profit 1.6endif//**************************************************//NOTA 1: Non c’è una costante specifica come TradeIndex, però puoi fartela facilmente.//Nell’esempio la chiamerò CloseIndex e prenderà il valore dell’ultima barra di chiusura (che un trade è chiuso si vede da quando il risultato della strategia viene aggiornato, è la barra precedente)://if strategyProfit <> strategyProfit[1] then//closeIndex=barIndex[1]//*******************************************//NOTA 2: Tieni presente che TRADEPRICE non è il prezzo di entrata, ma semplicemente l’ultimo prezzo tradato, quindi quando non sei a mercato TRADEPRICE o TRADEPRICE(1) è il prezzo di uscita dell’ultima posizione e quello d’entrata è TRADEPRICE(2)//****************************************************02/03/2022 at 11:02 AM #187442Si, io ho aggiunto alla fine queste righe:
123graph closeIndexgraph (barIndex - closeIndex)graphonprice tradeprice(2)e mi sembra andasse tutto bene (ho controllato solo 3-4 operazioni, in modo sparso).
02/03/2022 at 11:19 AM #187443Grazie Roberto, la seconda cosa: non riesco ad inserire correttamente lo split della posizione (codice verificato) nel TS in modo tale che valga SOLTANTO per l’entrata1 (cross iniziale).
[In pratica riesco a distinguere per le due entrate SL e TP, ma non lo split]
Puoi inserire nel codice sopra riportato il codice dello split (riportato sotto)?
once partialcloseGain = 1
If partialcloseGain then
ONCE PerCent = 0.5
ONCE PerCentGain = 0.02 //0.02= 2%
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
endif02/03/2022 at 12:54 PM #187455Ho aggiunto unaverifica che CloseQuantity non sia mai < 0.
Ho anaggiunto la variabile Codice per fare in modo che riconosca quando è la prima entrata, all’incrocio:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950//PROVA CODICE RIENTRO [ S&P 500 - H1]defparam cumulateorders = falseonce Codice = 0positionSize = 1avg100 = average[100](close)//------------------------------------------------------------------------------ //ENTRATA1: CROSS INIZIALEif close crosses over avg100 thenCodice = 0buy positionSize contracts at marketset stop %loss 0.7set target %profit 2endif//------------------------------------------------------------------------------ //ENTRATA 2 : RIENTRO IN POSIZIONEif strategyProfit <> strategyProfit[1] then //NOTA 1closeIndex = barIndex[1]endifnBars = 4if not onMarket and (barIndex - closeIndex) > nBars and close > tradePrice(2) and close > avg100 AND Codice = 0 then //NOTA 2Codice = 1buy positionSize contract at marketset stop %loss 0.7set target %profit 1.6endif//once partialcloseGain = 1If partialcloseGain thenONCE PerCent = 0.5ONCE PerCentGain = 0.002 //0.02= 2%ONCE MinLotSize = 0.5ExitQuantity = abs(CountOfPosition) * PerCentLeftQty = max(MinLotSize,abs(CountOfPosition) - ExitQuantity)CloseQuantity = max(0,abs(CountOfPosition) - LeftQty)IF Not OnMarket THENFlag = 1ENDIFIF partialcloseGain AND LongOnMarket and close >= (PositionPrice * (1 + PerCentGain)) AND Flag=1 AND Codice = 0 and CloseQuantity > 0 THENSELL CloseQuantity Contracts AT MarketFlag = 0endifendif//**************************************************//NOTA 1: Non c’è una costante specifica come TradeIndex, però puoi fartela facilmente.//Nell’esempio la chiamerò CloseIndex e prenderà il valore dell’ultima barra di chiusura (che un trade è chiuso si vede da quando il risultato della strategia viene aggiornato, è la barra precedente)://if strategyProfit <> strategyProfit[1] then//closeIndex=barIndex[1]//*******************************************//NOTA 2: Tieni presente che TRADEPRICE non è il prezzo di entrata, ma semplicemente l’ultimo prezzo tradato, quindi quando non sei a mercato TRADEPRICE o TRADEPRICE(1) è il prezzo di uscita dell’ultima posizione e quello d’entrata è TRADEPRICE(2)//****************************************************1 user thanked author for this post.
02/03/2022 at 1:39 PM #187459Grazie Roberto, faccio un pò di prove e ti faccio sapere.
Una cosa al volo: se volessi utilizzare lo split per entrambe le entrate (come fa lo split iniziale che avevo riportato senza il tuo flag “Codice”) devo scrivere alla riga 37:
AND (Flag=1 or Flag=0) ?
02/03/2022 at 3:43 PM #187468No, devi solo togliere CODICE, oppure se vuoi mantenere quella variabile, assegnargli 0 alla riga 20.
-
AuthorPosts
Find exclusive trading pro-tools on