Uscita Stop-Limit TS
Forums › ProRealTime forum Italiano › Supporto ProOrder › Uscita Stop-Limit TS
- This topic has 15 replies, 2 voices, and was last updated 3 years ago by robertogozzi.
-
-
02/16/2021 at 7:01 PM #161700
In un TS che ha come “una” delle varie condizioni di uscita un uscita in stopLoss se il prezzo è sotto un certo livello – x punti, come posso scrivere la formula per far uscire il TS al raggiungimento di questo limite senza attendere la chiusura della barra (ossia che mi rispetti gli x punti)?
Penso che dovrei utilizzare un ordine stop, ma non so come inserirlo nella condizione sotto (non uso insertPrt in quanto sarebbe una formula molto più complicata, mentre la logica dell’esempio è chiara)
Esempio:
marginError=10
c1BuyExit= close<(resistenza-marginError)
c2Buy Exit=….
cLongExit= c1BuyExit and c2BuyExit
//———————————
If cLongExit then
sell 1 contract at market
endif
GRAZIE
Grazie
02/16/2021 at 7:03 PM #16170102/16/2021 at 10:05 PM #161719Devi calcolare lo SL in forma di prezzo quando entri in posizione ed inserire un ordine pendente STOP ad ogni barra finché sei a mercato.
Quando non sei a mercato azzera il prezzo di stoploss che avevi calcolato:
12345678910If Not OnMarket thenStopLoss = 0EndifIf MieCondizioni thenBuy .....StopLoss = close - X * pipsizeEndifIf StopLoss > 0 thenSell at StopLoss STOPEndif02/16/2021 at 10:57 PM #161727Grazie per la risposta Roberto, ma essendo condizioni raggruppate non mi sembra così facile come nel tuo esempio da singola condizione. Dovrei inserire l’ordine STOP nella condizione long: c1BuyExit (che in pratica è uno SL) e nella condizione short: c1SellExit).
Se non è troppo complesso prova ad inserirlo nella parte del codice sotto riportato, mi servirebbe più come esempio per future prove che per il singolo caso riportato. Grazie
1234567891011121314151617181920212223242526272829303132333435363738394041marginError=6//---------------------------------------------------------------- PATTERNgreenZone=vcH>vcH2violetZone=vcH<vcH2//----------------------------------------------------------------c1Buy=greenZone //Buyc2Buy=(close[1]<bkL[1] and close>bkL) OR (close[1]<bkH[1] and close>bkH)c3Buy=high<upperChannelLine and high[1]<upperChannelLine[1]c1BuyExit=close<(vcL2-marginError) //Buy Exitc2BuyExit= vcH<vcH2 and close>tradePrice(1)and myMacd <= myKamac3BuyExit= vcH<vcH2 and close<tradePrice(1)//---------------c1Sell=violetZone //Sellc2Sell=(close[1]>bkH[1] and close<bkH) OR (close[1]>bkL[1] and close<bkL)c3Sell= low>lowerChannelLine and low[1]>lowerChannelLine[1]c1SellExit=close>(vcH2+marginError) //Sellc2SellExit=vcL>vcL2 and close<tradePrice(1) and mymacd >= myKamac3SellExit=vcL>vcL2 and close>tradePrice(1)// ------------------------------------------------------------------ CONDIZIONI RAGGRUPPATEcLongEntry=c1Buy and c2Buy and c3Buy and limitHourcShortEntry=c1Sell and c2Sell and c3Sell and limitHourcLongExit=c1BuyExit or c2BuyExit or c3BuyExitcShortExit=c1SellExit or c2SellExit or c3SellExit// -------------------------------------------------------------------IF cLongEntry THENBUY 1 CONTRACTS AT MARKETENDIFIF cLongExit thenSELL 1 CONTRACTS AT MARKETendifIf cShortEntry THENSELLSHORT 1 CONTRACTS AT MARKETENDIFIf cShortExit thenEXITSHORT 1 CONTRACTS AT MARKETENDIF//----------------------------------------------------------------graph greenZone coloured(0, 238, 0)graph violetZone coloured(238, 130, 238)//----------------------------------------------------------------02/16/2021 at 11:00 PM #16172802/16/2021 at 11:10 PM #161730Si, però devi inserirlo tra la riga 30 e la 31:
1c1BuyExit=close-X*pipsize-MarginError*pipsizelo stesso per il sell tra la 33 e la 34:
1c1SellExit=close+X*pipsize+MarginError*pipsizee, all’inizio, li azzeri quando non sei a mercato.
Alla fine, prima di GRAPH, piazzi uno dei due ordini STOP (dipende se sei Long o Short) come ho fatto io.
02/16/2021 at 11:48 PM #161731Ho provato questo ma non funziona (non esce in STOP)
12345678910111213141516171819202122232425262728293031If not onMarket thenc1BuyExit=0c1SellExit=0endif//--------------------------------------------------------------------IF cLongEntry THENBUY 1 CONTRACTS AT MARKETc1BuyExit=close-1*pipsize-MarginError*pipsizeENDIFIF cLongExit thenSELL 1 CONTRACTS AT MARKETendif//------------------------------------------------------------------If cShortEntry THENSELLSHORT 1 CONTRACTS AT MARKETc1SellExit=close+1*pipsize+MarginError*pipsizeENDIFIf cShortExit thenEXITSHORT 1 CONTRACTS AT MARKETENDIF//----------------------------------------------------------------If c1BuyExit>0 thensell at c1BuyExit STOPendifif c1SellExit>0 thenexitShort at c1SellExit STOPendif//----------------------------------------------------------------graph greenZone coloured(0, 238, 0)graph violetZone coloured(238, 130, 238)02/17/2021 at 12:05 AM #16173202/17/2021 at 12:08 AM #161734Usa GRAPH o, meglio, GRAPHONPRICE con le due variabili c1BuyExit e c1SellExit.
02/17/2021 at 12:16 AM #161736Verifica che le due variabili non vengano modificate DOPO l’entrata a mercato, perché vedo che non hai messo AND Not OnMarket alle righe 6 e 14.
02/17/2021 at 12:22 AM #16173702/17/2021 at 9:56 AM #161768Ho provato, ma non mi funziona. Me lo puoi correggere (solo parte long per semplicità)?
1234567891011121314151617181920212223242526marginError=6//----------------------------------------------------------------greenZone=vcH>vcH2//----------------------------------------------------------------c1Buy=greenZonec2Buy=(close[1]<bkL[1] and close>bkL) OR (close[1]<bkH[1] and close>bkH)c3Buy=high<upperChannelLine and high[1]<upperChannelLine[1]c1BuyExit=close<(vcL2-marginError)c2BuyExit= vcH<vcH2 and close>tradePrice(1)and myMacd <= myKamac3BuyExit= vcH<vcH2 and close<tradePrice(1)cLongEntry=c1Buy and c2Buy and c3Buy and limitHourcShortEntry=c1Sell and c2Sell and c3Sell and limitHour// -------------------------------------------------------------------<strong>IF cLongEntry and not onMarket THENBUY 1 CONTRACTS AT MARKETc1BuyExit=close-1*pointSize-MarginError*pointSizeENDIFIF cLongExit thenSELL 1 CONTRACTS AT MARKETendifIf c1BuyExit>0 thensell at c1BuyExit STOPendif</strong>02/17/2021 at 10:52 AM #161783Ho risolto in questo modo, puoi controllare se va bene?
1234567891011121314151617181920212223marginError=6*pointSizeIF not onMarket and cLongEntry THENBUY 1 CONTRACTS AT MARKETstopLossBuy=vcL2-marginErrorENDIFIF cLongExit thenSELL 1 CONTRACTS AT MARKETendifIf stopLossBuy>0 thensell at stopLossBuy STOPendif//------------------------------------------------------------------If not onMarket and cShortEntry THENSELLSHORT 1 CONTRACTS AT MARKETstopLossSell=vcH2+marginErrorENDIFIf cShortExit thenEXITSHORT 1 CONTRACTS AT MARKETENDIFif c1SellExit>0 thenexitShort at stopLossSell STOPendif02/17/2021 at 11:05 AM #161789Si, hai riassegnato alle due precedenti variabili un valore logico (io le avevo cambiate in stop loss), usandone altre due per lo stop loss.
L’aggiunta di OnMarket alle condizioni garantisce che le righe 5 e 16 non siano eseguite quando già a mercato (questo perché DEFPARAM CumulateOrders=FALSE impedisce di accumulare posizioni ignorando BUY/SELLSHORT, ma tutte le eventuali altre istruzioni che ci sono entro IF…ENDIF vengono comunque eseguite).
02/17/2021 at 11:13 AM #161792Ok perfetto, ti chiedo un altra cosa al volo che non mi funziona.
Puoi controllare se va bene questo codice formale per aprire una posizione contraria di un Ts che è uscito da una posizione long con profitto e permangono ancora certe condizioni.
Esempio:
cLongEntry= if not onMarket and c1 and c2 and c3
cLongExit = if longOnMarket and c4 //(es.: c4=close >average[50](close)
———
cShortEntry = if (not onMarket and onMarket[1]) and c4 and positionPerf(1)>0 -
AuthorPosts
Find exclusive trading pro-tools on