Salve a tutti.
Vorrei vedere sul grafico il valore di una variabile che funge da trailing stop; la parte di codice sotto riportata non è eseguibile perchè compare l’errore “Caratteri mancanti. Suggerimenti: fine del codice”. Il codice in questione non è alla fine del programma per cui non capisco questo messaggio e, soprattutto, non so cosa fare per eliminarlo.
IF LONGONMARKET THEN
//first move (breakeven)
IF newSL=0 AND close-tradeprice(1)>=trailingstart THEN
newSL = tradeprice(1)+trailingstep
CloseMax = close
ENDIF
//next moves
IF newSL>0 AND close > CloseMax AND close-newSL>=trailingstep THEN
newSL = newSL+trailingstep
CloseMax = close
ENDIF
ENDIF
RETURN NewSL COLOURED (0,0,0) AS "Trailing Stop"
L’ultima riga con l’istruzione RETURN è quella che causa l’errore.
Grazie.
RockerGab
Grazie Roberto. Li guarderò appena possibile.
RockerGab
Buongiorno Roberto;
ho inserito l’istruzione GRAPHONPRICE nel codice sotto riportato ma non ho ottenuto il risultato sperato. Viceversa, l’istruzione GRAPH funziona ma aprendo un nuovo grafico realizzando così una soluzione parziale al mio problema.
IF LONGONMARKET THEN
//first move (breakeven)
IF newSL=0 AND close-tradeprice(1)>=trailingstart THEN
newSL = tradeprice(1)+trailingstep
CloseMax = close
ENDIF
//next moves
IF newSL>0 AND close > CloseMax AND close-newSL>=trailingstep THEN
newSL = newSL+trailingstep
CloseMax = close
ENDIF
ENDIF
GRAPHONPRICE newSL as "NewSL"
Ho provato anche a posizionare l’istruzione GRAPHONPRICE alla fine dell’intero programma non è cambiato nulla.
Grazie.
RockerGab
Ti avevo detto chenon puoi creartiinduicatori con istruzioni di ProBackTest.
Devi aggiungerle alla strategia e con quelle istruzioni vedrai i valori sul grafico, candela per candela, alla fine del backtest.
Scusa la domanda ma non riesco a capire dove andare ad inserire le istruzioni suggerite. Ho iniziato da poco ad utilizzare questa piattaforma ed evidentemente non ho ancora capito quali sezioni utilizzare. Potresti indicarmi a grandi linee (o quali manuali on line leggere) per programmare una strategia che poi vorrei “backtestare” con ProBacktest?
Grazie ancora.
RockerGab
ProRealTime si compone di vari moduli:
- ProScreener che serve per creare ed eseguire gli Screener, cioè i programmi per la scansione LIVE del mercato secondo le condizioni insertite
- ProBuilder che serve per creare ed eseguire Indicatori/Oscillatori
- ProOrder che in realtà è coposto da 2 strumenti:
ProBackTest che consente di creare una strategia, provarla ed ottimizzarla facendo il backtest
ProOrder stesso (o AutoTrading) che permette di eseguire la strategia in realtime sui conti demo o reali.
Il codice che hai postato NON è fatto per un indicatore, fa parte di una strategia dal quale è stato estrapolato.
Quindi funziona (anzi funzionerebbe, perché è una parte del trailing stop, ne manca comunque una parte e manca tutta la parte della strategia) entrando in ProBackTest e creandola incollandoci il codice sopra. Li vedresti i valori che ti ho detto.
Ad ogni modo, ti ho messo, all’inizio, una semplice strategia con il codice di Nicolas (https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/) per farti vedere come funziona, tu fai il copia e incolla in ProBackTest (se ti incolla anche i numeri di riga, toglili):
DEFPARAM CumulateOrders = FALSE
IF close crosses over average[200] and Not OnMarket then
buy 1 contract at Market
endif
IF close crosses under average[200] and LongOnMarket then
sell 1 contract at Market
endif
set target pProfit 300
set stop pLoss 100
//
//************************************************************************
//trailing stop function
trailingstart = 20 //trailing will start @trailinstart points profit
trailingstep = 5 //trailing step to move the "stoploss"
//reset the stoploss value
IF NOT ONMARKET THEN
newSL=0
ENDIF
//manage long positions
IF LONGONMARKET THEN
//first move (breakeven)
IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
newSL = tradeprice(1)+trailingstep*pipsize
ENDIF
//next moves
IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
newSL = newSL+trailingstep*pipsize
ENDIF
ENDIF
//manage short positions
IF SHORTONMARKET THEN
//first move (breakeven)
IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
newSL = tradeprice(1)-trailingstep*pipsize
ENDIF
//next moves
IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
newSL = newSL-trailingstep*pipsize
ENDIF
ENDIF
//stop order to exit the positions
IF newSL>0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF
//************************************************************************
GRAPH newSL as "trailing"
GRAPHONPRICE newSL as "NewSL"
Intanto grazie. Vedrò di studiarci un po’ sopra.
RockerGab