Announcement

Collapse
No announcement yet.

AutoMagicNumber

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

    AutoMagicNumber

    Ciao tutti,
    vorrei condividere un piccolo codice per implementare il calcolo automotaico del magic number negli EA; ogni tanto - per la fretta - mi incasino nel mettere in test demo un EA su molti cross e questoi risolve :05.wink_80_anim_gif
    Semplice da usare (vedi prototipo della funzione) e testato con molte coppie.. ma no tutte.
    Se lasciate il magic a 0 genera un numero legato a cross e timeframe, mettendo un numero negativo lo usa come offset e se il numero è positivo usa l'ìnput utente.
    Giusto i miei 2 cents
    maurizio


    Code:
    // +------------------------------------------------------------------+
    // AutoMagicNumber V 1.01 - (c) Maurizio Neri 2010-2016 +
    // Set Magic Number automatically for currency e timeframe +
    // +------------------------------------------------------------------+
    // { .... +
    // .... +
    // // Compute Magic number if <= 0 and use presetted value +
    // // as offset if negative +
    // if(Magic <= 0) Magic=AutoMagicNumber(Magic); +
    // } +
    // +------------------------------------------------------------------+
    
    int AutoMagicNumber(int z) {
    int x,y;
    // Compute "weight" of Symbol (total value should be < 1000)
    for (x=0; x<6; x++) y = y + x * StrToInteger(StringGetChar(Symbol(),x)-33);
    // Assign magic value adding period * 1000 and offset
    x = y + Period() * 1000 + z;
    return(x);
    }
    //+------------------------------------------------------------------+
    Last edited by cadddami; 10-01-2016, 19:18. Reason: Aggiunta tag CODE.

    #2
    L'idea del magic number automatico non è male.:01.smile_80_anim_gi

    Con la funzione che hai postato, cosa succede se io ho 2 EA sullo stesso simbolo e sullo stesso timeframe?
    Ho guardato molto velocemente la funzione, ma non viene fuori lo stesso magic in questo caso?

    Edit:
    Per scrivere meno codice, non si potrebbe usare il normale ID del grafico?
    Magari troncando ciò che non ci serve...
    Quello è univoco per ogni grafico (anche se hanno in comune simbolo e timeframe).
    Skype: cadddami

    Comment


      #3
      Ciao Damiano,
      l'offset (ovvero il magic impostato manualmente con numero negativo) permette di usareEA diversi sullo stesso timeframe e symbol ; basta impostare il default ad un numero diverso.
      Scusa la mia ignoranza, come si cattura l'ID dfel grafico ? :01.smile_80_anim_gi

      maurizio

      Comment


        #4
        Ma se io imposto il numero di default diverso per poterlo utilizzare, non è un po' come cambiare magic a mano?:40.thinking_80_anim
        Se ad esempio utilizzassi più istanze dello stesso EA (stesso simbolo e timeframe), dovrei cambiare magic di default a tutti, no?

        L'identificativo (ID) è un numero a 18 cifre (quindi di tipo long) che il sistema operativo dà a quella particolare finestra (nel nostro caso il grafico) al momento della sua attivazione.
        Ogni finestra (e quindi grafico) ha il suo anche se hanno in comune simbolo e/o timeframe.
        Nell'MQL4 c'è la funzione ChartID() che ti ritorna l'identificativo del grafico corrente.:01.smile_80_anim_gi
        Skype: cadddami

        Comment


          #5
          Si può fare un encoding del double con questo espediente:


          // calcola una chiave integer per il ChartID
          int sum = 0;
          string str = DoubleToString(ChartID(),20);
          for (int b=0; b<StringLen(str); b++)
          Magic = sum + (b+1)*StringGetChar(str,b);

          Da provare...

          Comment

          Working...
          X