Qualcuno sa come sviluppare un indicatore multicurrency? - pagina 2

 

La prima volta che chiami ACR ottieni l'errore 4066. Questo è quanto. Chiamatelo di nuovo e otterrete un conteggio valido ma nessun dato negli array. Accedendo agli array non si ottiene un risultato fuori portata.

 
WHRoeder:

La prima volta che chiami ACR ottieni l'errore 4066. Questo è tutto. Chiamalo di nuovo e ottieni un conteggio valido ma nessun dato negli array. L'accesso agli array non risulterà fuori portata.

Devo dissentire, perché non vedo quello che hai appena descritto. Tuttavia, questo può essere dovuto al fatto che la maggior parte del tempo sul mio utilizzo Real Live, tutti i dati sono solitamente disponibili, e sul mio ambiente demo/test ho generato ".hst" e ".fxt" da dati esterni.

Proverò a ricreare le condizioni di "tabula rasa" senza dati locali e vedere se riesco a replicare quello che stai descrivendo.

 

Ho ricreato le condizioni di "tabula rasa" e ho codificato un piccolo script per testare questo in un ciclo continuo senza funzione sleep. Ho eseguito lo script due volte su un grafico "EURUSD", ma ho fatto richiedere al codice i dati su "NZDCAD" che non è mai stato caricato prima.

I risultati della prima esecuzione sono i seguenti.

  • Durante le prime 73607 iterazioni (che sono durate circa 516ms), "ArrayCopyRates" ha sempre restituito un conteggio di -1, e ha generato un errore 4073 (Error 4073 - No history data). La dimensione dell'array era sempre 0 durante queste iterazioni.

  • Infine, alla 73608esima iterazione, ha restituito un conteggio di 512 e anche la dimensione dell'array è stata impostata a 512 e il tempo per l'elemento 0 aveva un tempo valido (e non 0) e non sono stati generati errori.
Ho poi fatto una seconda esecuzione dello script, dato che i dati erano già caricati e questi sono i risultati:
  • Durante la prima e unica iterazione, "ArrayCopyRates" ha restituito un conteggio di 2048 ma ha generato un errore 4066 anche se il conteggio di ritorno era valido (Error 4066 - Requested history data is in updating state). Anche la dimensione dell'Array era 2048 e il tempo per l'elemento 0 era valido (e non 0).

  • Ho
allegato un file ZIP con lo script di test e i file di log risultanti.

Vi lascio trarre le vostre conclusioni!

