Come posso ottenere i parametri Open,Low,High,Close in MQL5? - pagina 3

 

Un esempio di script:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int i=0;i<3;i++)
      Print("# ",i,": ",DoubleToString(iOpen(Symbol(),PERIOD_CURRENT,i),Digits()));
//---
  }
//+------------------------------------------------------------------+

e il risultato:

2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 0: 1.11399
2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 1: 1.11425
2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 2: 1.11319


Modificato.

File:
1.mq5  2 kb
 

Eccoli qui.

Funziona sia su 4pc che su 5pc

In 4pc, applicate Period(), Symbol(), ecc.

In 5-pc, applicate _Period, _Symbol(), ecc.

iBars

Restituisce il numero di barre nella storia per un simbolo e un periodo specificato

iBarShift

Restituisce l'offset della barra a cui appartiene il tempo specificato

iClose

Restituisce il prezzo di chiusura della barra del grafico corrispondente

iHigh

Restituisce il valore del prezzo massimo della barra nel grafico

iHighest

Restituisce l'indice del più alto valore trovato del grafico corrispondente

iLow

Restituisce il valore del prezzo minimo della barra del grafico corrispondente

iLowest

Restituisce l'indice del più piccolo valore trovato del grafico corrispondente

iOpen

Restituisce il valore del prezzo di apertura della barra del grafico corrispondente

iTime

Restituisce il tempo di apertura della barra del grafico corrispondente

iVolume

Restituisce il valore del volume di tick della barra nel grafico

iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Con CopyRates ha funzionato. Funziona.
 

Ed ecco la varianteCopyRates

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates)!=count)
      return;

   for(int i=0;i<count;i++)
      Print("Open # ",i,": ",DoubleToString(rates[i].open,Digits()));
//---
  }
//+------------------------------------------------------------------+

e risultato

2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 0: 1.11399
2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 1: 1.11425
2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 2: 1.11319
File:
1.mq5  3 kb
 
Alexey Viktorov:

Alexey, questo è per coloro che sono in un serbatoio. E per quelli normali, CopyRates() è disponibile anche in mql4. Quindi dimenticate tutte le iOpen e altre sciocchezze. Non capisco nemmeno perché l'abbiano messo in mql5.

Oh, sono apparsi dei ragazzini))

Perché in pratica abbiamo bisogno di avere molti valori OHLC consecutivi - che tu hai suggerito di ottenere usando CopyRates()? - se non per meditare? ))))

non c'è molto uso pratico, ecco un compito banale, lo scarico (o l'uso) dell'indicatore Fractals, ho un tale codice:

#define  Time(n)   iTime(NULL,0,n)
//+------------------------------------------------------------------+
void OnStart()
  {
   int handle=iFractals(NULL,0);
   if(handle==INVALID_HANDLE)
     {
      Print("Error№,",::GetLastError()," create handle indicator");
      return;
     }
   int count=0,i=0;
   double buffup[1],buffdn[1];
   while(i<Bars(_Symbol,_Period) && count<10)
     {
      if(CopyBuffer( handle,0,i,1, buffup)<1) Print("buffup , error № ",::GetLastError());
      if(CopyBuffer( handle,1,i,1, buffdn)<1) Print("buffup , error № ",::GetLastError());
      if(buffup[0]<EMPTY_VALUE && ++count>0)  Print("Bar № ",i," : ",Time(i)," , Fractals Up = ",buffup[0]);
      if(buffdn[0]<EMPTY_VALUE && ++count>0)  Print("Bar № ",i," : ",Time(i)," , Fractals Dn = ",buffdn[0]);
     i++;
     }
  }
//+------------------------------------------------------------------+


mostrami il tuo codice con l'uso di CopyRates()...

 
Vladimir Karputov:

Ed ecco la varianteCopyRates

e risultato

Ma, se abbiamo bisogno di tracciare costantemente i dati su nuove barre, significa fare riferimento a CopyRates su ogni tick e fare una serie temporale su ogni tick?

Sto cercando di capire quale sia il posto migliore per mettere CopyRates.

 
Реter Konow:

Ma, se avete bisogno di tracciare costantemente i dati sulle nuove barre, allora dovete fare riferimento a CopyRates su ogni tick e fare una serie temporale su ogni tick?

Sto cercando di capire dove è meglio mettere i CopyRate.

Ho già chiesto sopra: PERCHE'? È necessario considerare il valore della barra zero (la barra più a destra del grafico)?

 
Vladimir Karputov:

Ho già chiesto sopra: PERCHE'? Il valore della barra zero (la barra più a destra del grafico) deve essere preso in considerazione?

Per il tavolo. Ci sono quattro parametri nella tabella: Open, Close, High, Low, le ultime 10 barre, esclusa quella attuale.

Ultimo, nel senso di andare indietro rispetto a quello attuale (zero).

 
Igor Makanu:

Ooh! sono apparsi i teen-weenies))

perché in pratica avere molti valori OHLC consecutivi - che proponi di ottenere usando CopyRates()? - se non per meditare? ))))

non c'è molto uso pratico, ecco un compito banale, lo scarico (o l'uso) dell'indicatore Fractals, ho un tale codice:


mostrami il tuo codice usando CopyRates()...

Igor, dovresti andare in prima elementare. Lì insegnano le lettere e dopo aver studiato capirete la differenza tra CopyRates e CopyBuffer.

È meglio che tu mi offra una soluzione a questo problema SENZA CopyRate(!)

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Come ottenere i parametri Open,Low,High,Close in MQL5?

Retrog Konow, 2019.07.29 19:58

Per il tavolo. Ci sono quattro parametri nella tabella: Open, Close, High, Low, ultime 10 barre, esclusa quella attuale.

Per ultimo, voglio dire che se ci si muove all'indietro rispetto alla corrente (zero).


 
Реter Konow:

Per il tavolo. Ci sono quattro parametri nella tabella: Open, Close, High, Low, le ultime 10 barre, esclusa quella attuale.

Ultimo, nel senso di andare indietro rispetto a quello attuale (zero).

In questo caso CopyRates della prima barra è inequivocabilmente 10. E chiamarlo non ogni tick, ma abbastanza quando appare una nuova barra.