Announcement

Collapse
No announcement yet.

MarketInfo(PAIR[i],MODE_TICKVALUE)

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

    MarketInfo(PAIR[i],MODE_TICKVALUE)

    Buongiorno traders, sono alle prese con un ritorno 0 di MarketInfo(PAIR[i],MODE_TICKVALUE). Preciso che questo accade solo quando lancio lal tester strategy. Ho visto sul forum di MQL4 che è un problema ricorrente negli anni e non ancora completamente risolto, almeno così sembra. A me serve per calcolare il LOTS dato un valore di Euro per le varie valute. Qualcuno ha trovato una soluzione a questo bug?
    Grazie in anticipo.

    #2
    Solitamente quando si usa MarketInfo() con lo strategy tester e si ottiene il valore zero o un errore,
    questo è dovuto al fatto che Metatrader NON ha più in memoria i valori correnti dei Lots del broker su cui ci si è collegati l'ultima volta.

    La soluzione è

    - usare Metatrader4 collegato al server del broker

    - oppure scollegato dal broker seguire quanto spiegato qui
    La vita non è un giro di prova, cogli l’attimo..
    Realizzazione per Metatrader4 di trading system, indicatori, pattern grafici, Ottimizzazioni IS-OOS su Forex e CFD, Analisi di Portafoglio .

    Comment


      #3
      Umberto io sono collegato al broker. Specifico che ho uno script che funziona benissimo e non ha problemi. Ho preso lo script e l'ho immesso in un EA che calcola il LOTS quando richiesto da un SELL o BUY. In questo caso, nella MT4 usata come test strategy, mi ritorna l'errore divide zero... etc.

      Comment


        #4
        e allora NON usare MarketInfo,
        metaquote language 4 offre anche altre funzioni, come ad esempio SymbolInfoDouble()

        naturalmente costruendo da te quello che vuoi utilizzando questa funzione, che è diversa da MarketInfo()
        La vita non è un giro di prova, cogli l’attimo..
        Realizzazione per Metatrader4 di trading system, indicatori, pattern grafici, Ottimizzazioni IS-OOS su Forex e CFD, Analisi di Portafoglio .

        Comment


          #5
          So quale è il problema.
          Mi ha dato talmente tante rogne in passato che ora me lo sono appuntato per bene.

          La funzione MarketInfo(Symbol(),MODE_TICKVALUE) ritorna 0 alla prima chiamata effettuata su un nuovo grafico.
          Questo significa che solo dalla seconda chiamata in poi la funzione restituirà il giusto valore.

          Se io per la prima volta richiamo la funzione all'interno di un algoritmo che calcola i lotti (dove sicuramente ci sarà la divisione per il valore del tick), sarà come effettuare una divisione per zero (impossibile).

          La soluzione è semplice...
          Richiama la MarketInfo(Symbol(),MODE_TICKVALUE) nella OnInit().
          In questo modo, tutte le successive chiamate alla funzione avranno il giusto valore.
          Skype: cadddami

          Comment


            #6
            Ringrazio entrambi dei suggerimenti che ho immediatamente provato. Purtroppo continua a non funzionare. Forse per chi ci legge è utile ribadire che questo anomalo comportamento (ritorna zero come TICKVALUE) lo fa solo lanciando il TEST STRATEGY. Invece nel reale ritorna perfettamente il Tickvalue e compra secondo il giusto lotto calcolato. Pazienza, mi inventerò qualcosa di diverso. Credo, però, che questo faccia parte di un bug della MT4.

            Comment


              #7
              Ciao fran,
              sei riuscito a trovare una soluzione al problema?
              Anch'io non riesco ad ottenere il valore del pip durante i backtest.
              Grazie!

              Comment


                #8
                Se stai usando il multiframe, non c'è soluzione. O perlomeno io non l'ho trovata. Dovrebbe invece funzionare se testi una valuta per volta. Poi le variabili sono talmente tante... conviene tentare un diversivo, come dice Umberto, un workaround oppure meglio, farsene una ragione. Si può vivere anche senza il valore preciso del pip. Ciao.

                Comment

                Working...
                X