Eseguire un ordine e fare una pausa

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #76845 quote
    ironshirow
    Participant
    Average

    Ciao,

    Qualcuno può fornirmi il codice per attendere x barre dopo la conclusione  di un ordine in modo tale di evitare di fare ordini che si aprono e che si chiudono uno dopo l’altro anche se ci sono le condizioni?

    Grazie

    #76846 quote
    papero76
    Participant
    Senior

    ciao in pratica non è chiara la tua domanda

    comunque devi attendere X barre dopo un ingresso a mercato (long o short) dovresti

    1 iniziare il conteggio delle barre da ingresso a mercato

    CONTEGGIOBARRE= BARINDEX-TRADEINDEX

    CONDIZIONE PER CALCOLO E METTERE USCITA A MERCATO

    IF CONTEGGIOBARRE=5 (ad esempio ho inserito 5 barre) AND (altrecondizioni per uscita long o short) THEN
    sell 1 contracts al market ///se vuoi vendere un long
    endif

    SPERO DI ESSERE STATO CHIARO

    SALUTI

    #76849 quote
    ironshirow
    Participant
    Average

    Ciao,

    Grazie ma io avrei bisogno del contrario ovvero dopo che eseguo un ordine vorrei fare una pausa prima di rientrare a mercato.

    Spero di essere stato chiaro.

    Ciao

    #76862 quote
    robertogozzi
    Moderator
    Master

    Devi innanzitutto inzializzare un contatore (il nome della variabile è ininfluente, puoi anche chiamarla X o ABCD, basta non sia un nome già utilizzato) con:

    ONCE Contatore = 0

    Poi devi iniziare a contare quando un’operazione viene chiusa, come si fa? Basta verificare che tu NON sia  a mercato adesso, ma tu lo sia stato la barra precedente, così saprai che l’operazione si è appena conclusa e potrai cominciare a contare:

    IF Not OnMarket AND OnMarket[1] THEN
       Contatore = 1
    ENDIF

    Adesso bisogna incrementare il contatore ad ogni barra in cui NON sei a mercato (purché tu lo sia stato precedentemente, quindi se CONTATORE non sarà 0):

    IF Not OnMarket AND Contatore THEN
       Contatore = Contatore + 1
    ENDIF

    Però queste ultime 3 righe devi metterle subito dopo ONCE o comunque PRIMA di quelle che ho scritto in precedenza, altrimenti la prima volta il contatore parte da 2, anziché da 1.

    A questo punto, dove verifichi le condizioni per entrare a mercato, LONG o SHORT che sia, devi aggiungere la condizione:

    AND Contatore = 0

    In modo da non entrare quando il conteggio è iniziato.

    Se tutto finisse qui, però, dopo la prima operazione NON entreresti più a mercato, perché contatore non torna mai a ZERO. Quindi devi decidere, tu, quando vuoi che torni a 0.

    Puoi farlo ad inizio di ogni giornata con:

    IF IntraDayBarIndex = 0 THEN  //quando siamo alla prima candela del nuovo giorno...
       Contatore = 0              //...azzera il contatore per operare di nuovo
    ENDIF

    oppure puoi decidere di farlo dopo un certo numero, di tua scelta, di barre con:

    IF Contatore = 10 THEN
       Contatore = 0       //azzerare il contatore dopo 10 barre
    ENDIF

    Vedi tu cosa preferisci.

    #76875 quote
    ironshirow
    Participant
    Average

    Ciao Roberto,

    ti ringrazio.

    Ho inserito i codici come li hai descritti ma il sistema continua a comprare di seguito su ogni barra che si crea.

    ONCE Contatore = 0

    IF Not OnMarket AND OnMarket[1] THEN
    Contatore = 1
    ENDIF

    IF Not OnMarket AND Contatore THEN
    Contatore = Contatore + 1
    ENDIF

    IF Contatore = 10 THEN
    Contatore = 0 //azzerare il contatore dopo 10 barre

    ENDIF

    HO messo questi codici prima delle condizioni di entrata.

    è giusto?
    Ciao

    #76877 quote
    robertogozzi
    Moderator
    Master

    Hai aggiunto la condizione

    AND Contatore = 0

    ?

    #76878 quote
    ironshirow
    Participant
    Average

    IF c1 AND Contatore=0 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN

    così, giusto?

    #76883 quote
    robertogozzi
    Moderator
    Master

    Si, prova.

    #76887 quote
    ironshirow
    Participant
    Average

    Provato ma come vedi dallo screen con TF 15 min le operazioni si susseguono

    Schermata-2018-07-27-alle-14.44.30.png Schermata-2018-07-27-alle-14.44.30.png
    #76908 quote
    robertogozzi
    Moderator
    Master

    A me funziona, probabilmente hai fatto qualche errore da altre parti:

    ONCE Contatore = 0
    IF Not OnMarket AND Contatore THEN
       Contatore = Contatore + 1
    ENDIF
    IF Not OnMarket AND OnMarket[1] THEN
       Contatore = 1
    ENDIF
    IF Contatore = 10 THEN
       Contatore = 0        //azzerare il contatore dopo 9 barre
    ENDIF
    c1 = close > average[100](close)
    IF c1 AND Not OnMarket AND Contatore = 0 THEN
       BUY 1 CONTRACT AT MARKET
       set target pprofit 250
       set stop   ploss   180
    ENDIF
    graph Contatore
    graph OnMarket
    graph OnMarket[1]

    questo l’ho provato sul DAX daily, dall’1/1/2018 ad oggi.

    Può darsi che tu metta un target/stop di pochi pips e l’operazione si chiuda nella stessa barra, in questo caso ProOrder non la vede perché gli occorre una barra per verificare che si ONMARKET.

    #76910 quote
    ironshirow
    Participant
    Average

    Ciao Roberto,

    svelato il mistero.

    La mia strategia si chiude nella stessa barra quindi dovrò rinunciare a questa cosa.

    Grazie

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

Eseguire un ordine e fare una pausa


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
ironshirow @ironshirow Participant
Summary

This topic contains 10 replies,
has 3 voices, and was last updated by ironshirow
7 years, 7 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 07/26/2018
Status: Active
Attachments: 1 files
Logo Logo
Loading...