Buonasera a tutti, scusate la domanda che può sembrare banale,
come faccio a sospendere il sistema dopo che ho raggiunto un certo profitto (anche con più trades) od una certa perdita giornaliera?
Per esempio, il mio sistema su timeframe intraday (es:15 minuti), fa 5 trades durante una giornata e raggiunge un profitto totale di 100 € oppure una perdita totale di 50 € alle 16:15.
Quando raggiunge quei valori vorrei che il sistema chiuda tutte le opeazioni in essere e si sospenda fino all’inizio della candela giornaliera successiva (00:00) in cui si riattiva automaticamente.
Quit e strategy profit interrompono il sistema senza riattivarlo.
Qualcuno sa come aiutarmi per favore?
Grazie mille in anticipo
Massimo
Max, non l’ho mai fatto, ma a naso devi usare il parametro STRATEGYPROFIT che ti calcola il profitto fatto sin dal’inizio del tuo sistema.
Quindi quando inizia la tua giornata, per esempio alle 080000, imposti:
IF CURRENTIME > 000000 AND CURRENTIME < 080000 THEN
STRATEGYPROFIT = INIZIO
ENDIF
Poi nella parte di codice che usi per aprire i trade, imposti per esempio che apri l’operazione solo se il tuo guadagno giornaliero non ha superato, per esempio, 100 euro:
IF STRATEGYPROFIT – INIZIO < 100
Capito? praticamente il giochino e’ stabilire tutti i giorni la tua variabile “INIZIO” che registra il guadagno del tuo sistema da quando l’hai fatto partire (tipo 10 mila euro). Poi quando superera’ 10100 euro non apre piu’ operazioni.
Poi devi ricordarti di resettare la variabile “INIZIO” scrivendo:
IF CURRENTIME > 180000 THEN
INIZIO = 0
ENDIF
nel caso la tua giornata finisse alle 18. Perche’ se non la resetti il giorno dopo “INIZIO” sara’ ancora il tuo livello di patrimonio del giorno prima mentre deve sempre essere quello del giorno odierno.
Prova e vedi se funziona
Ciao, Lorenzo, grazie per l’aiuto, ma non ho capito bene,
dove inseriresti i codici che mi hai scritto in questo sistema di “esempio”, considerando ad esempio inizio giornata forex alle 00:01:00 e fine giornata alle 23:59:00?
// condizioni
c1=close>close[1]
c2=close<close[1]
if not longonmarket and c1 then
buy 1 share at market
endif
if longonmarket and c2 then
sell at market
endif
if not shortonmarket and c2 then
sellshort 1 shares at market
endif
if shortonmarket and c1 then
exitshort at market
endif
Attendo tue notizie, grazie
Max
Cosi ti dovrebbe funzionare…
Nelle condizioni di apertura ho sostituito NOT LONGONMARKET e NOT SHORTONMARKET con NOT ONMARKET perche’ senno’ ti si aprono posizioni opposte contemporaneamente e fa un pastrocchio.
Sostituisci 10 con il massimo guadagno che decidi.
IF (CurrentTime = 000000) THEN
INIZIO = STRATEGYPROFIT
ENDIF
// condizioni
c1=close>close[1]
c2=close<close[1]
if not ONMARKET and c1 AND STRATEGYPROFIT – INIZIO < 10 AND (CurrentTime > 000001) AND (CurrentTime < 235959) then
buy 1 share at market
endif
if longonmarket and c2 then
sell at market
endif
if not ONMARKET and c2 AND STRATEGYPROFIT – INIZIO < 10 AND (CurrentTime > 080000) AND (CurrentTime < 235959) then
sellshort 1 shares at market
endif
if shortonmarket and c1 then
exitshort at market
endif
Ciao,
ho testato con backtest e in demo ma non purtroppo non va….bo, non saprei come fare, ho provato anche a sostituire “currenttime” con “time” ma mi da lo stesso risultato, continua a tradare anche oltre il profitto stabilito.
Ho fatto anche una richiesta al supporto di prorealtime, vediamo cosa dicono….poi ti faccio sapere.
Se hai altre idee dimmi pure…
Grazie mille comunque
Massimo
Ciao Lorezo, mi hanno risposto i tecnici di prorealtime, mi hanno scritto:
Il codice che deve mettere all’ inizio :
if intradaybarindex=0 then
trading=1
myprofit=strategyprofit
endif
if strategyprofit-myprofit> 100 or strategyprofit-myprofit< -50 then
trading=0
endif
Poi dove aggiungere la condizione “trading=1 ” nelle sue condizione d’apertura de posizione.
Ho testato e funziona per ora, ha raggiunto 110 $ di profitto e si è fermato, vediamo domani se riparte.
Buona giornata
Maxx
Max ciao. Ottimo.
Accidenti, intradaybarindex mi mancava !
Grazie 😀