PS! La mia conclusione, è di combinare tutti i test prima di procedere. (cioè testare il codice di ritorno di "ArrayCopyRates", controllare i codici di errore, testare la dimensione dell'array di MqlRates e (per sicurezza, come suggerisce WHRoeder ) testare anche la validità della data degli elementi dell'array.

EDIT: Se avessi usato solo il test "pair[0].time == 0", avrebbe dato un errore di indice dell'array (e causato l'arresto dell'esecuzione) durante le prime iterazioni della prima esecuzione quando non c'erano dati disponibili. Pertanto, rimango fedele alla mia affermazione, che è necessario controllare il codice di ritorno e la dimensione dell'array, ma sono d'accordo che il test del tempo può offrire un livello successivo di verifica una volta che le altre condizioni sono state soddisfatte.

File:
testacr.zip  217 kb
 
Strano, come non ci sia stato un solo commento da parte del poster originale da quando questo thread è stato iniziato. Sta almeno seguendo questo?
 
FMIC:
  • Durante le prime 73607 iterazioni (che sono durate circa 516ms), "ArrayCopyRates" ha sempre restituito un conteggio di -1, e ha generato un errore 4073 (Error 4073 - No history data). La dimensione dell'array era sempre 0 durante queste iterazioni.
  • Infine, alla 73608esima iterazione, ha restituito un conteggio di 512 e anche la dimensione dell'array è stata impostata a 512 e il tempo per l'elemento 0 aveva un tempo valido (e non 0) e non sono stati generati errori.
Questo è proprio il comportamento opposto della versione pre-build 600.
Questo è quello che mi aspettavo originariamente, ma che era stato dimostrato sbagliato.
Finalmente hanno capito bene e lo noterò per il futuro.
 
FMIC:


EDIT: Se avessi usato solo il test "pair[0].time == 0", avrebbe dato un errore nell'indice dell'array (e causato l'arresto dell'esecuzione) durante le prime iterazioni della prima esecuzione, quando nessun dato era disponibile. Pertanto, rimango fedele alla mia affermazione, che è necessario controllare il codice di ritorno e la dimensione dell'array, ma sono d'accordo che il test del tempo può offrire un livello successivo di verifica una volta che le altre condizioni sono state soddisfatte.


Tutto questo è molto utile, grazie per la ricerca e i risultati.

 
FMIC:
Strano, come non ci sia stato un solo commento del poster originale da quando questo thread è stato iniziato. Sta almeno seguendo questo?

Perché dovrebbe seguire questo post, i post successivi sono andati ben oltre il livello di comprensione della maggior parte delle persone in questo forum.

Che ne dite di provare a rispondere alla domanda in modo semplice e preciso!

Ora, per rispondere alla domanda originale, nel caso ci sia una piccola possibilità che il poster originale sia ancora in giro, Google è tuo amico.

 
4x_Gypsy:

Che ne dite di provare a rispondere alla domanda in modo semplice e preciso!

Abbiamo risposto alla domanda che era in sostanza:"Voglio scegliere da 1 a 10 valute diverse e 5 barre per ogni valuta."

Dal momento che non ha fornito alcun esempio di codice, o ulteriori dettagli, non è stato possibile dare una risposta semplice e precisa. Tutto quello che abbiamo potuto fare è stato fornire risposte generali e la consapevolezza dei problemi che avrebbe dovuto affrontare. Rispondemmo che avrebbe dovuto usare"ArrayCopyRates()" o usare"iFunctions()" e che avrebbe dovuto tenere traccia del ritardo intrinseco e degli errori che avrebbe ovviamente ottenuto. Abbiamo poi completato le informazioni discutendo le insidie e i problemi, come la mancanza della funzione sleep negli indicatori e i diversi comportamenti tra le build pre-600 e post.

Se dici che tutto questo era sopra la sua testa, tutto quello che doveva fare era postare qualcosa del tipo: "Scusa, non capisco! Puoi semplificarmelo!". Ma siccome non c'è mai stato nessun post di questo tipo (o qualsiasi altro, se è per questo), la discussione è continuata nella convinzione che lui e gli altri fossero in grado di seguirla.

Ora, come hai scritto tu, potrebbe usare Google e trovare molti Indicatori Multi-Time-frame là fuori, ma se non sa ancora COME funziona, non andrà molto lontano nel far funzionare il suo indicatore come desidera.

EDIT: PS! NB! Dopo averci ripensato, WHRoeder ha effettivamente fornito un codice scheletrico come soluzione al problema. Non si può essere più semplici e precisi di così, data la mancanza di dettagli nella domanda originale.

 
FMIC:

Abbiamo risposto alla domanda che era in sostanza:"Voglio scegliere da 1 a 10 valute diverse e 5 barre per ogni valuta."

Dal momento che non ha fornito alcun esempio di codice, o maggiori dettagli, non è stato possibile dare una risposta semplice e precisa. Tutto quello che abbiamo potuto fare è stato fornire risposte generali e la consapevolezza dei problemi che avrebbe dovuto affrontare. Rispondemmo che avrebbe dovuto usare"ArrayCopyRates()" o usare"iFunctions()" e che avrebbe dovuto tenere traccia del ritardo intrinseco e degli errori che avrebbe ovviamente ottenuto. Abbiamo poi completato le informazioni discutendo le insidie e i problemi, come la mancanza della funzione sleep negli indicatori e i diversi comportamenti tra le build pre-600 e post.

Se dici che tutto questo era sopra la sua testa, tutto quello che doveva fare era postare qualcosa del tipo: "Scusa, non capisco! Puoi semplificarmelo!". Ma siccome non c'è mai stato nessun post di questo tipo (o di nessun altro), la discussione è continuata nella convinzione che lui e gli altri fossero in grado di seguirla.

Ora, come hai scritto tu, potrebbe usare Google e trovare molti indicatori multi-time-frame là fuori, ma se non sa ancora COME funziona, non andrà molto lontano nel far funzionare il suo indicatore come desidera.

EDIT: PS! NB! Dopo averci ripensato, WHRoeder ha effettivamente fornito un codice scheletrico come soluzione al problema. Non si può essere più semplici e precisi di così, data la mancanza di dettagli nella domanda originale.

La domanda era "Qualcuno sa come sviluppare un indicatore multicurrency?

La risposta ovvia è stata "Sì, noi (FMIC e WHRoeder) lo sappiamo, basta guardarci mentre ne discutiamo", senza chiedere o aspettare dettagli su ciò di cui l'OP ha effettivamente bisogno.

Quello che voleva fare con quell'indicatore era "Voglio scegliere da 1 a 10 valute diverse e 5 barre per ogni valuta".

Sì, gli esempi sono stati forniti. Ma sono stati forniti più come un concorso tra voi due. Dibattito interessante? Sì. Ho imparato qualcosa che non sapevo. L'esempio è stato fornito in modo tale che un principiante possa essere in grado di capire? Non molto. La gente viene in questo forum a causa della mancanza di assistenza e tutorial da MetaTrader. La maggior parte delle persone che scrivono qui hanno una comprensione minima di ciò che vogliono fare e quando la discussione va troppo oltre la loro comprensione si allontanano. Il che è un vero peccato.

Il grande indizio era "Ma io non so come fare questo".

Dalla mancanza di qualsiasi tipo di risposta da parte dell'OP è un'indicazione che c'è qualcosa di sbagliato. La mia "ipotesi" è che l'OP si sia sentito frustrato dalla mancanza di comprensione e abbia abbandonato il thread. C'è stato un periodo anni fa in cui ho fatto la stessa cosa. Ho imparato di più da diversi siti/forum che da questo perché nessuno si prendeva il tempo di rendersi conto di quanto fossi nuovo e postava continuamente esempi e discussioni completamente al di sopra della mia comprensione di allora.

Ma niente di tutto ciò ha più importanza da quando l'OP è scomparso.

Ancora una volta questo è un peccato, chissà questa persona potrebbe essere o diventare il prossimo guru di cui questo e altri forum hanno così tanto bisogno.

 
4x_Gypsy:

Il grande indizio era "Ma non so come farlo".

Dalla mancanza di qualsiasi tipo di risposta da parte dell'OP è un'indicazione che c'è qualcosa di sbagliato. La mia "ipotesi" è che l'OP sia stato frustrato dalla mancanza di comprensione e abbia abbandonato il thread. C'è stato un periodo anni fa in cui ho fatto la stessa cosa. Ho imparato di più da diversi siti/forum che da questo perché nessuno si prendeva il tempo di rendersi conto di quanto fossi nuovo e postava continuamente esempi e discussioni completamente al di sopra della mia comprensione di allora.

Dal tuo punto di vista potresti avere ragione, d'altra parte ho visto molte domande che semplicemente trovavano risposta se si dava un'occhiata veloce alle documentazioni e mi sento davvero uno stupido a rispondere a questo tipo di domande ancora e ancora.

Inoltre c'è Google e un'opzione di ricerca qui. Se non so come fare qualcosa questo sarebbe il mio prossimo passo cercando di risolvere il problema da solo.

Ora veniamo all'argomento di questo thread: "...come sviluppare un sistema multi-valuta". Questo mi suona come "insegnami a codificare gratis" che è abbastanza vicino a "puoi codificare questo per me". Tutto questo non è abbastanza serio.

Dato che c'è così tanto codice disponibile gratuitamente, la mia risposta a questo sarebbe stata: "Usa google o la ricerca qui per trovare codice gratuito e cambialo!

Se la gente si offende per questo, penso che sia un loro problema.