INTERRUZIONE SISTEMA

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #137015 quote
    mat024
    Participant
    Junior

    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
    
    #137016 quote
    robertogozzi
    Moderator
    Master

    Occorre verificare, quando un ordine pendente viene piazzato, che il prezzo corrente sia almeno alla distanza minina richiesta dal broker per lo strumento tradato.

    #137047 quote
    mat024
    Participant
    Junior

    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.

    #137053 quote
    robertogozzi
    Moderator
    Master

    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.

    #137060 quote
    mat024
    Participant
    Junior

    WOW perfetto grazie mille ! guardo di modificarla e provo! grazie ancora per la tempestività!

    #137062 quote
    mat024
    Participant
    Junior

    Scusa, ma se metto gli ordini a mercato e poi chiudo la piattaforma il sistema continua a lavorare o viene interrotto?

    #137063 quote
    robertogozzi
    Moderator
    Master

    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.

    #137068 quote
    mat024
    Participant
    Junior

    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.

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.

INTERRUZIONE SISTEMA


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
mat024 @mat024 Participant
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by mat024
5 years, 7 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 06/24/2020
Status: Active
Attachments: No files
Logo Logo
Loading...