Salve a tutti, ho scritto questo trading system che allego. Sto creando una libreria con i vari pattern di prezzo (indicatori da 1 a 3 che allego) che verranno chiamati all’interno del TS con la funzione “CALL”.
Per praticità allego solo i primi 3 pattern, anche se all’interno del TS trovate 9 funzioni “CALL” per 9 pattern.
Volevo sapere come posso fare ad ottimizzare una strategia inserendo le variabili nell’ottimizzatore? Vorrei poter capire tramite l’ottimizzatore quale pattern restituisce il risultato migliore senza provarli uno ad uno.
Vorrei solo capire il meccanismo per ora, dopo credo che non utilizzerò la funzione “CALL” ma riscriverò i pattern all’interno di ogni TS per alleggerire il procedimento.
Grazie a tutti
Qui puoi trovare articoli e video:
https://www.prorealcode.com/blog/learning/prorealtime-walk-analysis-tool/
https://www.youtube.com/channel/UC8bNosI3wuid_3Ze7CzorvA
https://www.youtube.com/channel/UCj1ZsVjiKQQH1XzIMENQTyQ
https://www.prorealcode.com/programming-with-prorealtime/
L’istruzione
STOP LOSS 150 pTRAILING 50
non può essere usata così, seppure scritto sul manuale, in quanto contiene due tipi di stop diversi sulla stessa riga.
Ne va scritto solo uno tra i seguenti due:
STOP LOSS 150
SET STOP pTRAILING 50
inoltre contiene LOSS (senza la P iniziale), mentre PTRAILING ce l’ha.
Per il trailing stop è consigliabile usare il codice dalle righe 17 a 56 a questo link https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/.
SET STOP TRAILING può dare risultati molto diversi tra backtest e reale ed ha un passo di una sola unità (predefinita e immodificabile). Gli si può solo dire quando iniziare.
Grazie per la dritta sullo stop loss ed il trailing stop…in effetti avevo letto il comando sul manuale ed avevo scontato fosse giusto.
Purtroppo non ho capito come fare quello che ti ho chiesto per ottimizzare in base agli indicatori che richiamo.
Ti Scrivo il codice…potresti come fare ?
Pattern1 = CALL “Ptrn001”
Pattern2 = CALL “Ptrn002”
Pattern3 = CALL “Ptrn003”
Pattern4 = CALL “Ptrn004”
Pattern5 = CALL “Ptrn005”
Pattern6 = CALL “Ptrn006”
Pattern7 = CALL “Ptrn007”
Pattern8 = CALL “Ptrn008”
Pattern9 = CALL “Ptrn009”
StartTime= 075900
EndTime = 110100
c1 = (Pattern1[0] = 1)
c2 = (Pattern2[0] = 1)
c3 = (Pattern3[0] = 1)
c4 = (Pattern4[0] = 1)
c5 = (Pattern5[0] = 1)
c6 = (Pattern6[0] = 1)
c7 = (Pattern7[0] = 1)
c8 = (Pattern8[0] = 1)
c9 = (Pattern9[0] = 1)
// Condizioni per entrare su posizioni long
IF NOT LongOnMarket AND currenttime >= StartTime and currenttime <= EndTime and Close > Dhigh(1) THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
// Condizioni per uscire da posizioni long
If LongOnMarket AND opendayofweek=5 and currenttime >= 205900 THEN
SELL AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
IF NOT ShortOnMarket AND currenttime >= StartTime and currenttime <= EndTime and close < Dlow(1) THEN SELLSHORT 1 CONTRACTS AT MARKET ENDIF // Condizioni per uscire da posizioni short IF ShortOnMarket AND opendayofweek=5 and currenttime >= 205900 THEN
EXITSHORT AT MARKET
ENDIF
Si possono ottimizzare tutti i valori numerici, nel tuo codice ci sono solo le righe 11 e 12.
[0] puoi toglierlo dai vari pattern, quando è 0 non è obbligatorio.
Inoltre IF….ENDIF devo essere almeno 3 righe (2 se è vuoto) e dopo THEN non deve esserci niente.
Leggi più esempi possibili.