Announcement

Collapse
No announcement yet.

EA fractals MTF

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

    EA fractals MTF

    Ciao a tutti
    sto provando a fare un ea sul breakout con fractal MTF ma mi sono bloccato diciamo sulla parte principale, cioè il fractal
    Premetto che non sono esperto, ma da quando faccio trading ho sempre provato a fare piccole cose più che altro per imparare sempre qualcosa in più anche attraverso l'aiuto nei vari forum.
    detto questo vengo al problema:

    screen.JPG

    il fractal ha due buffer, fractalUP e fractalDOWn
    quello che vorrei fare è entrare sulla candela successiva alla rottura della linea del fractal.
    il problema è che come vedete alcuni fractal sono molto precedenti e io non so come fare per poter tenere quel valore ed utilizzarlo nel caso in cui ci fosse il breakout

    quello che ho provato a fare io è questo:
    BUY
    Code:
    if(Bid>fractalUp && Open[0]>fractalUp && Open[1]<fractalUp && Close[1]>fractalUp && Close[2]<fractalUp)
    non so se è giusto a livello tecnico, ma a livello di logica(probabilmente la mia) mi sembra corretto.
    controllo che la nuova candela sia superiore al fractal,
    la candela della rottura controllo che la open sia sotto il fractal e la close sopra
    e infine controllo che la candela prima ancora sia sotto al fractal(probabilmente questo controllo non serve)

    il problema è che ovviamente fractalUP non ha valore
    come posso nel momento in cui il fractal si concretizza prendere quel valore e utilizzarlo nella if per entrare in buy/sell??

    mi scuso per la lunghezza, spero di esser stato chiaro ad esprimermi e spero in un aiuto

    grazie a tutti

    #2
    Per prendere il valore del Fractal, puoi utilizzare l'apposita funzione dell'MQL4 chiamata iFractal().:01.smile_80_anim_gi

    Esempio pratico:
    Code:
    double fractalUp0=iFractal(Symbol(),0,MODE_UPPER,0);
    double fractalUp1=iFractal(Symbol(),0,MODE_UPPER,1);
    double fractalUp2=iFractal(Symbol(),0,MODE_UPPER,2);
    
    if(Bid>fractalUp0 && Open[0]>fractalUp0 && Open[1]<fractalUp1 && Close[1]>fractalUp1 && Close[2]<fractalUp2)
    Ovviamente è solo un esempio...
    Skype: cadddami

    Comment


      #3
      grazie per la risposta cadddami
      ma credo di non esser stato chiaro io

      io utilizzo https://www.mql5.com/en/code/downloa...TF_Fractal.mq4
      il TF in cui mi trovo è m1 mentre il fractal mtf è su m5
      avevo gia provato a fare anche con questo mtf upper 0 1 e 2 ma non succede nulla, credo perchè in realtà quando esegue la if nel valore fractalUp non ci sia nulla

      Comment


        #4
        Quello effettivamente non è il Fractal di default della MT4.
        Quello è un indicatore personalizzato.
        E per gli indicatori personalizzati si usa la iCustom().
        Ma a parte questo, la logica di fondo non cambia.

        Esempio di codice nel tuo caso:
        Code:
        //Parametri esterni...
        extern int     Fractal_Timeframe                = 0;
        extern int     Maxbar                           = 2000;
        extern color   Up_Fractal_Color                 = Red;
        extern int     Up_Fractal_Symbol                = 108;
        extern color   Down_Fractal_Color               = Blue;
        extern int     Down_Fractal_Symbol              = 108;
        extern bool    Extend_Line                      = true;
        extern bool    Extend_Line_to_Background        = true;
        extern bool    Show_Validation_Candle           = true;
        extern color   Up_Fractal_Extend_Line_Color     = Red;
        extern int     Up_Fractal_Extend_Width          = 0;
        extern int     Up_Fractal_Extend_Style          = 2;
        extern color   Down_Fractal_Extend_Line_Color   = Blue;
        extern int     Down_Fractal_Extend_Width        = 0;
        extern int     Down_Fractal_Extend_Style        = 2;
        //----
        
        double fractalUp0=iCustom(Symbol(),0,"MTF_Fractal.ex4","",Fractal_Timeframe,Maxbar,Up_Fractal_Color,Up_Fractal_Symbol,Down_Fractal_Color,Down_Fractal_Symbol,Extend_Line,Extend_Line_to_Background,Show_Validation_Candle,Up_Fractal_Extend_Line_Color,Up_Fractal_Extend_Width,Up_Fractal_Extend_Style,Down_Fractal_Extend_Line_Color,Down_Fractal_Extend_Width,Down_Fractal_Extend_Style,0,0);
        
        double fractalUp1=iCustom(Symbol(),0,"MTF_Fractal.ex4","",Fractal_Timeframe,Maxbar,Up_Fractal_Color,Up_Fractal_Symbol,Down_Fractal_Color,Down_Fractal_Symbol,Extend_Line,Extend_Line_to_Background,Show_Validation_Candle,Up_Fractal_Extend_Line_Color,Up_Fractal_Extend_Width,Up_Fractal_Extend_Style,Down_Fractal_Extend_Line_Color,Down_Fractal_Extend_Width,Down_Fractal_Extend_Style,0,1);
        
        double fractalUp2=iCustom(Symbol(),0,"MTF_Fractal.ex4","",Fractal_Timeframe,Maxbar,Up_Fractal_Color,Up_Fractal_Symbol,Down_Fractal_Color,Down_Fractal_Symbol,Extend_Line,Extend_Line_to_Background,Show_Validation_Candle,Up_Fractal_Extend_Line_Color,Up_Fractal_Extend_Width,Up_Fractal_Extend_Style,Down_Fractal_Extend_Line_Color,Down_Fractal_Extend_Width,Down_Fractal_Extend_Style,0,2);
        
        if(Bid>fractalUp0 && Open[0]>fractalUp0 && Open[1]<fractalUp1 && Close[1]>fractalUp1 && Close[2]<fractalUp2)
        Credo comunque che potresti benissimo utilizzare la funzione iFractal() cambiando il timeframe sul secondo parametro (senza stare ad usare la iCustom()).
        Questo perché l'indicatore personalizzato alla fine non fa proprio altro che usare la iFractal() con un timeframe diverso da quello corrente (cosa che potresti fare anche te nell'EA).

        Altra cosa...
        Ovviamente se il buffer dei segnali buy ha un valore, quello dei sell sarà vuoto e viceversa.
        E questo vale sia per la iFractal() che per la iCustom().:05.wink_80_anim_gif

        Per questo la if non va bene.
        Perché il funzionamento del Fractal è fatto in modo che quando il prezzo rompe un livello, l'indicatore inverte.
        Quindi tu non potresti confrontare il bid con il Fractal della candela zero (perché avrebbe già invertito e il buffer sarebbe vuoto), ma lo potresti fare solo con la candela 1 o 2 o più vecchia man mano che vai avanti col tempo..
        Skype: cadddami

        Comment


          #5
          di nuovo grazie

          ho fatto i cambiamenti che mi hai suggerito, ho messo ifractal con tf a 5
          ho levato il confronto con il bid
          però non riesco ad uscirne, di operazioni non se ne parla proprio

          ho controllato con la finestra dati il valore del fractal quando teoricamente ci sarebbe il breakout del prezzo, ma in quella candela ed anche nella 1 nella 2 ecc il fractal è sempre 0

          mi fa operazioni solamente se metto Close[1]>fractalUp1 e viceversa per il sell, ma cosi mi apre un operazione ad ogni candela


          Comment


            #6
            La tua condizione sembra poter andare bene, ma sembra essere troppo poco restrittiva.:40.thinking_80_anim
            Per restringere un po' il campo in modo che non ti apra operazioni ad ogni candela, devi aggiungerci altre condizioni.
            Esempio:
            Code:
            if(Open[1]<fractalUp1 && Close[1]>fractalUp1)
            Con queste condizioni dovresti essere a posto.
            C'è solo un momento in cui questa condizione è verificata ed è solo sulla candela successiva a quella che rompe il livello.
            Che sarebbe dove a te interessa aprire l'ordine.

            Ricorda che se cambi il timeframe ad una funzione come (ad esempio) la iFractal(), gli indici (l'ultimo parametro) dovranno essere quelli di quel timeframe e non di quello attuale.
            Esempio: la candela 1 di M5 non sempre equivarrà alla candela 1 di M1.:47.nod_80_anim_gif:
            Skype: cadddami

            Comment


              #7
              niente non riesco proprio a capire dove sia il problema, neanche cosi va
              prima di chiedere qui ho fatto diverse prove con diverse condizioni e mi pare che avevo anche già provato quella che mi hai scritto

              ho controllato il codice, ho provato a fare un semplice taglio di medie, e va funziona

              se troverò una soluzione la scriverò sicuramente magari può esser d'aiuto a qualcuno

              grazie caddami

              Comment


                #8
                Bel tread e ottime spiegazioni, anche se la comprensione del linguaggio mql è ancora lontana!
                Un'idea come utilizzare lo stesso indicatore fractal ma impostando la strategia dove il prezzo "tiene" il supporto/resistenza e cavalchi la reazione?
                Esempio: il bid tocca il supporto , si piazza un ordine pendente con offset di alcuni pip con stop loss inserito e trailing stop?
                Grazie in anticipo

                Comment

                Working...
                X