Announcement

Collapse
No announcement yet.

Ea da sperimentare

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

    Ea da sperimentare

    Ciao, allego mio nuovo Ea che vi pregherei di verificare in BT perchè non sono sicuro della bontà dei miei dati, sebbene utilizzi Alpari x i BT in demo. Se poi risulta valido, almeno in Bt, vi fornisco volentieri tutti i necessari ragguagli Allego quindi nella cartella sia l'Ea che gli indicatori, in pratica solo due che ho utilizzato sia in versione acquisto sia in versione di chiusura ordini. Nell' EA troverete assemblate varie tecniche di chiusura : on gap che sostituisce lo StopLoss, a un ora predefinita (23,30) oppure al raggiungimento di un basket cumulativo sia in profit che in loss.
    Infine c'è una martingala che si può attivare oppure no . attualmente aggiunge un solo ordine con moltiplicatore 1,4.

    EA _polaris_volty2.1.rar
    Attached Files

    #2
    Ciao, non uso MT4. Puoi darmi una descrizione testuale delle ondizioni di entrata e uscita? Grazie

    Comment


      #3
      EURUSDH4.png


      Da sx verso dx trovi le due linee blu al di sotto del prezzo, condizione di acquisto quando entrambe sono coincidenti e sotto. A destra entrambe le linee rosse sopra, quando coincidono ( 16 /10 ore 20,00) si ha ordine sell.

      Per l'uscita è l'esatto contrario, chiudono un ordine Buy quando si presentano condizioni per un'apertura sell e viceversa per ordini sell.

      ps. la linea cont con i pallini è il Volty stop 2.1 , l'altra è la trendevelope alert.
      Nel riquadro in alto a sin. trovi i valori dei buffer di riferimento .
      Last edited by gianca53; 02-12-2015, 22:29.

      Comment


        #4
        Ciao, molto interessante, l'hai mai provato su TF inferiori?
        ... Il Vero Lusso è il Tempo...

        Comment


          #5
          No. E' un EA sperimentale di fresca data, quindi non ho ancora avuto modo di fare ottimizzazioni alla ricerca delle migliori condizioni di lavoro, tanto meno l'ho provarto su altri TF .

          Comment


            #6
            Domandona per conoscitori di mql . In questo EA il punto di forza è operare con SL =0, però con tale situazione il trailing non mi sembra funzionare a dovere. Quindi la domanda è : esiste un trailing che mi sposti lo stop loss di n pips anche se questo ha un settaggio inziale = a 0 ? oppure con altro metodo ? Oppure è per forza necessario impostarlo , magari a un valore abnorme p.es 1000 pips ?

            Comment


              #7
              Ciao , anche se non sono un conoscitore di mql ti dico quel che so.
              Per prima cosa penso tu utilizzi il triling stop di forex generator, giusto?
              Devo dire che anche io ho dei dubbi sul suo settaggio e funzionamento, per cui ho implementato nell'ea un trailing stop dinamico.
              Questo si attiva solo in profit, per cui penso che lo stop loss lo puoi lasciare = 0.

              trailingstop.JPG

              Comment


                #8
                caspita ottima idea, ma per me intervenire dentro all' ea è impensabile ( causa le mie scarse cognizioni di mql) ho invece trovato e modificato questo blocco che ho inserito in custom code :

                if(Trail_Pips_b>0)
                {
                if(Bid-OrderOpenPrice()>Point*Trail_Pips_b)
                {
                if(OrderStopLoss()<Bid-Point*Trail_Pips_b)
                {
                OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trail_Pips_b,OrderTakeProfit(),0,Green);
                //return(0);
                }
                }
                }

                funziona ma chiude a take profit, io invece vorrei che saltasse di n pips ogni Trail_Pips , settabili a piacere. In pratica un trail con step di n pips .

                Comment


                  #9
                  Parlando da ignorante ad ignorante (di mql), il codice penso sia del tutto sbagliato.
                  Non tiene conto se l'operazione è buy o sell.
                  Se vuoi tenere lo stop loss a zero il controllo sullo stop loss non serve a nulla.
                  Se non vuoi che chiuda a takeprofit lo devi mettere =0 ( o ad un tp molto piu alto) e lasciar lavorare il trailingstop.
                  Te sei bravino con l'utilizzo di forex generator se ricordo bene.
                  Per cui se vuoi ci possiam lavorare assieme e vedere come inserire il mio trailing stop nel programma.
                  In tal modo potrebbe essere sempre utile nel futuro per qualsiasi altro ea.

                  P.s. il computer sul quale ho il forex generator per ora è a pezzi..aspetto di ordinare la ventola e sostituirla, per cui il lavoro sul programma toccherebbe a te se ti va di fare questa cosa, fammi sapere.

                  Comment


                    #10
                    Ok , a me va bene , quando vuoi mandami il listato che provo ad inserirlo in un custom .
                    nel frattempo ho utilizzato quest'altro che sembra andare meglio; in due variabili esterne ho inserito il trailingstop e il trailing step settabili a piacere.
                    Ps Non è ovviamente farina del mio sacco, ma a furia di insistere e provare ... chissà mai che imparo anch'io il mql, alla mia veneranda età e con tutt'altra provenienza tecnica (ero chimico)

                    x Buy

                    if (OrderType() == OP_BUY)
                    if ((Bid - OrderOpenPrice()) > (eTrailingStop_b * Point))
                    if (OrderStopLoss() < Bid - (eTrailingStop_b + eTrailingStep_b - 1) * Point) {
                    OrderModify(OrderTicket(), OrderOpenPrice(), Ask - eTrailingStop_b * Point, OrderTakeProfit(), 0, Green);
                    // return;
                    }
                    Last edited by gianca53; 04-12-2015, 07:59.

                    Comment


                      #11
                      Allego nuova versione nella quale ho aggiunto un trail stop selezionabile e l'opzione "a ogni barra oppure a minuti ", in quest'ultimo caso si può selezionare da 0 a n minuti.
                      Con il trail stop si ha un effetto filtro notevole sul "reddito " magari a vantaggio di un minore DD. Tutto il resto uguale .
                      Ps dimenticavo in fondo all'EA trovate il Max_ loss ( buy e sell) ammesso , perchè non sempre la chiusura su indicatore è puntuale, però non stringetelo troppo altrimenti ne soffre la redditività.

                      Polaris_Volty+Envelope__2rec_D4.mq4
                      Attached Files

                      Comment


                        #12
                        In attesa di qualche commento o suggerimento... allego BT con la versione sopra e 10 minuti di "latenza" .

                        D4_No trail 10 min_EU H4.rar

                        Comment


                          #13
                          Con l'intento di migliorare l'Ea di cui sopra , sto tentando di applicare una tecnica vista su un altro forum, ovvero del lotto frazionato. Ovviamente il tutto applicato tramite Forex Ea generator, quindi ho scomposto il listato di origine TT in blocchi utili x EAGen, e fin qui tutto bene . il problema sorge in fase di compilazione nel quale mi risulta un solo errore: 'CustomIf55' - some operator expected , che non riesco in nessun modo a risolvere. Se qualche programmatore dà un occhio gli sarei veramente riconoscente .
                          Allego Mql4, listato dello stesso, bozza di origine TT e schema EA Generator (da cui deriva il mql4 ).

                          lotto variabile.rar
                          Attached Files

                          Comment


                            #14
                            Oppure , parte del listato, dove comunque c'è l'errore di cui sopra.
                            PHP Code:
                            //-------------------------------------------------------------
                            // Etasoft Inc. Forex EA and Script Generator version 6.0 EA
                            //-------------------------------------------------------------
                            // Keywords: MT4, Forex EA builder, create EA, expert advisor developer

                            #property copyright "Copyright © 2014-2015, Etasoft Inc. Forex EA Generator v6.0"
                            #property link "http://www.forexgenerator.com/"

                            #include <stdlib.mqh>
                            #include <WinUser32.mqh>

                            // exported variables


                            // local variables
                            double PipValue=1// this variable is here to support 5-digit brokers
                            bool Terminated false;
                            string LF "\n"// use this in custom or utility blocks where you need line feeds
                            int NDigits 4// used mostly for NormalizeDouble in Flex type blocks
                            int ObjCount 0// count of all objects created on the chart, allows creation of objects with unique names
                            int current 0// current bar index, used by Cross Up, Cross Down and many other blocks
                            int varylots[101]; // used by Buy Order Varying, Sell Order Varying and similar

                            datetime BarTime14 0;
                            double MyLots,
                            AllowedLots,
                            MaxLots,
                            MinLot,
                            StopValue,
                            TickValue;
                            int RightLots,Lots_Fractional;
                            extern string S2 ="Money Management Method: 1 =Fixed Lots ; 2 =Fixed Percent ; 3 =Fixed Fractional ";
                            extern int Money_Management_Method=1;
                            extern double Fixed_LotSize=1.00;
                            extern double Fixed_Percent_Risk=1.00;
                            extern double Fractional_Lot=1.00;
                            extern double Fractional_Capital=10000.00;
                            extern double StopLoss=130;
                            extern double TP_b=150;
                            extern double TP_s=150;


                            extern string s8="---Reg bar filter ----------";
                            extern int N_Bar_Open=8;
                            extern double Delta_Pips_RL_b=0.0020;
                            extern double Delta_Pips_RL_s=0.0020;


                            int init()
                            {
                            NDigits Digits;

                            if (
                            falseObjectsDeleteAll(); // clear the chart


                            Comment(""); // clear the chart
                            return (0);
                            }

                            // Expert start
                            int start()
                            {
                            if (
                            Bars 10)
                            {
                            Comment("Not enough bars");
                            return (
                            0);
                            }
                            if (
                            Terminated == true)
                            {
                            Comment("EA Terminated.");
                            return (
                            0);
                            }

                            OnEveryTick13();
                            return (
                            0);
                            }

                            void OnEveryTick13()
                            {
                            PipValue 1;
                            if (
                            NDigits == || NDigits == 5PipValue 10;

                            OncePerBar14();
                            CustomCode53();

                            }

                            void OncePerBar14()
                            {

                            if (
                            BarTime14 Time[0])
                            {
                            // we have a new bar opened
                            BarTime14 Time[0]; // keep the new bar open time
                            CustomCode56();

                            }
                            }

                            void CustomCode56()
                            {
                            AllowedLots=(AccountFreeMargin()* Fixed_Percent_Risk/10);
                            if (
                            Digits==|| Digits==4)
                            {
                            TickValue=MarketInfo(Symbol(),MODE_TICKVALUE)/100;
                            }
                            else
                            {
                            TickValue=MarketInfo(Symbol(),MODE_TICKVALUE);
                            }
                            StopValue=StopLoss*TickValue;
                            MinLot=MarketInfo(Symbol(),MODE_MINLOT);
                            MaxLots=MarketInfo(Symbol(),MODE_MAXLOT);
                            RightLots=MathRound(AllowedLots/StopValue);
                            Lots_Fractional=NormalizeDouble(AccountFreeMargin( )/Fractional_Capital,0);

                            CustomIf47();
                            CustomIf30();
                            CustomIf48();

                            }

                            void CustomIf47()
                            {
                            if (
                            Money_Management_Method==1)
                            {
                            CustomCode44();

                            }
                            }

                            void CustomCode44()
                            {
                            MyLots=Fixed_LotSize
                            CustomIf55
                            ();
                            CustomIf54();

                            }

                            void CustomIf55()
                            {
                            if (-(
                            iCustom(NULL,0,"RegressionLine_pendenza_m2",0,240 ,N_Bar_Open ,0,0,1,0,0)-iCustom(NULL,0,"RegressionLine_pendenza_m2",0,240N_Bar_Open0,0,1,1,0))>Delta_Pips_RL_s)
                            {

                            }
                            }

                            void CustomIf54()
                            {
                            if (
                            iCustom(NULL,0,"RegressionLine_pendenza_m2",0,240 ,N_Bar_Open,0,0,1,0,0)-iCustom(NULL,0,"RegressionLine_pendenza_m2",0,240N_Bar_Open,0,0,1,1,0)>Delta_Pips_RL_b)
                            {

                            }
                            }

                            void CustomIf30()
                            {
                            if (
                            Money_Management_Method==2)
                            {
                            CustomCode32();

                            }
                            }

                            void CustomCode32()
                            {
                            if ((
                            RightLots>=MinLot) || (RightLots<=MaxLots))
                            {
                            MyLots=(RightLots*MinLot);
                            }
                            if (
                            RightLots>MaxLots)
                            {
                            MyLots=MaxLots;
                            }
                            if (
                            RightLots<MinLot)
                            {
                            Print(
                            "No margin for open position. Decrease Stop level or increase Risk Percent.");
                            return(
                            0);
                            }


                            CustomIf55();
                            CustomIf54();

                            }

                            void CustomIf48()
                            {
                            if (
                            Money_Management_Method==3)
                            {
                            CustomCode45();

                            }
                            }

                            void CustomCode45()
                            {
                            {
                            if (
                            Lots_Fractional<1)
                            {
                            Lots_Fractional=1;
                            }
                            MyLots=NormalizeDouble(Lots_Fractional*Fractional_ Lot,2);
                            }

                            CustomIf55();
                            CustomIf54();

                            }

                            void CustomCode53()
                            {


                            }



                            int deinit()
                            {
                            if (
                            falseObjectsDeleteAll();


                            return (
                            0);

                            Comment


                              #15
                              Ops non sono un programmatore, ci sto dando uno sguardo.
                              Ti farò sapere.

                              Comment

                              Working...
                              X