Sono completamente perso - pagina 2

 
zortharg: Non stavo chiedendo a nessuno di produrre qualcosa di valore commerciale per me. Non sto chiedendo a qualcuno di "codificare il mio metodo per me", WHRoeder. Ho solo bisogno di un punto di partenza.
  1. Sembrava proprio che tu lo stessi facendo.
    zortharg: Stavo chiedendo se qualcuno ne avrebbe scritto uno.
  2. Ti ho dato tre link per iniziare: imparare a codificare molti punti di partenza.
 
zortharg:

Non stavo chiedendo a nessuno di produrre qualcosa di valore commerciale per me. Non sto chiedendo a qualcuno di "codificare il mio metodo PER me", WHRoeder. Ho solo bisogno di un punto di partenza. Potrei essere in grado di capire qualcosa dal link che hai messo sotto "ricerca", anche se vorrei davvero un "questo è ciò che serve". Non so come dovrebbe essere il programma. Non so cosa è strettamente necessario che ci sia. Se provo a farlo da solo di punto in bianco senza alcun punto di riferimento, otterrò solo errori di compilazione perché non saprò nemmeno cosa manca.


Guardate qui
 

Sono sulla soglia di mettere insieme i pezzi. Ma non ci sono ancora del tutto. Ci sono cose che non hanno senso. Per esempio:

https://docs.mql4.com/array/ArrayCopySeries

Questo non ha senso. Cosa succede se l'array che ho dichiarato non è della stessa dimensione? In pratica è garantito che NON lo sia. Non voglio uscire dalla fine dell'array, così posso dichiarare che l'array è più grande di quanto PENSO che sarà mai, ma se fosse mai più grande? E se fosse più basso? Se "l'array" ha più voci dei dati della valuta, allora quelle rimanenti vengono riempite con 0? E cosa succede per gli array doppiamente indicizzati? Per esempio, supponiamo che io dichiari che l'array sia di dimensioni [16384][6] e che i dati che voglio copiare in [0:16383,0] siano di lunghezza 3000. Come potrei farlo? Avrei bisogno di un'altra variabile dell'array da impostare sui dati della valuta, che sarebbe una variabile indicizzata singolarmente (di sole dimensioni 16384, non di dimensioni 16384 x 6) e poi le sue prime 3000 voci sarebbero scritte con i dati della valuta e le voci da 3000 a 16383 sarebbero scritte con 0, e poi sta a me spostare il contenuto della variabile temporanea nell'array di dimensioni [16384][6]? Questo è il rompicapo a cui mi trovo ora.

 
zortharg:

Sono sulla soglia di mettere insieme i pezzi. Ma non ci sono ancora del tutto. Ci sono cose che non hanno senso. Per esempio:

https://docs.mql4.com/array/ArrayCopySeries

Questo non ha senso. Cosa succede se l'array che ho dichiarato non ha la stessa dimensione? In pratica è garantito che NON lo sia. Non voglio uscire dalla fine dell'array, così posso dichiarare che l'array è più grande di quanto PENSO che sarà mai, ma se fosse mai più grande? E se fosse più basso? Se "array" ha più voci dei dati della valuta, allora le rimanenti vengono riempite con 0? E cosa succede per gli array doppiamente indicizzati? Per esempio, supponiamo che io dichiari che l'array sia di dimensioni [16384][6] e che i dati che voglio copiare in [0:16383,0] siano di lunghezza 3000. Come potrei farlo? Avrei bisogno di un'altra variabile dell'array da impostare sui dati della valuta, che sarebbe una variabile indicizzata singolarmente (di sole dimensioni 16384, non di dimensioni 16384 x 6) e poi le sue prime 3000 voci sarebbero scritte con i dati della valuta e le voci da 3000 a 16383 sarebbero scritte con 0, e poi sta a me spostare il contenuto della variabile temporanea nell'array di dimensioni [16384][6]? Questo è il rompicapo a cui mi trovo ora.

Penso che dovresti rileggere i Docs. Afferma e cito: "Non c'è una reale allocazione di memoria per l'array di dati e non viene copiato nulla".

