Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 618
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ti ho detto chiaramente che non dovresti insegnare agli altri quando tu stesso non ne hai idea.
L'aiuto dovrebbe essere "qualificato", non "dalla strada"!
Descrivete di nuovo il problema, ciò che è necessario.
Ridescrivere di nuovo il compito, esattamente ciò che è necessario.
Sono interessato a poter trasferire dati in MT4/MT5 tra diversi moduli.
Per esempio:
Come trasferire i dati da un indicatore all'altro?
Come trasferire i dati da un indicatore a uno script?
Come trasferire i dati dall'indicatore all'Expert Advisor? ecc... e così via.
La semplice aggiunta di dati trasferiti in un file separato e poi la lettura di questi dati dal file in altri moduli è un modo abbastanza ovvio e comune per trasferirli.
Ma in questo caso c'è un problema di sincronizzazione dei dati trasferiti/letti.
Intuitivamente, suppongo che il terminale MT4/MT5 deve avere una certa area di memoria buffer condivisa e ci devono essere delle procedure che regolano lo scambio di dati attraverso questa area.
Ma non ho trovato niente del genere nella descrizione.
Sono interessato alla procedura di trasferimento MT4/MT5 tra diversi moduli.
Per esempio:
Come trasferire i dati da un indicatore all'altro?
Come trasferire i dati da un indicatore a uno script?
Come trasferire i dati dall'indicatore all'Expert Advisor? ecc... e così via.
La semplice aggiunta di dati trasferiti in un file separato e poi la lettura di questi dati dal file in altri moduli è un modo abbastanza ovvio e comune per trasferirli.
Ma in questo caso c'è un problema di sincronizzazione dei dati trasferiti/letti.
Intuitivamente, suppongo che il terminale MT4/MT5 deve avere una certa area di memoria buffer condivisa e ci devono essere delle procedure che regolano lo scambio di dati attraverso questa area.
Ma non ho trovato nulla di simile nella descrizione.
Bene, il trasferimento dei dati può essere effettuato attraverso un file o una variabile globale del terminale.
Se è una variabile globale:
Questo è il modo più semplice per scambiare tra tutti i programmi in un terminale
Bene, il trasferimento dei dati come scritto in precedenza può avvenire tramite file, o una variabile globale del terminale
Se una variabile globale:
Questo è il modo più semplice per scambiare tra tutti i programmi in un terminale
Ok. Scriviamo in indicatore un'espressione:
GlobalVariableSet("Sname", 123.25); Questo evento si verifica, per esempio, onTick().
Ma gli script non lavorano con gli array di dati e non hanno l'evento OnTick(). Come lo script sa che l'evento OnTick() si è verificato e dovrebbe applicare la procedura per ottenere nuovi dati
GlobalVariableGet("Sname");
Potete usare l'evento OnTimer() invece di OnTick(). Ma lo script ha il suo OnTimer(), mentre l'indicatore ha il suo e non sono collegati.
Ecco il problema:
Come assicurare cheGlobalVariableSet("Sname", 123.25); e GlobalVariableGet("Sname"); siano eventi sincroni?
O c'è una procedura che controlla il cambiamento del valore "Sname"? Come OnChange.
Cioè, come fa lo script a sapere che l'indicatore ha cambiato il valore di "Sname", e questo valore è diventato 125,35?
Dov'è il ponte traGlobalVariableSet("Sname", 123.25); e GlobalVariableGet("Sname"); ?
Sono in programmi diversi.
OK. Scriviamo un'espressione nell'indicatore:
GlobalVariableSet("Sname", 123.25); Questo evento si verifica, per esempio, quando OnTick().
Ma gli script non lavorano con gli array di dati e non hanno l'evento OnTick(). Come lo script sa che l'evento OnTick() si è verificato e dovrebbe applicare la procedura per ottenere nuovi dati
GlobalVariableGet("Sname");
Potete usare l'evento OnTimer() invece di OnTick(). Ma lo script ha il suo OnTimer(), mentre l'indicatore ha il suo, quindi non sono collegati tra loro.
Ecco il problema:
Come assicurare cheGlobalVariableSet("Sname", 123.25); e GlobalVariableGet("Sname"); siano eventi sincroni?
O c'è una procedura che controlla il cambiamento del valore "Sname"? Come OnChange.
Cioè, come fa lo script a sapere che l'indicatore ha cambiato il valore di "Sname", e questo valore è diventato 125,35?
Dov'è il ponte traGlobalVariableSet("Sname", 123.25); e GlobalVariableGet("Sname"); ?
Sono in programmi diversi.
Il collegamento è un disco rigido del computer. Record penso che il problema non è, e si può ottenere in ogni caso, anche nello script, non differisce da come si ottiene il valore corrente ASK e BID
P.S. Allego un indicatore e uno script per esempio, nell'indicatore registriamo i volumi di tick
Indicatore
Script
L'anello di congiunzione è il disco rigido del computer. Penso che non sarà un problema scriverlo, ma si può ottenere da qualsiasi evento, anche in uno script, non è diverso da come si ottengono i valori attuali ASK e BID
Fico!
E come farlo?
Mi faccia un esempio.
Per esempio, come simulare un caso del genere.
L'indicatore riceve i dati, calcola la varianza dei dati e prepara le coordinate dei punti dell'ellisse per lo script (4 variabili globali Q1,Q2,T1,T2 da passare allo script).
Ora l'indicatore dovrebbe dare un comando allo script che disegna l'ellisse usando queste variabili globali.
Come può farlo l'indicatore?
L'anello di congiunzione è il disco rigido del computer. Penso che non sarà un problema registrare, ma si può ottenere da qualsiasi evento anche nello script, non differisce da come si ottengono i valori attuali di ASK e BID
P.S. Allego un indicatore e uno script per esempio, nell'indicatore registriamo i volumi di tick
Indicatore
Script
Nel tuo esempio, lo script funziona solo una volta - all'inizio, cioè quando si verifica l'evento OnStart().
E poi come?
Dov'è la sincronizzazione?
Come si fa a far funzionare lo script in modo sincrono con l'indicatore?
Per esempio, come attivare lo script ogni volta che i volumi superano un certo valore?
Quindi, nel tuo esempio, lo script funziona solo una volta - all'avvio, cioè quando si verifica l'evento OnStart().
E poi come?
Dov'è la sincronizzazione?
Come si fa a far funzionare lo script in modo sincrono con l'indicatore?
Per esempio, come attivare lo script ogni volta che i volumi superano un certo valore?
È vostro compito come lavorare con lo script. Non sarebbe più facile creare un Expert Advisor piuttosto che uno script?
Un indicatore che dà valori:
Un semplice esempio di script in loop:
P.S. Corretto il codice.
Sta a voi decidere come lavorare con lo script. Non sarebbe più facile per te creare un EA piuttosto che uno script?
Un indicatore che dà valori:
Un semplice esempio di script in loop:
Ho capito che in MQL non c'è la possibilità di sincronizzare diversi moduli.
Ok. Allora ecco una domanda. Cosa succede se metto il pulsante sul campo e alimento lo script a quel pulsante?
C'è questa possibilità in MQL o non c'è nemmeno questa possibilità?
Dopo tutto, lo script deve essere lanciato in qualche modo!
Ho capito che in MQL non c'è la possibilità di sincronizzare diversi moduli.
Ok. Allora ecco una domanda. Cosa succede se metto il pulsante sul campo e metto lo script su questo pulsante.
C'è questa possibilità in MQL o non c'è nemmeno questa possibilità?
Lo script deve essere lanciato in qualche modo!
L'argomento è vecchio, ma ancora da leggere, o forse qualcuno suggerirà qualcosa di nuovo. Non eseguo script e non ci lavoro affatto)