Announcement

Collapse
No announcement yet.

breackout previous high

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Carbonmimetic
    replied
    buongiorno e grazie...gentilissimo...passo subito le stringhe al mio amico,lo sai che x me è arabo!!
    Buona Giornata
    Enrico

    Leave a comment:


  • umbertosm
    replied
    ciao Carbonmimetic, di seguito i pezzi di codice per risolvere i punti che hai chiesto.... naturalmente sono pezzi di codice, vanno poi inseriti per bene nella strategia.


    PHP Code:
    bool calcola_minimo6barre false;
    double minimo6barre_riferimento// il valore minimo delle ultime 6 barre partendo dalla barra [1] appena conclusa


    void OnStart()
    {
    //---

    // In Metatrader4 la barra corrente è la barra [0], quella precedente e quindi più antica rispetto alla barra attuale è la barra [1], e così via, più si va nel passato e più aumenta il numero di barra
    //
    // 1 ) mi trovo sulla barra attuale (quella del buy)...l'ea deve vedere che nelle 10 barre precedenti nessuna barra abbia HIGH>HHV30-1...ovvero che nessuna barra abbia HIGH maggiore di HHV30 riferito alla barra precedente.
    // Quindi: la barra prima del buy è la barra -1 e deve essere HIGH-1<HHV-2...la barra -2 deve essere HIGH-2<HHV-3...etc etc

    bool confronto10barre_conHHV30 true;
    for(
    int i=1i<=10i++)
    {
    double valore_HHV30 iCustom(NULL,0,"HHVIndic",0,i+1); // valore dell'indicatore HHVIndic relativo al buffer "0" (SetIndexBuffer(0,Segnale,INDICATOR_DATA)) sulla barra [i+1]
    double massimo10barre iHighest(NULL,0,MODE_HIGH,10,i); // valore del massimo delle 10 barre partendo dalla barra [i]
    if(massimo10barre valore_HHV30confronto10barre_conHHV30 true;
    }
    if(
    confronto10barre_conHHV30 == trueannulla_il_buy;


    // 2) altro problema: all'interno di una finestra temporale di 6 barre devo registrare il minor minimo ovvero il LOW più basso...successivamente il tempo scorre..il grafico procede...
    // al momento del buy se in una qualunque delle 13 barre indietro ho anche una sola barra il cui LOW sia minore del valore registrato all'interno di tale finestra, il buy viene annullato.

    // Utilizza una variabile booleana (calcola_minimo6barre) e una variabile double (minimo6barre_riferimento) definite entrambe fuori da OnStart() (a livello globale che quindi rimangono memorizzate ad ogni avvio di barra) e quando decidi che sia il momento per calcolare il minimo delle 6 barre, calcoli 'minimo6barre_riferimento'
    if(calcola_minimo6barre)
    {
    minimo6barre_riferimento iLowest(NULL,0,MODE_LOW,6,1);
    calcola_minimo6barre false// dopo aver calcolato la variabile la poni a false per evitare che ad ogni avvio di barra il minimo rivenga calcolato.
    }
    // Il valore di 'minimo6barre_riferimento' rimane in memoria...

    // Ad avvio della barra per cui hai il segnale BUY, verifichi se puoi davvero aprirlo calcolando la variabile 'minimo13barre'
    double minimo13barre iLowest(NULL,0,MODE_LOW,13,1)
    if(
    minimo13barre minimo6barre_riferimentoannulla_il_buy;


    Leave a comment:


  • Carbonmimetic
    replied
    Ciao Umberto,
    eccomi a chiederti nuovamente lumi:
    1 ) mi trovo sulla barra attuale (quella del buy)...l'ea deve vedere che nelle 10 barre precedenti nessuna barra abbia HIGH>HHV30-1...ovvero che nessuna barra abbia HIGH maggiore di HHV30 riferito alla barra precedente.Quindi: la barra prima del buy è la barra -1 e deve essere HIGH-1<HHV-2...la barra -2 deve essere HIGH-2<HHV-3...etc etc
    allego l'indicatore HHV
    2) altro problema: all'interno di una finestra temporale di 6 barre devo registrare il minor minimo ovvero il LOW più basso...successivamente il tempo scorre..il grafico procede...al momento del buy se in una qualunque delle 13 barre indietro ho anche una sola barra il cui LOW sia minore del valore registrato all'interno di tale finestra, il buy viene annullato.
    confido nel tuo aiuto!!!
    grazie come sempre
    Attached Files

    Leave a comment:


  • Carbonmimetic
    replied
    Ciao Umberto....l'ea adesso si disabilita alla chiusura di tutte le posizioni....non chiedermi cosa ha modificato il mo amico perchè non lo so.....ma x correttezza metto l'ea se mai a qualcuno servisse l'uscita a step per come è stata progettata
    grazie ancora e buona giornata
    Attached Files

    Leave a comment:


  • Carbonmimetic
    replied
    per adesso grazie mille...faccio leggere al mio amico e ti farò sapere l'esito di tali modifiche.
    buona giornata

    Leave a comment:


  • umbertosm
    replied
    ciao,
    ho visto il codice, probabilmente non si verificano le condizioni per cui la funzione ExpertRemove() viene chiamata.

    ad esempio, alla riga 259 si legge

    Code:
    if(CloseEA==1){
    CK_Chiusura_EA();
    }
    subito prima e subito dopo la if devi mettere una Print("CloseEA = "+IntegerToString(CloseEA));
    così leggi il valore e comprendi se davvero CloseEA=1 oppure no.

    °°°°°°°°°°°°°°°°°°°°°°

    Fai la stessa cosa nella definizione della funzione void CK_Chiusura_EA()

    devi stampare i valori PRIMA e DOPO la if
    per sapere quanto valgono
    PositionGetInteger(POSITION_MAGIC)
    così da verificare se vale davvero == MagicN

    e analogamente stampi prima e dopo la if
    il valore di LottiinPancia
    e verifichi se davvero è <0.01


    Code:
    /+------------------------------------------------------------------+
    //| Elimina EA dal grafico |
    //+------------------------------------------------------------------+
    
    void CK_Chiusura_EA()
    {
    if(PositionGetInteger(POSITION_MAGIC) == MagicN && LottiinPancia<0.01)
    {
    Print("EA Tolto x chiusura totale posizini x MagicN: " + IntegerToString(MagicN) );
    ExpertRemove();
    }
    else {
    //Print("CloseEA: " + IntegerToString(CloseEA) + " --- MagicN: " + IntegerToString(MagicN) + " --- LottiinPancia: " + DoubleToString(LottiinPancia));
    }
    }

    Leave a comment:


  • Carbonmimetic
    replied
    Ciao Umberto,
    desidero che l'ea venga disabilitato dopo che ha chiuso tutto.....dalla riga 1027 compare la stringa che dovrebbe permettere ciò....ma non si disabilita.
    HELP
    che dire???grazie
    Attached Files

    Leave a comment:


  • Carbonmimetic
    replied
    grazie ..ma ti faccio scrivere da lui...altrimenti andiamo alle calende greche...

    Leave a comment:


  • umbertosm
    replied
    Un backtest per definizione è sui dati storici, quindi non può essere in real time, cioè in tempo reale che sono i dati storici futuri, incogniti, quindi un EA in real time significa un EA in Live demo o in Live real, con i soldi veri.

    Per fare un backtest con Metatrader4 ci sono decine di tutorial su youtube, basta solo scegliere il Simbolo, il Modello (ogni tick o solo prezzi di apertura), il Periodo: M5

    e naturalmente bisogna avere precaricati su Metatrader4 i dati storici a 5 minuti...





    Leave a comment:


  • Carbonmimetic
    replied
    Ciao Umberto,
    il mio amico dice che c'è la possibilità di far girare il back test in real time ma non riesce sul TF a 5 min..gli esce solo 1H
    esattamente saresti così gentile da spiegare i vari passaggi?
    grazie

    Leave a comment:


  • Carbonmimetic
    replied
    grazie di nuovo anche se non riusciamo a farlo chiudere dove dovrebbe

    Leave a comment:


  • umbertosm
    replied
    double _pip=Point;
    if(Digits==3 || Digits==5)
    {
    _pip=Point*10;
    }

    double ASK = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
    double BID = SymbolInfoDouble(Symbol(), SYMBOL_BID);

    // 1 pip sopra o 1 pip sotto il breakout
    if(ASK <= LLVIndic_72[2] + 1*_pip)
    //oppure
    if(ASK <= LLVIndic_72[2] - 1*_pip)

    Leave a comment:


  • Carbonmimetic
    replied
    Anche Mt4 è costruito sul Bid! ...certo ..ho specificato la Mt5 in quanto lavoriamo su quella

    l'Ask del breakout è il valore del grafico + lo spread...infatti
    a livello di codice come andrebbe impostato?
    metto in copia la riga che ha scritto il mio amico
    Attached Files

    Leave a comment:


  • umbertosm
    replied
    Anche Mt4 è costruito sul Bid!

    le regole e logica scritte sono indipendenti dalla piattaforma.

    il Bid del breakout è il valore che vedi sul grafico.

    l'Ask del breakout è il valore del grafico + lo spread.

    Leave a comment:


  • Carbonmimetic
    replied
    innanzi tutto grazie della celere risposta....
    il grafico della MT5 è costruito sul Bid
    premesso questo...il mio amico che mastica un pò di codice (io zero) non riesce a fare in modo che sia l'ASK ad effettuare il breackout di LLv..esiste un modo si o no?
    ovviamente anche a costo di rimetterci lo spread in quanto se il breackout down viene eseguito con l'ASK è peggiorativo....ma non dimenticarti che sotto le notizie se si allarga lo spread lo stop loss te lo eseguono magari senza che il prezzo si sia spostato
    (p.s. il breackout up x aperuta di posizioni long è stato creato con il superamento del BID...ma non riesce a replicare il contrario come da domanda sopra esposta)

    Leave a comment:

Working...
X