Ciao, mi si è interrotto un sistema sul DAX per la seconda volta, lo utilizzo gia da vari giorni, e tra ieri e oggi mi ha rifiutato per la prima volta due ordini, l’ordine rifiutato mi da il messaggio “Il livello di ordine inserito è troppo vicino al livello corrente del mercato, il livello minimo per questo mercato è 10 punti” . Allego il sistema, come posso risolvere il problema in modo che non mi si ripresenti?
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False
//ORARIO DI ATTIVAZIONE E DISATTIVAZIONE STRATEGIA
//DEFPARAM FlatBefore = 000000
//DEFPARAM flatafter = 220000
//Condizione per chiudere tutte le posizioni ilvenerdi sera alle 20:50 e ripartire appena riaprono i mercati il lunedi
//Operativita = (OpenDayOfWeek > 1 AND OpenDayOfWeek < 5) OR (OpenDayOfWeek = 5 AND time < (210000))
//IF OpenDayOfWeek = 5 THEN //1=lunedi....5=Venerdi
//IF time = (210000) AND OnMarket THEN
//SELL AT MARKET //chiudi i LONG
//EXITSHORT AT MARKET //chiudi gli SHORT
//ENDIF
//ENDIF
//
// Variabili ONCE x ordini acquisto, vendita non a mercato
ONCE NbBarLimitBuy = 1
ONCE NbBarStopSell = 1
// INDICATORI UTILIZZATI
indicator1 = exponentialAverage[22](close) //expo 22 16
indicator2 = average [20] //CALL adattiva[4, 2, 14]
//Variabile per entrare long
c1 = (indicator1 < indicator2)
c7 = AverageTrueRange[20](close) < AverageTrueRange[6][8]
cd = adx[6]>adx[20]
//Variabile per uscire da posizioni long
c2 = (indicator1 CROSSES OVER indicator2)
// Variabile per entrare su posizioni short
c3 = (indicator1 > indicator2)
c8 = AverageTrueRange[16](close) < AverageTrueRange[11](close)[7]
cd1 = adx[5]>adx[18]
dd = di[22]<(9)
// Variabile per uscire da posizioni short
c4 = (indicator1 CROSSES UNDER indicator2)
//Condizione per entrare short
IF NOT OnMarket and c1 and low>low[1] and c7 and cd THEN
MyLimitBuy = close
MyIndex = Barindex
ENDIF
IF Barindex >= MyIndex + NbBarLimitBuy THEN
MyLimitBuy = 0
ENDIF
IF MyLimitBuy > 0 THEN
sellshort 1 SHARES AT myLimitBuy Stop
set stop ploss (193)
//set target pprofit (m)
ENDIF
//Condizione per uscire da posizione short
IF c2 THEN
Mysell = close
exitshort AT Mysell limit
ENDIF
//Condizione x entrare long
IF NOT OnMarket and c3 and close>close[1] and close > high[1] and close > high[2] and c8 and cd1 and dd THEN
MyStopSell = close
MyIndexS = Barindex
ENDIF
IF Barindex >= MyIndexS + NbBarStopSell THEN
MyStopSell = 0
ENDIF
IF MyStopSell > 0 THEN
buy 1 SHARE AT MyStopSell limit
set stop ploss (274)
//set target pprofit (m)
ENDIF
//Condizione x uscire da posizioni long
IF c4 THEN
Myexit = close
sell AT Myexit stop
ENDIF
Occorre verificare, quando un ordine pendente viene piazzato, che il prezzo corrente sia almeno alla distanza minina richiesta dal broker per lo strumento tradato.
ok, ad esempio se la distanza minima è 10 punti, basta cambiare gli ordini di stop in ordini limit oppure devo inserire un comando che gli dica di acquistare o vendere ad un minimo di tot punti per far si che non si interrompa il sistema? se cosi fosse come inserisco il comando nel codice?
Grazie Mille per la risposta.
La riga 63 dovrebbe essere un po’ più complessa:
If close > myLimitBuy then
If abs(close - myLimitBuy) < 10 then
sellshort 1 SHARES AT Market
Else
sellshort 1 SHARES AT myLimitBuy Stop
Endif
Elsif close < myLimitBuy then
If abs(close - myLimitBuy) < 10 then
sellshort 1 SHARES AT Market
Else
sellshort 1 SHARES AT myLimitBuy Limit
Else
sellshort 1 SHARES AT Market
Endif
Non l’ho provato, l’ho scritto dal cellulare.
WOW perfetto grazie mille ! guardo di modificarla e provo! grazie ancora per la tempestività!
Scusa, ma se metto gli ordini a mercato e poi chiudo la piattaforma il sistema continua a lavorare o viene interrotto?
L’AutoTrading continua anche a piattaforma chiusa, che sia giorno lavorativo o festivo.
Se è festivo ovviamente non aprirà posizioni, ma quelle aperte resteranno aperte fono alla riapertura dei mercati.
si si, mi ricordavo che qualche mese fa con un sistema dove avevo messo gli ordini “at market” invece che ordini limit e stop prima della chiusura della piattaforma mi aveva dato il messaggio che quel sistema con gli ordini a mercato sarebbe stato interrotto, cambiai cosi il tipo di ordine e non mi si presento piu il problema. (ma a quanto pare avevo sbagliato qualcosa io o interpretato male il messaggio di errore). Per ora grazie appena provo il tuo codice ti faccio sapere.