perché nessuna tick-attualizzazione

 

Publi

perché nessuna tick-attualizzazione

 

Publi

Risultati da 1 a 6 di 6

Discussione: perché nessuna tick-attualizzazione

  1. #1
    Ciao a tutti,

    questo è il mio primo messaggio in questo forum. Alcuni mesi di trading. Alcuni anni di programmazione (pascal, basic e un po c).

    Ma qui, provo a provare e ..... ma non riesco a trovare alcuna soluzione. Così ho provato con un piccolo esempio di S. Kovalyov, Programming in Algorithmic Language, ma anche questo non funziona.

    Ecco un piccolo codice modifio
    -----------INIZIO-----------
    //countiter.mq4
    //Il codice dovrebbe essere usato solo per scopi eduivi.
    //------------------------------------------------ --------------------

    int init ()
    {
    //----
    Avviso (Funzione init () attivata all'avvio);/Avviso

    ritorno;/Esci da init ()
    //----
    ritorno (0);
    }

    int start ()/Funzione speciale inizio()
    {
    int i, Count;/Dichiarazione delle variabili
    for (i = 1; ilt; = 5; i )/Mostra per 5 tick
    {
    Count = 0;/Clearing counter
    while (RefreshRates () == false)/Fino a ...
    {//..un nuovo segno di spunta arriva
    Conteggio = Conteggio 1;/Contatore di iterazioni
    }
    Avviso (Tick, i ,, loop, Count);/Dopo ogni tick
    }
    ritorno;/Exit start ()
    }


    L'unico messaggio che appare sulla finestra di avviso:
    Funzione init () attivata all'inizio

    e mi aspettavo qualcosa di simile

    Spuntare 3 98622348
    Spuntare 2 64534421
    Spuntare 1 32343443

    il grafico è un semplice grafico EURUSD M1 con nessun altro EA o Indiori.
    Ma è un account demo.



    Qualcuno può aiutarmi? Questo sarebbe molto gentile da parte tua

  2. #2
    Il problema è risolto - Grazie e scusa, così stupido, è stato semplicemente il fatto che EA non è stato attivato in MT. oh no

  3. #3
    Il codice sopra funziona almeno come script. Tuttavia diventa un po 'troppo duro per la CPU. Potrebbe valere la pena aggiungere la chiamata Sleep () (se non un indiore) e IsStopped () al ciclo interno. Come si esegue l'esempio?

  4. #4
    Ciao Irtron, grazie mille per la tua risposta. Il problema è quando parto dalla fine, che significa con il codice e non dall'inizio - la gestione di MT. Ho pensato: l'Init funziona, perché non il resto, non sapendo, che EA deve essere attivato e un'uscita viene fornita con start (). scusa
    Citazione Originariamente Scritto da ;
    Il codice sopra funziona almeno come script. Tuttavia diventa un po 'troppo duro per la CPU. Potrebbe valere la pena aggiungere la chiamata Sleep () (se non un indiore) e IsStopped () al ciclo interno. Come si esegue l'esempio?
    Citazione Originariamente Scritto da ;
    Il codice sopra funziona almeno come script. Tuttavia diventa un po 'troppo duro per la CPU. Potrebbe valere la pena aggiungere la chiamata Sleep () (se non un indiore) e IsStopped () al ciclo interno. Come si esegue l'esempio?

  5. #5

    Citazione Originariamente Scritto da ;
    Codice inserito per (i = 1; ilt; = 5; i )/Mostra per 5 tick {Count = 0;/Clearing counter while (RefreshRates () == false)/Fino a ... {//..un nuovo tick arriva Count = Count 1;/Iteration counter} Alert (Tick, i ,, loop, Count);/Dopo ogni spunta}
    Non dovresti farlo in questo modo. start () stesso verrà chiamato per ogni tick, il tuo script dovrebbe essere guidato dagli eventi, l'evento è l'arrivo di un nuovo tick. dovresti elaborare solo questo segno di spunta in start () e tornare immediatamente. L'utilizzo di cicli di polling lunghi in queste funzioni è possibile, ma è necessario farlo solo se non c'è altra opzione e non è possibile farlo in indiori, solo in consulenti esperti poiché gli indiori vengono eseguiti nel thread GUI e si blocca l'intera GUI Metatrader fino start () restituisce. Se hai bisogno esattamente di 5 tick puoi impostare un contatore globale a 0, quindi in start () scrivi il prezzo corrente su un array, aumenta il contatore e solo se il contatore ha raggiunto 5, allora fai quello che deve essere fatto con gli ultimi 5 spunta e azzera il contatore, altrimenti torna indietro.

  6. #6

    Citazione Originariamente Scritto da ;
    start () stesso verrà chiamato per ogni tick, il tuo script dovrebbe essere guidato dagli eventi, l'evento è l'arrivo di un nuovo tick. dovresti elaborare solo questo segno di spunta in start () e tornare immediatamente.
    Hai confuso EA e script qui. La funzione start () del primo è attivata dai tick in corso e RefreshRates () è necessario per assicurarsi che l'ambiente commerciale non sia cambiato mentre start () è in esecuzione. Quest'ultimo (uno script) esegue il suo start () solo una volta ed è adatto per l'elaborazione asincrona come nel codice sopra. ?? tutt'altro che perfetto, come ho già detto e dovrebbe essere considerato come un esempio per scopi eduivi solo esattamente come afferma il copyright.

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Il sito di forexmad utilizza cookie
Il sito di forexmad utilizza cookie, alcuni dei quali già installati. Per avere maggiori informazioni sui nostri cookie ti preghiamo di cliccare qui. Ti preghiamo di cliccare sul bottone a destra per accettare i nostri cookie. Se continui a navigare sul sito di forexmad assumeremo che sei d'accordo ad utilizzarli.