Modifica codice perdite complessive
Forums › ProRealTime forum Italiano › Supporto ProOrder › Modifica codice perdite complessive
- This topic has 18 replies, 2 voices, and was last updated 3 years ago by MauroPro.
-
-
10/18/2021 at 9:27 AM #179845
Ciao Roberto, è possibile modificare questo codice sulle perdite complessive della giornata in modo da stoppare il Ts anche oltre la singola giornata?
Mi spiego meglio: sebbene il codice riguardi le perdite complessive di giornata (n=3) e non consecutive di giornata (in quanto dai test è meglio così), ho notato che nella fasi di DD storico del TS le perdite complessive si identificano con quelle consecutive.
Capita quindi, ad esempio che ieri il TS ha registrato 2 perdite complessive-consecutive, ed oggi 3 perdite complessive-consecutive e si è stoppatp.
Tuttavia il risultato è che si hanno 5 perdite complessive-consecutive in due giorni.
VORREI che dopo che ieri si sono registrate due perdite complessive-consecutive, oggi alla prima perdita il TS smetta di operare.
L’idea più semplice che mi è venuta è, probabilmente, fissare le perdite complessive anche di due giorni: superate quelle il TS smette di operare in quel giorno. Penso che sia un miglioramento per molti TS.
Si riesce a fare? Ecco il codice funzionante di tre perdite complessive di giornata (sarebbe da convertire in 3 perdite complessive di due giornate). Grazie
1234567891011once nLoss = 0nLossMax = 3if intradayBarIndex = 0 thennLoss=0endifif strategyProfit < strategyProfit[1] thennLoss=nLoss +1endifif miecondizioni and nLoss<nLossMax then...10/19/2021 at 8:58 AM #179921Prova a cambiare le righe 3-5 con queste:
123if intradayBarIndex = 0 AND nLoss = nLossMax thennLoss=0endif10/19/2021 at 9:05 AM #17992410/19/2021 at 9:11 AM #179925Oppure, meglio, scrivere uno snippet che ancora non mi sembra esistere in cui determinare in X ore (48 ad esempio) il numero massimo di perdite complessive ( 3 ad esempio).
Poi, quando capita la condizione, quel giorno il TS si arresta e riprende il giorno seguente.
10/19/2021 at 9:59 AM #179928Basta contare i giorni ogni volta che IntraDayBarIndex = 0 e settare una variabile per avvisare di non tradare più (poi stabilirai te quando ricominciare):
12345678910111213141516once nLoss = 0once tradeON = 1ONCE Days = 0nLossMax = 3if intradayBarIndex = 0 thenDays = Days + 1IF Days > 2 THENtradeON = 1nLoss = 0ENDIFendifif strategyProfit < strategyProfit[1] thennLoss=nLoss +1endifif miecondizioni and tradeON and nLoss < nLossMax then...10/19/2021 at 10:16 AM #17993210/19/2021 at 12:20 PM #179949Forse perché esiste già una parola chiave chiamata così. Cambia il nome in Dayx o altro.
10/19/2021 at 1:12 PM #179964Con dayX funziona, ossia il TS gira, ma il risultato è identico al codice base con solo nLoss<nLossMax.
Ho provato infatti ad ottimizzare la riga 7 (al posto di 2 ho provato valori da 1 a 10) e i risultati sono tutti uguali, cosa che non è possibile.
Hai provato ad usare il codice su un qualunque TS?
10/19/2021 at 2:00 PM #179972Non l’ho provato.
Mi sa che alle righe 12-14 ne mancava unae c’era una condizione sola alla riga 7:
12345678910111213141516171819once nLoss = 0once tradeON = 1ONCE Dayx = 0nLossMax = 3if intradayBarIndex = 0 thenDayx = Dayx + 1IF Dayx > 2 OR tradeON = 0 THENtradeON = 1nLoss = 0ENDIFendifif strategyProfit < strategyProfit[1] thennLoss=nLoss +1IF nLoss = nLossMax thentradeON = 0ENDIFendifif miecondizioni and tradeON and nLoss < nLossMax then...10/19/2021 at 6:44 PM #17998010/19/2021 at 7:03 PM #179983Questo va con 2 giorni.
Se lo vuoi fare ad ore basta che invece di IntraDayBarIndex tu incrementi un contatore ogni ora.
10/19/2021 at 7:08 PM #17998410/20/2021 at 11:20 AM #180005Ciao Roberto, ho riprovato ma ti confermo che NON funziona. Forse intendiamo cose differenti: la mia idea è quella di non avere più di tre perdite complessive in due giorni.
Prova questo banale TS sul Dax a 15 minuti e vedrai che ci sono due giorni con 5 perdite complessive (giorno 8 ed 11 ottobre) invece di 3 (inserisco allegato).
DEFPARAM CumulateOrders=False
c1=close crosses over average[50]
//—————————————————
once nLoss = 0
once tradeON = 1
ONCE Dayx = 0
nLossMax = 3
if intradayBarIndex = 0 then
Dayx = Dayx + 1
IF Dayx > 2 OR tradeON = 0 THEN
tradeON = 1
nLoss = 0
ENDIF
endif
if strategyProfit < strategyProfit[1] then
nLoss=nLoss +1
IF nLoss = nLossMax then
tradeON = 0
ENDIF
endif
//——————————————————–
IF c1 and tradeOn and nLoss<nLossMax THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
//————————————————————-
set stop %loss 0.3
set target %profit 0.5
//—————————————–10/21/2021 at 5:46 PM #180118Adesso l’ho provato e funziona:
123456789101112131415161718192021222324252627DEFPARAM CumulateOrders=Falsec1=close crosses over average[50]//—————————————————once nLoss = 0once tradeON = 1ONCE Day2 = 0ONCE Day1 = 0ONCE nLossMax = 3if intradayBarIndex = 0 thenDay2 = Day1Day1 = 0tradeON = 1endifif strategyProfit < strategyProfit[1] thenDay1 = Day1 + 1IF (Day2 + Day1) = nLossMax thentradeON = 0ENDIFendif//——————————————————-IF c1 and tradeOn and nLoss<nLossMax THENBUY 1 CONTRACTS AT MARKETENDIF//————————————————————-set stop %loss 0.3set target %profit 0.5//—————————————-Ogni nuovogiorno ripristino l’operatività (tradeON = 1). Se vuoi puoi anche stabilire una diversa condizione per ripartire, magari attendere un’intera giornata, ecc…
1 user thanked author for this post.
10/22/2021 at 8:54 AM #180131 -
AuthorPosts
Find exclusive trading pro-tools on