Imparare e scrivere insieme in MQL5 - pagina 8

 

sto scrivendo un algoritmo di semplice prezzo costruzioni trasferimento a mcl5 da mcl4, per esempio copiando mcl4 codice a mcl5 stocastico masd e rsi, utilizza metodi di base di accesso ai dati mcl4.

Presto avremo quello che ci serve.

ora sto lottando con la funzione iMaOnArRAu poiché mt5 non la fornisce per ottenere i metodi più semplici delle medie mobili dagli array di utenti.

amplierò le librerie a tutti gli strumenti tecnici, conosco quasi tutti gli algoritmi

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих - Документация по MQL5
 

Sono così stupido... Non riesco a capire come scrivere...

C'è questo codice:

   MqlRates rates[];
   
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(_Symbol,_Period,0,1000,rates);
   

Voglio ottenere l'indice della barra con il minimo più basso tra le barre da i-esimo a j-esimo.

Sto cercando di usare la funzione ArrayMinimum.

int k=ArrayMinimum(rates.low,i,j-i+1); - sbagliato

int k=ArrayMinimum(rates[].low,i,j-i+1); - sbagliato

Qual è il modo corretto?

Документация по MQL5: Операции с массивами / ArrayMinimum
Документация по MQL5: Операции с массивами / ArrayMinimum
  • www.mql5.com
Операции с массивами / ArrayMinimum - Документация по MQL5
 
owl:

Sono così stupido... Non riesco a capire come scrivere...

C'è questo codice:

Voglio ottenere l'indice della barra con il minimo più basso tra le barre da i-esimo a j-esimo.

Sto cercando di usare la funzione ArrayMinimum.

int k=ArrayMinimum(rates.low,i,j-i+1); - sbagliato

int k=ArrayMinimum(rates[].low,i,j-i+1); - sbagliato

Qual è il modo corretto?

Usate funzioni di accesso diretto, MqlRates è un array di "strutture", e avete bisogno di un array Low, ecco un esempio, anche per High.

   rates_total=CopyHigh(NULL,_Period,_start,_end,iHigh);
   if(rates_total<=0)
      return;
   else
      HighDay=iHigh[ArrayMaximum(iHigh,0,rates_total)];
   rates_total=CopyLow(NULL,_Period,_start,_end,iLow);
   if(rates_total<=0)
      return;
   else
      LowDay=iLow[ArrayMinimum(iLow,0,rates_total)];

Date un'occhiata agli esempi di codici. Questo è da https://www.mql5.com/ru/code/102

PivotPointUniversal
PivotPointUniversal
  • voti: 17
  • 2010.04.26
  • Dmitry
  • www.mql5.com
Опорные точки Pivot без использования объектов строятся по всей доступной истории. Пять вариантов расчета. Три варианта построения: дневной, недельный, месячный. Для дневных уровней есть возможность смещения по GMT.
 
vdv2001:

Usate le funzioni di accesso diretto, MqlRates è un array di "strutture" e avete bisogno di un array di Low, ecco un esempio, immediatamente e per High.

È comprensibile. Nel mio caso, ho appena scritto:

         int k=i; double min=rates[k].low;
         for (int m=i+1;m<=j;m++)
            if (rates[m].low<min) {min=rates[m].low; k=m;}

Non voglio un mucchio di array. Non è parsimonioso di risorse e non è molto bello...

Volevo solo capire esattamente conArrayMinimum - è possibile utilizzare questa funzione con un array di strutture....

 
owl:

È comprensibile. Nel mio caso, ho appena scritto:

Non voglio un mucchio di array... Non è un risparmio di risorse e non è molto bello...

Volevo solo trattare con ArrayMinimum - è possibile usare questa funzione con un array di strutture....

Se pensate che memorizzare un mucchio di informazioni in un array di strutture sia più economico di un array di doppi, sto solo alzando le mani.

struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем 
  };

o pensate che memorizzare ints, longs e date sia più economico in termini di memoria?)

o raccogliere quello che ti serve da un mucchio di spazzatura è più economico, ha ha ...

 
vdv2001:

Se pensate che memorizzare un mucchio di informazioni in un array di strutture sia più economico di un array di doppi, allora mi arrendo

o pensate che memorizzare ints, low e date sia più economico in termini di memoria? ;))

o raccogliere quello che ti serve da un mucchio di spazzatura è più economico, ha ha ...

Bene... Sono un po' sopra le righe per quanto riguarda il rapporto costo-efficacia, naturalmente... Ma, in realtà, ho bisogno di quasi tutte le informazioni diMqlRates(tranne forse i volumi, e questo non è un fatto...)
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 

Di solito, prima di chiedere qualcosa, vado a cercare una risposta in varie fonti.

Ma ora, dopo una settimana di ricerche, mi sono reso conto che non ho una risposta e credo che nessuno l'abbia ancora trovata. Perciò propongo un enigma.

Dati iniziali:

1) Ho un indicatore semplice come Levels and Arrows iS7N_SacuL_v3.mq5 (allegato)

2) un Expert Advisor che cerca di ricevere dati da questo indicatore aS7N_TIC.mq5 (allegato)

Quindi!

Su cinque buffer di indicatori, solo due dati vengono restituiti correttamente.

Seguirà una spiegazione dettagliata!!!

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
File:
 

Avendo esaminato attentamente la situazione, ho trovato che entrambi i buffer a 3 e 4 indicatori non danno sempre i dati corretti (anche se è impossibile dire quali sono corretti e quali no)

Guarda il grafico. Nella finestra Dati a sinistra ci sono i valori dell'indicatore nel grafico e sotto ci sono i valori ottenuti dall'Expert Advisor. La maggior parte dei valori sono gli stessi, ma ce ne sono altri...

A questo proposito, ho suggerito di utilizzare diversi dati storici nel grafico e nel tester.

Cosa ne pensate?

 

Finalmente, il problema principale! Non è possibile ottenere i dati dei buffer di 1,2 e 5 indicatori nel modo usuale.

Il problema è che i dati calcolati in precedenza delle barre precedenti sono presi in considerazione quando si calcolano i dati per queste matrici.

Naturalmente, quando chiamate l'indicatore, potete forzarlo a ricalcolare N barre prossime, indipendentemente dal valore di prev_calculated .

Suppongo che la chiamata e il calcolo dei valori dell'indicatore siano eseguiti con il valore diprev_calculated non uguale a 0

Per la maggior parte degli indicatori questo è vero, perché risparmia risorse, ma per l'esempio dato non funzionerà.

Cosa fare? Quali sono i vostri pensieri?

In alternativa, puoi spostare tutti i calcoli nell'Expert Advisor! Questa opzione funziona, ma non è la stessa... Mi piacerebbe non indossare i pantaloni sopra la testa.

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 

nell'Expert Advisor viene utilizzato

int resIup = CopyBuffer(iCusHandlI_H4,2,0,1,dBufIup_H4);
dalla barra 0, i valori dei buffer degli indicatori per esso vengono cambiati ad ogni tick fino alla chiusura della candela.
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Motivazione: