[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 244

 
Buon pomeriggio a tutti. Ho questa domanda: voglio che l'EA richieda dati da altre coppie di valute e timeframe. Per fare questo, devo tenere diverse decine di grafici aperti (anche se l'EA è installato su un solo grafico). Tutto questo "mangia" molta memoria e rallenta il VPS (anche se le impostazioni riducono il numero di barre nella storia/finestra). C'è un modo per evitare di aprire molti grafici, ma che le serie temporali richieste continuino ad esistere? Grazie in anticipo per la vostra risposta.
 
AndEv:
Buona giornata a tutti. Ho una domanda: voglio fare in modo che l'EA richieda i dati di altre valute e timeframes. Per fare questo, devo tenere diverse decine di grafici aperti (anche se il mio Expert Advisor è solo su un grafico). Tutto questo "mangia" molta memoria e rallenta il VPS (anche se le impostazioni riducono il numero di barre nella storia/finestra). C'è un modo per evitare di aprire molti grafici, ma che le serie temporali richieste continuino ad esistere? Grazie in anticipo per la vostra risposta.

Di cosa avete bisogno esattamente dalle altre valute? Per esempio, è possibile specificare qualsiasi valuta e timeframe negli indicatori e ottenere i dati in questo modo.

double iMA(NULL, 0, ...) // по символу и таймфрейму текущего графика
double iMA("AUDUSD", PERIOD_W1, ...) // по AUDUSD и по недельному таймфрейму

E non è necessario tenere aperto il grafico AUDUSD, W1.

 
paladin80:

Di cosa avete bisogno esattamente dalle altre valute? Per esempio, è possibile specificare qualsiasi valuta e timeframe negli indicatori e ottenere i dati in questo modo.

E non è necessario tenere aperto il grafico AUDUSD, W1.

Qualsiasi indicatore esegue i suoi calcoli in base alla serie temporale (nel tuo esempio "AUDUSD", PERIOD_W1), e la serie temporale non esiste senza un grafico. La domanda è se c'è un modo per aggirare questo. In MT4 non si potevano fare molte cose, ma persone competenti (Zhunko, per esempio) hanno reso possibili molte cose. Ho cercato di ottenere i dati come dici tu, ma non ha funzionato, anche se la coppia era presente nella finestra di Market Watch. Dopo aver aperto il relativo grafico sono stato in grado di ottenere immediatamente i dati necessari.
 
AndEv:
Qualsiasi indicatore fa i suoi calcoli sulla base di una serie temporale (nel tuo esempio "AUDUSD", PERIOD_W1), e una serie temporale non esiste senza un grafico. La domanda è se c'è un modo per aggirare questo. In MT4 non si potevano fare molte cose, ma persone competenti (Zhunko, per esempio) hanno reso possibili molte cose. Ho cercato di ottenere i dati come dici tu, ma non ha funzionato, anche se la coppia era presente nella finestra di Market Watch. Dopo aver aperto il relativo grafico è stato possibile ottenere immediatamente i dati necessari.

Una serie temporale esiste senza un grafico, se lo strumento è ovviamente aperto e c'è un riferimento costante a questo timeframe. In questo caso un grafico non è affatto necessario
 
AndEv:
Qualsiasi indicatore esegue i suoi calcoli sulla base della serie temporale (nel tuo esempio "AUDUSD", PERIOD_W1), ma la serie temporale non esiste senza un grafico. La domanda è se c'è un modo per aggirare questo. In MT4 non si potevano fare molte cose, ma persone competenti (Zhunko, per esempio) hanno reso possibili molte cose. Ho cercato di ottenere i dati come dici tu, ma non ha funzionato, anche se la coppia era presente nella finestra di Market Watch. Dopo aver aperto il relativo grafico sono riuscito ad ottenere subito i dati necessari.
Ha fatto un codice come questo:

double MA_AUDUSD_M5, MA_AUDUSD_W1, MA_EURCAD_H1;
//+------------------------------------------------------------------+
int start()
  {
//----
MA_AUDUSD_M5=iMA("AUDUSD",PERIOD_M5,20,0,MODE_SMA,PRICE_CLOSE,0);
MA_AUDUSD_W1=iMA("AUDUSD",PERIOD_W1,20,0,MODE_SMA,PRICE_CLOSE,0);
MA_EURCAD_H1=iMA("EURCAD",PERIOD_H1,20,0,MODE_SMA,PRICE_CLOSE,0);

Comment ("MA_AUDUSD_M5 = ",DoubleToStr(MA_AUDUSD_M5,Digits),"\n",
         "MA_AUDUSD_W1 = ",DoubleToStr(MA_AUDUSD_W1,Digits),"\n",
         "MA_EURCAD_H1 = ",DoubleToStr(MA_EURCAD_H1,Digits));
//----
   return(0);
  }
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+

Quando si prova con la visualizzazione su EURUSD, Daily risulta così:


C'era davvero qualcosa che non andava con EURCAD. Mi sono ricordato che non lavoro con questo strumento e forse non c'è storia per esso, ho scaricato (F2, ecc.), riavviato il terminale e questo è ciò che ho ottenuto:


Ci sono dati su EURCAD. Forse, dovrei dire al VPS la storia per lo strumento richiesto.

 
AndEv:
Qualsiasi indicatore fa i suoi calcoli sulla base di una serie temporale (nel tuo esempio "AUDUSD", PERIOD_W1), e una serie temporale non esiste senza un grafico. La domanda è se c'è un modo per aggirare questo. In MT4 non si potevano fare molte cose, ma persone competenti (Zhunko, per esempio) hanno reso possibili molte cose. Ho cercato di ottenere i dati come dici tu, ma non ha funzionato, anche se la coppia era presente nella finestra di Market Watch. Dopo aver aperto il relativo grafico è stato possibile ottenere immediatamente i dati necessari.

Preventivamente chiedere i dati per lo strumento richiesto, si costruisce senza un grafico, ma ci vuole tempo.
 
FAQ:

Richiedere preventivamente i dati per lo strumento desiderato, si costruisce senza un grafico, ma ci vuole tempo.
Questo è il punto, è possibile ottenere i dati quando li chiedete di nuovo. Ma come si fa a farlo accadere la prima volta?
 
hoz:

E qui c'è effettivamente il tacchino stesso.

https://www.mql5.com/ru/code

Non sono interessato all'indicatore in sé come segnale di trading. Ma ho notato il nome interessante e ho deciso di vedere le sue "budella". Così mi sono imbattuto in...

Ho deciso di portarlo al "solito" look (mi perdoni l'autore). Cosa ho ottenuto (nel file).
File:
ssl.mq4  4 kb
 
AndEv:
Questo è il punto, è possibile ottenere i dati quando li chiedete di nuovo. Ma come si fa a farlo funzionare la prima volta?

Avete provato con la gestione degli errori?
 
paladin80:

Forse il VPS dovrebbe raccontare le storie sugli strumenti che vengono strombazzati.

Scaricare la cronologia non servirà a nulla, perché la query ha bisogno di dati sempre freschi. Anche io ho fatto uno script del genere, e poi ho spostato il codice nei gufi, in modo che il lancio sia fatto dal tick in arrivo. In dinamica senzaaprire il grafico devo fare due volte la query, solo in questo caso posso ottenere dati freschi. Non so come fare senza ripetere la domanda.