impedire al sistema di continuare a comprare sui massimi.

Viewing 15 posts - 1 through 15 (of 31 total)
  • Author
    Posts
  • #171803 quote
    Steven11
    Participant
    Average

    Buon pomeriggio Roberto, vorrei impedire al sistema di continuare a comprare sui massimi, infatti nelle giornate di ribasso il sistema soffre parecchio entrando in acquisto al minimo rialzo dopo una candela H4 rossa, come potrei rendere il sistema Flat in queste fasi? avevo pensato di porre una condizione da utilizzare esclusivamente a determinati livelli di prezzo come quella di non fare entrare in acquisto il sistema se non ci sono prima almeno 2 candele verdi H4.

    Inoltre è possibile impostare delle aree di acquisto?  ad esempio porre tra le condizioni compra ai minimi di mese scorso da 13770 ?

    Grazie mille.

    #171806 quote
    robertogozzi
    Moderator
    Master

    Per le due candele in H4 ecco (la variabile Cond ti dirà quando ci sono 2 candele H4 rialziste):

    Timeframe(4 hour,UpdateOnClose)
    Cond = summation[2](close > open)
    Timeframe(.....)
    IF Mie CondizioniLong AND Not Onmarket AND Cond THEN
       BUY 1 CONTRACT AT MARKET
    ENDIF

    Per l’altro non capisco:

    • la relazione che dev’esserci tra il minimo del mese scorso e 13770
    • come hai calcolato 13770.

    Puoi provare a spiegarlo in un altro modo?

    #171813 quote
    Steven11
    Participant
    Average

    quindi se io nelle condizioni Cond volessi bloccare il sistema e non fargli più fare operazioni in acquisto per un determinato numero di candele ad un certo livello di prezzo (es. 15800) e poi renderlo di nuovo operativo dopo almeno 2 candele H4 verdi (all’apertura della terza candela entra in acquisto)  come devo fare?

    poi se volessi aggiungere un’altra condizione e cioè fare comprare una volta che il prezzo tocca i minimi di chiusura del mese precedente o i minimi di chiusura della settimana precedente (ma il sistema opera in H4) come devo fare?

    quel valore a cui ti riferivi di 13770 è un livello di prezzo a cui vorrei far comprare al sistema una volta che il livello viene toccato (in pratica un ordine pendente in BUY) anche se è un’ennesima condizione indipendente dalle altre, quindi,  solo (es. a determinati livelli di prezzo tipo massimi storici o di periodo) in alcuni periodi di mercato voglio applicare queste condizioni di “blocco” del sistema come devo fare?

    grazie mille.

    #171831 quote
    robertogozzi
    Moderator
    Master

    Eccolo:

    Timeframe(4 hour,UpdateOnClose)
    Cond = summation[2](close > open)
    Timeframe(.....)
    ONCE TradeON = 1
    // riprendere l'operatività se è rimasta sospesa per 20 candele
    IF Summation[20](TradeON = 0) = 20 THEN
       TradeON = 1
    ENDIF
    IF Mie CondizioniLong AND Not Onmarket AND Cond AND TradeON THEN
       BUY 1 CONTRACT AT MARKET
    ENDIF
    // se a mercato già da 10 candele ed il prezzo raggiunge 15800, chiudere
    // le posizioni e sospendere l'operatività
    IF LongOnMarket AND ((BarIndex - TradeIndex) >= 10) AND (close >= 15800) THEN
       TradeON = 0
    ENDIF

    In merito alla seconda domanda occorre piazzare un ordine BUY (Stop se uil prezzo d’entrata è peggiorativo, Limit se è migliorativo):

    IF close < 13770 THEN             //acquista ad un prezzo maggiore
       BUY 1 CONTRACT AT 13770 STOP
    ELSIF close > 13770 THEN          //acquista ad un prezzo migliore
       BUY 1 CONTRACT AT 13770 LIMIT
    ELSE                              //acquista a mercato
       BUY 1 CONTRACT AT MARKET
    ENDIF

    T’informo che gli ordini pendenti scadono OGNI barra, per cui se vuoi mantenerli attivi per più barre, devi piazzarli di nuovo alla barra successiva.
    T’informo anche che IG (come ogni broker, con limiti più o meno alti) richiede che ci sia una distanza minima da rispettare tra il prezzo attuale e quello d’entrata. Se non si rispetta, la strategia viene interrotta (ovviamente non nel backtest, solo in demo o reale). Devi verificare sul sito o sulla piattaforma di IG qual’è questa distanza, che può variare durante il giorno.

    #171887 quote
    Steven11
    Participant
    Average

    Quindi se il prezzo sarà maggiore o uguale a 15800 verrà applicata la condizione di acquisto solo dopo 2 candele H4 verdi…..se invece il prezzo è minore di 15800 verrà applicato sempre la condizione delle 2 Candele verdi prima di entrare in acquisto? oppure verranno applicate le condizioni precedenti?

    e poi a che righe del sistema devo applicare il codice delle condizione che hai formulato?

    ciao, grazie.

    #171888 quote
    robertogozzi
    Moderator
    Master

    Entra quando ci sono le TueCondizioni + 2 candele H4 rialziste consecutive.

    Sospende tutto dopo 10 candele a mercato (se esce prima di 10 non sospende niente).

    Dopo una sospensione riprende dopo 20 candele d’inattività.

    15800 è un numero che hai indicato tu, non so cosa significhi e come tu l’abbia calcolato.

    #171889 quote
    Steven11
    Participant
    Average

    sospende tutto se il prezzo sarà maggiore o uguale a 15800, 15800 è il massimo storico registrato da Dax30 giorni fa, ma se il prezzo sarà minore di 15800 non dovrebbe sospendere dopo 10 candele o lo fa sempre?  inoltre, scusami ma non sono per niente pratico di programmazione, a che riga devo inserire il copia ed incolla del tuo codice nel sistema che voglio integrare?

    Grazie mille Roberto.

    #171890 quote
    robertogozzi
    Moderator
    Master

    Sospende se il prezzo è > 15800 E sono passate 10 candele.

    Devi aggiungere queste all’inizio del timeframe:

    ONCE TradeON = 1
    // riprendere l'operatività se è rimasta sospesa per 20 candele
    IF Summation[20](TradeON = 0) = 20 THEN
       TradeON = 1
    ENDIF

    po devi aggiungere, alle tue condizioni d’entrata:

    AND TradeON

    e queste dopo l’entrata:

    // se a mercato già da 10 candele ed il prezzo raggiunge 15800, chiudere
    // le posizioni e sospendere l'operatività
    IF LongOnMarket AND ((BarIndex - TradeIndex) >= 10) AND (close >= 15800) THEN
       TradeON = 0
    ENDIF
    #171891 quote
    Steven11
    Participant
    Average

    Roberto in merito al Buy Stop se la posizione è già aperta (mi hai detto che ad ogni barra “scade” l’ordine pendente pre-inserito) come faccio a reinserire il Buy Stop alla candela successiva?

    #171897 quote
    robertogozzi
    Moderator
    Master

    Basta che gli metti le condizioni ancora valide e gli fai eseguire BUY di nuovo.

    #171898 quote
    Steven11
    Participant
    Average

    perdonami non ho capito tecnicamente se la posizione già è aperta devo chiudere e riaprire?

    #171901 quote
    robertogozzi
    Moderator
    Master

    Tu metti un ordine pendente per entrare a mercato,

    Se è già entrato perché piazzarlo di nuovo?

    #171931 quote
    Steven11
    Participant
    Average

    Buon pomeriggio Roberto ho provato ad integrare i tuoi codici appena formulati con il sistema che avevo, ma mi dà errore alla riga 24 (timeframe…..), per cortesia puoi verificare se l’integrazione che ho fatto è corretta nell’inserimento delle righe, ma dubito che sia così:) infatti ho sbagliato di sicuro qualcosa.

    Inoltre se cortesemente puoi correggerlo e testarlo.

    Grazie mille.

    #171935 quote
    robertogozzi
    Moderator
    Master

    Se lo pubblichi cerco di aiutarti.

    #171936 quote
    Steven11
    Participant
    Average

    oh scusami sono fuso 🙂 avevo dimenticato di pubblicarlo.

    // Definizione dei parametri del codice
    
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    t1 = (OpenDayOfWeek = 1) AND (Time >= 010000) AND (Time <= 210000)
    t2 = (OpenDayOfWeek = 2) AND (Time >= 010000) AND (Time <= 210000)
    t3 = (OpenDayOfWeek = 3) AND (Time >= 010000) AND (Time <= 210000)
    t4 = (OpenDayOfWeek = 4) AND (Time >= 010000) AND (Time <= 210000)
    t5 = (OpenDayOfWeek = 5) AND (Time >= 010000) AND (Time <= 170000)
    
    x1 = (OpenDayOfWeek = 1) AND (Time = 240000)
    x2 = (OpenDayOfWeek = 2) AND (Time = 240000)
    x3 = (OpenDayOfWeek = 3) AND (Time = 240000)
    x4 = (OpenDayOfWeek = 4) AND (Time = 240000)
    x5 = (OpenDayOfWeek = 5) AND (Time = 210000)
    
    //
    If OnMarket AND (x1 OR x2 OR x3 OR x4 OR x5) THEN
    SELL AT MARKET
    EXITSHORT AT MARKET
    ENDIF
    
    Timeframe(4 hour,UpdateOnClose)
    Cond = summation[2](close > open)
    Timeframe(…..)
    ONCE TradeON = 1
    
    // riprendere l’operatività se è rimasta sospesa per 20 candele
    IF Summation[20](TradeON = 0) = 20 THEN
    TradeON = 1
    ENDIF
    
    // Condizioni per entrare su posizioni long
    L1 = t1 OR t2 OR t3 OR t4 OR t5
    L2 = Not OnMarket
    
    indicator1 = DonchianChannelDown[20]
    c1 = (close <= indicator1)
    indicator2 = Stochastic[50,1](close)
    c2 = (indicator2 <= 78)
    c3 = (close <= close[20])
    
    IF c1 OR c2 OR c3 OR (L1 AND L2) AND Cond AND TradeON THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // se a mercato già da 10 candele ed il prezzo raggiunge 15800, chiudere
    // le posizioni e sospendere l’operatività
    IF LongOnMarket AND ((BarIndex – TradeIndex) >= 10) AND (close >= 15800) THEN
    TradeON = 0
    ENDIF
    
    IF close < 13770 THEN //acquista ad un prezzo maggiore
    BUY 1 CONTRACT AT 13770 STOP
    ELSIF close > 13770 THEN //acquista ad un prezzo migliore
    BUY 1 CONTRACT AT 13770 LIMIT
    ELSE //acquista a mercato
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // Stop e target
    SET STOP PLOSS 141 //529 //398//398
    SET TARGET PPROFIT 271 //395
Viewing 15 posts - 1 through 15 (of 31 total)
  • You must be logged in to reply to this topic.

impedire al sistema di continuare a comprare sui massimi.


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
Steven11 @steven11 Participant
Summary

This topic contains 30 replies,
has 2 voices, and was last updated by robertogozzi
4 years, 7 months ago.

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