Pagina 5 di 5

Re: creare un canele prezzo

Inviato: gio mag 07, 2020 6:23 pm
da Puliexpress
ho fatto un po' un paio di backtest non è male…. entrambi profittevoli… sistemo un po' i TP e SL e faccio altri backtest poi te lo pubblico… ovvio che ho aggiunto dei rafforzativi… vabbè non mi aspetto miracoli da un EA ma è già un buon punto di partenza

Re: creare un canele prezzo

Inviato: sab mag 09, 2020 10:31 am
da Puliexpress
no in effetti non va cosi bene… ma sono come san Tommaso, dovevo picchiarci il naso :mrgreen:

Re: creare un canele prezzo

Inviato: sab mag 09, 2020 10:33 am
da positiveday
Sei sicuro di aver scritto correttamente la zona che non ho messo?
:D

Re: creare un canele prezzo

Inviato: ven mag 15, 2020 4:53 pm
da Puliexpress
sicuro sicuro no... .. ho provato a scrivere questo EA con 2 canali prezzo qualche backtest e sono andati tutti in positivo, per ora, con un buon DD, ma non sono sicuro che lo legga correttamente o se ho scritto una caz….ata. Funzionano correttamente o un canale annulla l'altro? Perché mi da acuni errori.. se mi confermi la correttezza continuo ad effettuare i backtest che poi ti ripubblico

Re: creare un canele prezzo

Inviato: sab mag 16, 2020 9:40 pm
da positiveday
Domani se ci riesco lo guardo. Se entro domani sera non vedi mie, protesta, così mi ricordo.
:lol:

Re: creare un canele prezzo

Inviato: lun mag 18, 2020 6:45 pm
da Puliexpress
no no protestare mai … avresti fatto già fin troppo ;)

Re: creare un canele prezzo

Inviato: lun mag 18, 2020 6:51 pm
da positiveday
Ecco, non ci sono riuscito, sono stato fuori casa tutto il giorno.
:lol:

Re: creare un canele prezzo

Inviato: mar mag 19, 2020 11:59 am
da Puliexpress
mi è venuto un grosso dubbio all'EA scritto precedentemente… non è che devo aggiungere questa funzione perché possa individuare i nuovi massimi e minimi correttamente ? o è una baggianata delle mie?

Codice: Seleziona tutto

    if( TimeSARHL && contatore==true){
    
      
         contatore=false;
    
    
    }
    
      if(TimeSARHL){
    
         contatore=true;
    
    }




    if( TimeSARLH && contatore==true){
    
        
         contatore=false;
    
    
    }
    
      if(TimeSARLH){
    
         contatore=true;
    
    }
          
       }    
          
     

Re: creare un canele prezzo

Inviato: gio mag 21, 2020 11:16 am
da Puliexpress
ci ho messo un po' ma ora forse l'ho fatto corretto

Codice: Seleziona tutto

   if ( Close[2] > sar_2 && Close[1] > sar_1 && 
           sar_2 < sma200_2 && sar_1 > sma200_1 )
      {
         TimeSARLH = Time[1]; // salvo il momento dell'evento
         Print ( "<<<<<<<< SARLH" );
      }
      
      //----------- attendo transizione della SAR da sopra a sotto la media purchè il prezzo sia sotto la SAR nella barra 1 e 2     
      if ( Close[2] < sar_2 && Close[1] < sar_1 &&
           sar_2 > sma200_2 && sar_1 < sma200_1 )
      {
         TimeSARHL = Time[1]; // salvo il momento dell'evento
         Print ( ">>>>>>>> SARHL");
      }
      
      // assegnazione massimo del canale SOLO SE :
      // il momento della transizione TimeSARHL è MAGGIORE di TimeSARLH e se c'è stata una variazione in queste due variabili rispetto al calcolo precedente
      // il test sulle variazioni è utile per non dover ripetere la ricerca ad ogni nuovo prezzo ricevuto, visto che impegan l'esecuzione del programma
      // perchè sia l'iBarShift che iHighest e iLowest sono impegnativi per la piattaforma, inutile ammazzare i backtest
      if ( TimeSARHL > TimeSARLH && TimeSARHL != OLD_TimeSARHL && TimeSARLH != OLD_TimeSARLH )
      {
         OLD_TimeSARHL = TimeSARHL; OLD_TimeSARLH = TimeSARLH; // aggiorno le "OLD così sono a posto subito
         int barra_Start = iBarShift( Symbol(), Period(), TimeSARLH ); // ricerco in quale barra (relativa al momento corrente) è avvenuto il passaggio LH
         
         // di fatto il calcolo successivo è sostanzialmente inutile, in quanto il valore più recente nel tempo è SEMPRE contenuto nella barra 1
         // cioè è stato appena generato dal test più sopra, quindi barra_End conterrà sempre il valore di 1
         int barra_End   = iBarShift( Symbol(), Period(), TimeSARHL ); // ricerco in quale barra (relativa al momento corrente) è avvenuto il passaggio HL
         
         // da questa funzione ottengo la barra che contiene il valore più alto del canale
         int Bar_ChannelMax = iHighest( Symbol(), Period(), MODE_HIGH, barra_Start, barra_End ); // qui si dovrebbe poter mettere 1 al posto di barra_end
         ChannelMax = iHigh ( Symbol(), Period(), Bar_ChannelMax );
         Print ( "ChannelMax : " + DoubleToString ( ChannelMax, Digits ) );
      }
      
      
      
        if ( TimeSARHL < TimeSARLH && TimeSARHL != OLD_TimeSARHL && TimeSARLH != OLD_TimeSARLH )
      {
         OLD_TimeSARHL = TimeSARHL; OLD_TimeSARLH = TimeSARLH; // aggiorno le "OLD così sono a posto subito
         int barra_Start = iBarShift( Symbol(), Period(), TimeSARHL ); // ricerco in quale barra (relativa al momento corrente) è avvenuto il passaggio LH
         
         // di fatto il calcolo successivo è sostanzialmente inutile, in quanto il valore più recente nel tempo è SEMPRE contenuto nella barra 1
         // cioè è stato appena generato dal test più sopra, quindi barra_End conterrà sempre il valore di 1
         int barra_End   = iBarShift( Symbol(), Period(), TimeSARLH ); // ricerco in quale barra (relativa al momento corrente) è avvenuto il passaggio HL
         
         // da questa funzione ottengo la barra che contiene il valore più alto del canale
         int Bar_ChannelMin = iLowest( Symbol(), Period(), MODE_LOW, barra_Start, barra_End ); // qui si dovrebbe poter mettere 1 al posto di barra_end
         ChannelMin = iLow ( Symbol(), Period(), Bar_ChannelMin );
         Print ( "ChannelMin : " + DoubleToString ( ChannelMin, Digits ) );
      }