Aprender y escribir juntos en MQL5 - página 8

 

estoy escribiendo un algoritmo de construcciones de precios sencillas transferidas a mcl5 desde mcl4, por ejemplo copiando el código de mcl4 a mcl5 estocástico y rsi, utiliza métodos básicos de acceso a los datos de mcl4.

Pronto tendremos lo que necesitamos.

ahora estoy luchando con la función iMaOnArRAu ya que mt5 no la proporciona para obtener los métodos más simples de promedios móviles de las matrices de los usuarios.

ampliaré las bibliotecas a todas las herramientas técnicas, conozco casi todos los algoritmos

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

Soy tan tonto... No sé cómo escribir...

Existe este código:

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

Quiero obtener el índice de la barra con el Mínimo más bajo entre las barras de i-ésima a j-ésima.

Estoy intentando utilizar la función ArrayMinimum.

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

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

¿Cuál es la forma correcta?

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

Soy tan tonto... No sé cómo escribir...

Existe este código:

Quiero obtener el índice de la barra con el Mínimo más bajo entre las barras de i-ésima a j-ésima.

Estoy intentando utilizar la función ArrayMinimum.

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

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

¿Cuál es la forma correcta?

Utiliza funciones de acceso directo, MqlRates es un array de "estructuras", y necesitas un array Low, aquí tienes un ejemplo, para High también.

   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)];

Vea ejemplos de códigos. Esto es de https://www.mql5.com/ru/code/102

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

Utiliza funciones de acceso directo, MqlRates es un array de "estructuras" y necesitas un array de Low, aquí tienes un ejemplo, inmediatamente y para High.

Es comprensible. En mi caso, acabo de escribir:

         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;}

No quiero un montón de matrices. No es ahorrativo en recursos y no es muy agradable...

Sólo quería entender exactamente conArrayMinimum - es posible utilizar esta función con una matriz de estructuras....

 
owl:

Es comprensible. En mi caso, acabo de escribir:

No quiero un montón de matrices... No ahorra recursos y no es muy agradable...

Sólo quería tratar con ArrayMinimum - ¿es posible utilizar esta función con un array de estructuras....

Si crees que almacenar un montón de información en una matriz de estructuras es más económico que una matriz de dobles, me quedo con las manos en la masa.

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

o ¿crees que almacenar ints, lows y fechas es más económico en términos de memoria?)

o escoger lo que necesitas de un montón de basura es más económico, ja, ja...

 
vdv2001:

Si crees que almacenar un montón de información en un array de estructuras es más económico que un array de dobles, entonces me rindo

¿o crees que almacenar ints, lows y fechas es más económico en términos de memoria? ;))

o escoger lo que necesitas de un montón de basura es más económico, ja, ja...

Bueno... Estoy un poco exagerado en cuanto a la rentabilidad, por supuesto... Pero, en realidad, necesito casi toda la información deMqlRates(excepto quizás los volúmenes, y eso no es un hecho...)
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 

Normalmente, antes de preguntar algo, reviso varias fuentes en busca de una respuesta.

Pero ahora, después de una semana de búsqueda, me he dado cuenta de que no tengo la respuesta, y creo que nadie la ha encontrado todavía. Por lo tanto, propongo un rompecabezas.

Datos iniciales:

1) Tengo un indicador simple como Niveles y Flechas iS7N_SacuL_v3.mq5 (adjunto)

2) un Asesor Experto que intenta recibir datos de este indicador aS7N_TIC.mq5 (adjunto)

¡Así que!

De los cinco búferes de indicadores, sólo se devuelven correctamente dos datos.

¡¡A continuación, una explicación detallada!!

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

Tras analizar la situación detenidamente, he comprobado que tanto los topes de 3 y 4 indicadores no siempre dan los datos correctos (aunque es imposible saber cuáles son correctos y cuáles no)

Mira el gráfico. En la ventana de datos de la izquierda hay valores del indicador en el gráfico y debajo hay valores obtenidos por el Asesor Experto. La mayoría de los valores son los mismos, pero hay algunos más...

A este respecto, he sugerido que se utilicen datos históricos diferentes en el gráfico y en el comprobador.

¿Qué te parece?

 

Por último, ¡el problema principal! No es posible obtener los datos de los búferes de los indicadores 1,2 y 5 de la forma habitual.

El problema es que al calcular los datos de estas matrices se tienen en cuenta los datos previamente calculados de las barras anteriores.

Por supuesto, al llamar al indicador, puede forzarlo a recalcular N barras próximas, independientemente del valor de prev_calculado .

Supongo que la llamada y el cálculo de los valores de los indicadores se realiza con el valor deprev_calculado no igual a 0

Para la mayoría de los indicadores esto es cierto, porque ahorra recursos, pero para el ejemplo dado no funcionará.

¿Qué hacer? ¿Qué opina?

También puede trasladar todos los cálculos al Asesor Experto. Esta opción funciona, pero no es lo mismo... Me gustaría no llevar los pantalones por encima de la cabeza.

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

en el Asesor Experto se utiliza

int resIup = CopyBuffer(iCusHandlI_H4,2,0,1,dBufIup_H4);
de la barra 0, los valores de los búferes de los indicadores se modifican en cada tick hasta el cierre de la vela.
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.