Imposta solo un riferimento, quindi non si imposta la dimensione sull'array di destinazione. Lo dichiarate e basta. Date un'altra occhiata all'esempio nella documentazione. Non c'è nessuna dimensione nella dichiarazione.

datetime daytimes[];
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
 

Quindi devo scaricare i prezzi storici una volta alla volta con iclose allora? https://docs.mql4.com/series/iClose Il problema con questo come lo vedo io è che i dati possono aggiornarsi mentre sono nel mezzo del download. Sarebbe molto bello scaricare il tutto in blocco. Immagino di poter scaricare il tempo con iTime e poi usare iclose e poi usare di nuovo iTime sullo stesso indice e se è cambiato, allora è iniziato un nuovo intervallo di tempo della barra e devo tornare indietro di un numero di indice. Il mio ragionamento è corretto o c'è qualcosa che non capisco?

 

Non credo che stiamo parlando la stessa lingua. Prima chiedi della funzione ArrayCopySeries, ora vuoi scaricare tutti i dati tramite iClose.

Non c'è bisogno di scaricare tutti i dati - sono sempre a vostra disposizione in qualsiasi momento ne abbiate bisogno.

Cos'è che state cercando di fare?

Perché avete bisogno di copiare tutti i dati di un array in un altro array, se potete già accedervi totalmente dal primo?

State cercando di passare le informazioni a una DLL esterna per l'elaborazione? Se è così, dovresti usare la funzione "CopyRates" - https://www.mql5.com/en/docs/series/copyrates

In ogni altro caso, non hai bisogno di scaricare tutti i dati. Sono già accessibili tramite i metodi normali.

 

Ho deciso di rileggere il tuo primo post in dettaglio per vedere cosa stai cercando di realizzare e mi sono reso conto che lo stai facendo in modo del tutto sbagliato.

Non devi scaricare tutti quei dati nella RAM come hai spiegato. È già stato fatto per te dall'ambiente MetaTrader. Tutto quello che devi fare è accedervi in modo normale.

Suggerisco di dare un'occhiata ai molti esempi di EA qui sul sito nella codebase o al libro introduttivo sulla programmazione MQL4, anche qui su questo sito.

Leggete anche i vari articoli che spiegano come ci si potrebbe avvicinare alla scrittura di un EA:

In questo modo si può imparare come si fa invece di cercare di "reinventare la ruota".

 

Nessuno mi ha dato un CLUE su come fare qualcosa, mi dicono di capirlo da solo o di pagare qualcun altro per farlo, leggi i primi post di questo thread e lo vedrai. L'audacia delle persone su questo forum! Si rifiutano di dirmi qualcosa e poi mi deridono perché non conosco già i "metodi normali". Oh, ditelo! Ma questo, sospettosamente, non sembra comunque l'ideale. Quello che sto cercando di fare è scaricare i dati del mercato delle valute nella RAM del mio computer, eseguire i calcoli su questo, e poi fare in modo che il mio computer carichi gli ordini di acquisto e di vendita per negoziare sul mercato delle valute. Questo è quello che voglio fare. Se non è il mio computer che sta eseguendo i calcoli, allora cosa starebbe eseguendo i calcoli comunque? Qualche computer remoto? Non posso inviare e ricevere dati attraverso internet ogni volta che voglio accedere a un prezzo storico, se voglio accedere a quel prezzo 1000 volte diverse nel processo dei calcoli, il tempo necessario per accedervi rallenterebbe i calcoli di un fattore di migliaia o milioni. Questo è uno dei motivi per cui c'è la RAM nell'architettura dei computer, le letture e le scritture sul disco rigido richiedono molto più tempo. È lo stesso principio qui, ho bisogno di immagazzinare i dati in un array sul mio computer perché fare una richiesta attraverso internet ogni volta che voglio accedere ad una particolare informazione non va bene.

Che idea hai di cosa dovrebbe fare un robot di trading?

 
zortharg:

