salve a tutti,
ho provato a cercare nel forum una funzione simile, ma senza successo.
l’idea è quella di ridurre lo stop di una percentuale (considerando i punti/pip) rispetto allo stop iniziale, se il trade in corso è perdente dopo un numero definito di barre.
ho trovato una funzione chiamata “exit zombie trade” dal quale ho preso spunto.
esempio:
trade aperto perdente, dopo 10 barre, se il close si trova entro il 50% dell stop originario allora riduco lo stop del 20 % (tipo da 100 a 80 punti).
ovviamente è una bozza e non so ne se si può fare ne se è corretto come l’ho scritto, magari qualcuno ha pensato o fatto già qualcosa di simile.
allego le stringhe del codice.
ratiostop=(stoploss/100)*50 //percentuale dello stop iniziale in punti/pip entro la quale può essere ridotto lo stop
entry=tradeprice(1)*pipsize
stopreduce=((stoploss/100)*80) *pipsize //percentuale in cui lo stop dovrebbe essere ridotto (20%)
closepositionatxbars= abs (entry- close)*pipsize //posizione del close dopo n barre
if onmarket and barindex-tradeindex(1)>xbars and (MFE=0) and closepositionatxbars<ratiostop then
sell at stopreduce
endif
Il tuo codice non è completo, inoltre non capisco cosa tu voglia fare alla riga 2, per cui ho scritto questo:
IF OnMarket AND Not OnMarket[1] THEN
StopLoss = TradePrice - 100*PipSize
ENDIF
IF average[10] CROSSES OVER average[100] THEN
BUY AT MARKET
StopLoss = close - 100*PipSize
SELL AT StopLoss STOP
SET TARGET pPROFIT 50
ENDIF
IF OnMarket AND (BarIndex - TradeIndex) > 10 THEN //risuci del 20% dopo 10 barre se in perdita ed entro il 50%
IF (close + 50*PipSize >= TradePrice) AND PositionPerf < 0 THEN
StopLoss = TradePrice - 80*PipSize
ENDIF
ENDIF
IF OnMarket THEN
SELL AT StopLoss STOP
ENDIF
graphonprice StopLoss coloured(255,0,0,255)
graphonprice TradePrice
graph PositionPerf
Ciao Roberto,
il senso è piu o meno quello che hai scritto:
l’esempio che avevo fatto in punti era esplicativo, in pratica l’idea era utilizzare una percentuale dello stop originaro, ti riporto ad esempio:
IF OnMarket AND (BarIndex - TradeIndex) > 10 THEN //riduci del 20% dopo 10 barre se in perdita ed entro il 50%
IF (close < al tradeprice ma maggiore del 50% dello stop originario) AND PositionPerf < 0 THEN
StopLoss = (stoploss/100)*80 //80% dello stop di partenza
ENDIF
ENDIF
il punto è che non so come indicargli (oltre al resto) che deve calcolarmi la percentuale x dello stop
lo scopo è quello di ridurre il drawdown di un sistema durante quei trade che sono destinati a perdere.
Si, va bene quello che hai scritto.
ok quindi in teoria andrebbe scritto cosi, riporto il tuo esempio, dimmi se scrivo corbellerie.
esempio di profitto perdite 1:1
IF average[10] CROSSES OVER average[100] THEN
BUY AT MARKET
StopLoss = (close - lowest[10](low))
perdita = StopLoss
profitto= StopLoss
SELL AT StopLoss STOP
SET TARGET pPROFIT stoploss
ENDIF
ratiostop= (perdita/100)*50 //la metà dello stop originario
nuovostop= perdita- (perdita*0.2) // nuovo stoploss ridotto del 20 %
IF OnMarket AND (BarIndex - TradeIndex) > 10 THEN // dopo 10 barre se in perdita ed entro il 50%
IF (close + ratiostop >= TradePrice) AND PositionPerf < 0 THEN
sell at nuovostop stop
ENDIF
ENDIF
Mancano le righe 1-3 del mio codice. Non che sia fondamentale, serve solo ad ottenere uno SL più preciso, in caso di gap o slippage.
Alla riga 7 usa PROFIT, senza la “p” iniziale.
Ma ci sono altre cose errate. Ad esempio alla riga 6 piazzi un ordine pendente per uscire, ma deve essere un prezzo, non una differenza tra prezzi.
Ok, tutto chiaro.
domani da pc riscrivo tutto.
per la prima parte non ci ho fatto molto caso onestamente quando scrivevo mi stavo concentrando sulle righe Dalla 10–>16.
:/
Ma le righe del codice dalla 1–>3 vengono rilette anche in caso in cui vengono eseguite le ultime righe?
Grazie ancora
Vengono eseguite solo una volta, alla chiusura della prima candela dopo l’entrata.
ecco il codice, spero di averlo scritto corretto
IF OnMarket AND Not OnMarket[1] THEN
StopLoss = TradePrice - 100*pipsize
ENDIF
IF average[10] CROSSES OVER average[100] THEN
BUY AT MARKET
StopLoss = close - (lowest [10] (low)
profitto = stoploss*pipsize
SELL AT StopLoss STOP
SET TARGET pPROFIT profitto
ENDIF
perdita=stoploss *pipsize
ratiostop= (perdita/100)*50 //la metà dello stop originario
nuovostop= perdita- (perdita*0.2) // nuovo stoploss ridotto del 20 %
IF OnMarket AND (BarIndex - TradeIndex) > 10 THEN // dopo 10 barre se in perdita ed entro il 50%
IF (close + ratiostop >= TradePrice) AND PositionPerf < 0 THEN
sell at nuovostop stop
ENDIF
ENDIF
IF OnMarket THEN
SELL AT StopLoss STOP
ENDIF
graphonprice StopLoss coloured(255,0,0,255)
graphonprice TradePrice
graph PositionPerf
Ci sono ancora alcuni errori:
- riga 8, devi usare un PREZZO quando piazzi un ordine pendente, mentre alla riga 6 tu hai calcolato lo stop loss come una differenza tra due prezzi (chiusura e minimo)
- riga 7, moltiplicare per pipsize serve per convertire dei PIP in un prezzo, ma alla riga 6 lo stoploss è già calcolato come prezzo (differenza di prezzi)
- riga 9, devi usare PROFIT (senza la “p” iniziale), in quanto è una differenza di prezzi (non PIP).
Effettivamente per digerire il discorso Pips e Prezzi non è cosa facilissima. Se tu avessi la certezza che le tue strategie fossero SEMPRE usate con indici, dove il rapporto prezzo:pip è di 1:1, potresti anche dimenticarti di questo aspetto, però se vuoi creare delle strategie che funzionino sempre, indipendentemente dallo strumento, allora devi sapere applicare la conversione.