Roberto la riga 18 potrebbe essere questa????
StopLoss = tradeprice - (80 * pipsize)
Dovrebbe andare bene magari spostata subito dopo la 19 (cioè scambi le due righe, la 18 diventa 19 e viceversa), però non so se TRADEPRICE è già valorizzato subito all’esecuzione del BUY e prima che la strategia sia eseguita completamente. La logica è corretta.
Devi fare un pò di prove e con GRAPH lo vedi.
Ad ogni modo quando un ordine è a mercato TRADEPRICE è uguale a CLOSE, magari salvo qualche decimo di pip per slippage o ritardo di decimi di secondo nell’esecuzione dell’ordine.
Roberto, ho fatto un po di prove, ma non va.
Ho provato a cambiare le righe che te mi hai suggerito, ma nulla.
è come se ci fosse uno stop loss dinamico che cambia a ogni chiusura di candela
L’ho provato sul DAX a 15 minuti e funziona, come puoi vedere dalle immagini.
Ha uno SL iniziale e all’ultima candela della sera lo aumenta di 30 punti.
Non so che dirti, prova ad esportare la strategia (invece di fare il copia e incolla) ed allegala, magari c’è qualche errore.
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Impedisce al sistema di creare nuovi ordini per entrare a mercato o aumentare la taglia della posizione prima dell'orario specificato
noEntryBeforeTime = 080000
timeEnterBefore = time >= noEntryBeforeTime
// Impedisce al sistema di piazzare nuovi ordini per entrare a mercato o aumentare la taglia della posizione dopo l'orario indicato
noEntryAfterTime = 220000
timeEnterAfter = time < noEntryAfterTime
// Condizioni per entrare su posizioni long
indicator1 = MACDline[10,26,9](close)
indicator2 = ExponentialAverage[9](indicator1)
c1 = (indicator1 CROSSES OVER indicator2)
IF c1 AND timeEnterBefore AND timeEnterAfter THEN
StopLoss = tradeprice - (275 * pipsize)
set stop loss stoploss
BUY 1 CONTRACT AT MARKET
ENDIF
// Condizioni per uscire da posizioni long
indicator3 = ExponentialAverage[85](close)
c2 = (close CROSSES UNDER indicator3)
IF c2 THEN
SELL AT MARKET
ENDIF
//set stop ploss 275
IF time = 220000 AND OnMarket THEN
IF close > (StopLoss + (30 * pipsize)) THEN
StopLoss = StopLoss + (30 * pipsize)
SET STOP LOSS StopLoss
ENDIF
ENDIF
graph stoploss
Roberto allego la strategia. deve avere uno stop loss inizaile di 275 punti, ma non riesco a farla funzionare.
è una strategia su dax a 60 minuti
Le righe 17-21 devono essere
IF c1 AND timeEnterBefore AND timeEnterAfter AND not OnMarket THEN
BUY 1 CONTRACT AT MARKET
StopLoss = tradeprice - (275 * pipsize)
set stop loss stoploss
ENDIF
per due motivi:
- AND Not OnMarket verifica che tu non sia già in posizione, anche se non ne apre un’altra potrebbe comunque variare lo Stop Loss in quanto C1 potrebbe continuare ad essere valida
- TRADEPRICE è valorizzato solo DOPO che il BUY è stato eseguito (ovviamente, in quanto prima dell’acquisto il sistema NON può conoscere il prezzo d’ingresso)