Buoungiorno,
ho un ts che inizia a lavorare alle 8.20 e termina alle 20.
vorrei inserire nel mio ts la seguente variabile:
quando raggiungi un take profit giornaliero cumulativo di 30 pt chiudi operazione e non effettuare altre operazioni fino al giorno successivo.
é possibile ?
Grazie in anticipo.
massimo
All’inizio devi dirgli che all’inizio del giorno (quando IntraDayBarIndex = 0) salvi in una variabile il totale della strategia a quel momento ed introduci una variabile per tradare o meno, sempre da riattivare ogni giorno, con:
ONCE Tradare = 1 //1=tradare 0=non tradare
ONCE Profitto = 0
IF IntraDayBarIndex = 0 THEN
Profitto = StrategyProfit
Tradare = 1
ENDIF
dopodiché converti X pips (30 o quello che tu vorrai) nella valuta del tuo conto, con:
ONCE Massimo = 30 * pointvalue
quindi verifichi a quanto è arrivato il profitto della tua strategia e, se superato il Massimo, metti a 0 la variabile Tradare:
IF (StrategyProfit - Profitto) > Massimo THEN
Tradare = 0
ENDIF
infine, aggiungi alle tue condizioni d’entrata la seguente condizione:
AND Tradare
Non l’ho provato. Fammi sapere.
ok grazie mille mi metto al lavoro
Salve Roberto,
non va,
continua a tradare fino alle 20
Se c’è un’operazione in corso STRATEGYPROFIT non viene aggiornata fino alla chiusura, per cui può essere che sia aperta e quindi non può verificare il Massimo
Si può ovviare con POSITIONPERF che ci da la percentuale di profitto di un’operazione in corso.
Ci studio e nel pomeriggio la posto.
Ciao, prova questo dovrebbe funzionare
Ti ho inserito anche lo stop nel caso ti servisse.
MaxDailyProfitto = 30
MaxDailyLoss = 30
once Trade=1
If intradaybarindex=0 then
MyProfitto=STRATEGYPROFIT
Trade=1
endif
If StrategyProfit>=MyProfitto+MaxDailyProfitto or Strategyprofit<=MyProfitto-MaxDailyLoss then
Trade=0
endif
if Trade=1 and Condizioni then
BUY 1 CONTRACT AT MARKET
endif
Grazie molte
non va lo stesso
mi chiude sempre alle 20
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
DEFPARAM FLATBEFORE = 082000
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
DEFPARAM FLATAFTER = 200000
MaxDailyProfitto = 30
MaxDailyLoss = 30
once Trade=1
If intradaybarindex=0 then
MyProfitto=STRATEGYPROFIT
Trade=1
endif
If StrategyProfit>=MyProfitto+MaxDailyProfitto or Strategyprofit<=MyProfitto-MaxDailyLoss then
Trade=0
endif
// Condizioni per entrare su posizioni long
indicator1 = Average[20](close)
c1 = (close[0] CROSSES OVER indicator1[0])
IF Trade = 1 and c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
indicator2 = Average[20](close)
c2 = (close[0] CROSSES UNDER indicator2[0])
IF Trade =1 and c2 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Stop e target
//SET STOP %LOSS 3
//SET TARGET PPROFIT 60*pointvalue
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
DEFPARAM FLATBEFORE = 082000
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
DEFPARAM FLATAFTER = 200000
MaxDailyProfitto = 30
MaxDailyLoss = 30
once Trade=1
If intradaybarindex=0 then
MyProfitto=STRATEGYPROFIT
Trade=1
endif
If StrategyProfit>=MyProfitto+MaxDailyProfitto or Strategyprofit<=MyProfitto-MaxDailyLoss then
Trade=0
endif
// Condizioni per entrare su posizioni long
indicator1 = Average[20](close)
c1 = (close[0] CROSSES OVER indicator1[0])
IF Trade = 1 and c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
MaxDailyProfittoS = 30
MaxDailyLossS = 30
once TradeS=1
If intradaybarindex=0 then
MyProfittoS=STRATEGYPROFIT
TradeS=1
endif
Bisogna distinguere le operazioni LONG dalle Short
Copia questo sicuramente ti funziona.
If StrategyProfit>=MyProfittoS+MaxDailyProfittoS or Strategyprofit<=MyProfittoS-MaxDailyLossS then
TradeS=0
endif
// Condizioni per entrare su posizioni short
indicator2 = Average[20](close)
c2 = (close[0] CROSSES UNDER indicator2[0])
IF TradeS =1 and c2 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
Bisogna distinguere le operazioni LONG dalle Short
Copia questo sicuramente ti funziona.
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
DEFPARAM FLATBEFORE = 082000
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
DEFPARAM FLATAFTER = 200000
MaxDailyProfitto = 30
MaxDailyLoss = 30
once Trade=1
If intradaybarindex=0 then
MyProfitto=STRATEGYPROFIT
Trade=1
endif
If StrategyProfit>=MyProfitto+MaxDailyProfitto or Strategyprofit<=MyProfitto-MaxDailyLoss then
Trade=0
endif
// Condizioni per entrare su posizioni long
indicator1 = Average[20](close)
c1 = (close[0] CROSSES OVER indicator1[0])
IF Trade = 1 and c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
MaxDailyProfittoS = 30
MaxDailyLossS = 30
once TradeS=1
If intradaybarindex=0 then
MyProfittoS=STRATEGYPROFIT
TradeS=1
endif
If StrategyProfit>=MyProfittoS+MaxDailyProfittoS or Strategyprofit<=MyProfittoS-MaxDailyLossS then
TradeS=0
endif
// Condizioni per entrare su posizioni short
indicator2 = Average[20](close)
c2 = (close[0] CROSSES UNDER indicator2[0])
IF TradeS =1 and c2 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
Grazie ancora…ma non va
allego immagine…
fa una prima operazione poi la chiude e ne riapre una in senso opposto che chiude alle 20
Appena posso controllo mi sembra di vedere che è sul DAX 5 minuti.
Aggiungi in fondo al tuo codice:
graph Profitto
graph StrategyProfit
graph StrategyProfit[1]
graph OnMarket
graph PositionPerf
Profitto deve essere il valore ad inizio giornata della STRATEGYPROFIT, come ho detto all’inizio.
Fatto il backtest vedrai, nell’apposito riquadro delle variabili, i valori suddetti. Verificali e vedi cosa può esserci che non va.
Se non riesci a vederlo, l’unica soluzione è postare il codice in modo da poterlo eseguire ed osservare cosa non va.
Se guardi l’ immagine puoi notare che funziona devi distinguere le operazioni Long dalle Short
Se guadagni o perdi 30 euro il sistema non fà più operazioni nella giornata.
Gardando la data del 6 marzo 2020 apre la prima operazione Short e perde 18.80 euro ne fà un’altra in giornata sempre Short con guadagno di 157.80 euro perchè il sistema non si blocca non avendo superato la perdita di 30 Euro, prova a modificare il “MaxDailyLossS” e metti 10 vedrai che la seconda operazione sparisce.
Come puoi notare in questa immagine la seconda operazione non c’è più.