Nessuno mi ha dato un CLUE su come fare qualcosa, mi hanno detto di capirlo da solo o di pagare qualcun altro per farlo, leggi i primi post di questo thread e lo vedrai. L'audacia delle persone su questo forum! Si rifiutano di dirmi qualcosa e poi mi deridono perché non conosco già i "metodi normali". Oh, ditelo! Ma questo, sospettosamente, non sembra comunque l'ideale. Quello che sto cercando di fare è scaricare i dati del mercato delle valute nella RAM del mio computer, eseguire i calcoli su questo, e poi fare in modo che il mio computer carichi gli ordini di acquisto e di vendita per negoziare sul mercato delle valute. Questo è quello che voglio fare. Se non è il mio computer che sta eseguendo i calcoli, allora cosa starebbe eseguendo i calcoli comunque? Qualche computer remoto? Non posso inviare e ricevere dati attraverso internet ogni volta che voglio accedere a un prezzo storico, se voglio accedere a quel prezzo 1000 volte diverse nel processo dei calcoli, il tempo necessario per accedervi rallenterebbe i calcoli di un fattore di migliaia o milioni. Questo è uno dei motivi per cui c'è la RAM nell'architettura dei computer, le letture e le scritture sul disco rigido richiedono molto più tempo. È lo stesso principio qui, ho bisogno di immagazzinare i dati in un array sul mio computer perché fare una richiesta attraverso internet ogni volta che voglio accedere ad una particolare informazione non va bene.

Che idea ti sei fatto di cosa dovrebbe fare un robot di trading?

Non è così che funziona l'ambiente MetaTrader e MQL! Come ho detto! NON riscaricare i dati nella RAM perché è già stato fatto per te. Smettila di cercare di insegnarci come codificare in MQL4. Sei tu che devi mettere da parte le tue idee preconcette su come scrivere il codice e imparare prima quali strumenti e ambiente hai a disposizione.

Se non vuoi che la gente ti prenda in giro, allora non essere pigro e LEGGI LA DOCUMENTAZIONE (dall'inizio alla fine). Questo sito ha molti link per la documentazione e gli esempi di codice.

Quando ho iniziato non ho chiesto aiuto senza aver prima familiarizzato con l'ambiente. Mi sono preso il tempo di leggere il libro, la documentazione e i molti, molti, molti esempi su questo sito e ho imparato come fare.

Non sei un bambino e non hai bisogno di essere imboccato. Imparate leggendo la documentazione completamente GRATUITA qui e su molti altri siti. Puoi anche uscire e comprare libri su come scrivere un EA in MQL4 o MQL5 (per esempio, Expert Advisor Programming di Andrew R. Young).

Se però stai cercando un insegnante, allora è diverso. Di solito si paga per i servizi di avere un "personal trainer". Siete disposti a pagare? Sono sicuro che molti accetterebbero una tale richiesta nella sezione Jobs(https://www.mql5.com/en/job).

Inoltre, la primissima persona a commentare qui per te è stato "ubzen" e la primissima cosa che ha fatto è stato raccomandarti di iniziare a leggere il "Libro introduttivo" e la "Documentazione di riferimento" dato che hai affermato di essere già un buon programmatore in altri linguaggi. UN CONSIGLIO MOLTO VALIDO!

Un'altra cosa - Se avessi usato le tue piccole cellule grigie e avessi fatto una ricerca qui nella sezione Articoli, avresti trovato questo articolo molto vecchio ma ancora valido:

Quindi, smettila di lamentarti e di essere pigro e fai la tua parte di "Ricerca" di R&S. Ti è familiare, vero?

 
zortharg:

Nessuno mi ha dato un CLUE su come fare qualcosa, mi dicono di capirlo da solo o di pagare qualcun altro per farlo, leggete i primi post di questo thread e lo vedrete. L'audacia delle persone su questo forum! Si rifiutano di dirmi qualcosa e poi mi deridono perché non conosco già i "metodi normali". Oh, ditelo! Ma questo, sospettosamente, non sembra comunque l'ideale.

Perché dovrebbero aiutarti? Cosa ti fa pensare che abbiano qualche obbligo nei tuoi confronti? Sono solo Utenti come te. . chi hai aiutato su questo forum?