Creare condizione TS profit factor
Forums › ProRealTime forum Italiano › Supporto ProOrder › Creare condizione TS profit factor
- This topic has 16 replies, 2 voices, and was last updated 3 years ago by robertogozzi.
Tagged: factor, fattore, loss, perdita, Profit, Profit factor, profitto, strategyprofit
-
-
03/07/2021 at 9:26 PM #163387
Ciao Roberto, è possibile creare una condizione che esprima semplicemente il valore di profit factor? Vorrei che un TS abbia come requisito un profit factor delle ultime 20 operazioni chiuse maggiore di 2.
Penso che bisogna separare le operazioni chiuse positive, positionPerf(x)>0 da quelle negative positionPerf(x)<0, e sapere con strategyProfit chiaramente il guadagno/perdita di queste operazioni. Poi “forse” usare un doppio Summation per conoscere i profitti di quelle positive delle ultime venti e di quelle negative, poi dividere il risultato di questi due Summation per ottenere il proft factor.
Questa l’idea generica che mi è venuta in mente (probabilmente conoscerai un modo molto più semplice). Riesci a scrivermi la condizione? Grazie
03/07/2021 at 10:52 PM #163389Qualcosa di simile, ma usando i vettori (array) sarà più semplice.
Questo è il codice, alla fine le variabili PROFITTO e PERDITA conterranno il numero di operazioni in profitto ed in perdita. Tu potrai utilizzarli come vuoi:
123456789101112131415161718192021222324ONCE MaxOperazioni = 20If BarIndex = 0 ThenFor i = 1 to MaxOperazioni$Risultato[i] = 0NextEndifIf StrategyProfit <> StrategyProfit[1] ThenProfitto = 0Perdita = 0For i = 1 to MaxOperazioni - 1$Risultato[i] = $Risultato[i+1]If $Risultato[i] > 0 thenProfitto = Profitto + 1Elsif $Risultato[i] < 0 thenPerdita = Perdita + 1EndifNext$Risultato[MaxOperazioni] = StrategyProfit - StrategyProfit[1]If $Risultato[MaxOperazioni] > 0 thenProfitto = Profitto + 1Elsif $Risultato[MaxOperazioni] < 0 thenPerdita = Perdita + 1EndifEndif03/07/2021 at 10:58 PM #16339003/08/2021 at 9:16 AM #163416Ciao Roberto, ho provato a scrivere la condizione del ProfitFactor con le due variabile che hai indicato, aggiungendo la condizione alle altre di entrata (vd sotto), ma il TS non gira (non fa operazioni). Sai quale può essere il motivo?
cProfitFactor=(Profitto/Perdita)>=2
03/08/2021 at 10:03 AM #163419Evidentemente non è >= 2.
Hai provato ad usare GRAPH per vedere i valori di PROFITTO e PERDITA (e poi verificarne la correttezza con le operazioni fatte) ?
03/08/2021 at 12:28 PM #16343403/08/2021 at 12:33 PM #163437Non l’ho provato. ma tu devi verificare se registra valori corretti senza mettere la condizione del fattore.
Una volta verificato che va bene, la questioine è solo del fattore.
03/08/2021 at 1:00 PM #163438Plottando il TS con solo i graph di profitto (verde) e perdita(rosso), senza inserire la condizione sopra riportata funziona (vd immagine).
Potresti riscrivermi quindi meglio la condizione? (che poi non è altro che il rapporto di profitto/perdita che deve esser maggiore di un certo livello, non capisco perchè scritta come sopra non fa girare per niente il TS). GRAZIE
03/08/2021 at 1:10 PM #16344103/08/2021 at 1:20 PM #163444La tua condizione è corretta, se anche il numero di operazioni in Perdita e Profitto corrispondono, c’è poco da fare, significa che il rapporto è < 2.
Hai verificato, con GRAPH, che i numeri riportati siano corretti? Quante perdite c’erano e quanti profitti?
Manualmente erano>= 2 oppure inferiori?
03/08/2021 at 1:36 PM #163446Dipende dalle condizionidel tuo TS, questo funziona:
123456789101112131415161718192021222324252627282930313233343536DEFPARAM CumulateOrders = FALSEONCE MaxOperazioni = 20If BarIndex = 0 ThenFor i = 1 to MaxOperazioni$Risultato[i] = 0NextEndifIf StrategyProfit <> StrategyProfit[1] ThenProfitto = 0Perdita = 0For i = 1 to MaxOperazioni - 1$Risultato[i] = $Risultato[i+1]If $Risultato[i] > 0 thenProfitto = Profitto + 1Elsif $Risultato[i] < 0 thenPerdita = Perdita + 1EndifNext$Risultato[MaxOperazioni] = StrategyProfit - StrategyProfit[1]If $Risultato[MaxOperazioni] > 0 thenProfitto = Profitto + 1Elsif $Risultato[MaxOperazioni] < 0 thenPerdita = Perdita + 1EndifEndifIF close crosses over average[200] and not LongOnMarket ThenBUY at MarketelsIF close crosses under average[200] and not ShortOnMarket Thensellshort at Marketendifset target pprofit 100set stop ploss 500//GRAPH Perdita coloured(255,0,0,255)GRAPH Profitto coloured(0,128,0,200)graph (Profitto/Perdita) >= 2 coloured(0,0,255,255)03/08/2021 at 1:54 PM #163449Ho capito quak’è il problema.
Quando parte il rapporto non può essere che 0, quindi < 2 e non apre operazioni.
Modifica la condizione come segue;
1234Once cProfitFactor = 1If (Profitto + Perdita) > 20 ThencProfitFactor=(Profitto/Perdita)>=2Endif03/08/2021 at 2:13 PM #163452Però funziona solo all’inizio e solo se nelle prime 20 operazioni ce ne sono almeno 2/3 in profitto.
In ogni caso se arriva a < 2 si blocca e non permette al TS di recuperare,
Secondo me è proprio la logica della condizione che non può essere applicata, oppure potresti calcolare una media di quel rapporto e andare avanti solo se non scende sotto un certo livello, ma 1.2-1.4 non di più.
03/08/2021 at 2:39 PM #163453Infatti, gira ma ho visto che si bloccava. Provo a fare delle prove con una media. Si potrebbe comunque utilizzare un filtro di performance più semplice del profit factor tipo la media del profitto delle ultime n operazioni.
03/08/2021 at 3:01 PM #163457Si, certo.
Il problema è non bloccarlo del tutto, ad esempio 10 o 20 o N barre, ma poi permettergli di ricominciare.
-
AuthorPosts
Find exclusive trading pro-tools on