Aprender y escribir juntos en MQL5 - página 9

 
gdtt:

el asesor utiliza

se toma el valor de la barra 0, los valores de los búferes de los indicadores se cambian en cada tick hasta el cierre de la vela.

Así es, experimenté, pero en esencia no resuelve el problema principal.-- Cómo hacer que un EA recalcule el buffer del indicador no sólo en la barra solicitada, sino también varias barras hacia atrás

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

Puede que se haya encontrado una solución. Uno de ellos...

Para ello, sin embargo, hay que hacer una versión especial del indicador.

 

Caballeros,

Estoy escribiendo un indicador: ...
int handle;
double indicatorBuffer[];
...
int OnInit()
{
... handleMA = iMA(_Símbolo, _Periodo, periodMA, shiftMA, MODE_SMA, AppPrice);
...
}

int OnCalculate (const int rates_total, // tamaño del array price[]
const int prev_calculated, // barras procesadas en la llamada anterior
const int begin, // donde comienzan los datos significativos
const double& price[]) // array para el cálculo
{
... haciendo algo

La pregunta es: ¿cómo dejar que handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice) sepa qué es AppPrice?
o ¿cómo extraer Apply to: de la pestaña Parameters para usarlo en el código?

Gracias de antemano...

 
FlyAgaric:

Caballeros,


La pregunta es: ¿cómo hacer que handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice) sepa qué es AppPrice?
o cómo extraer Aplicar a: de la pestaña Parámetros para utilizarla en el código?

Gracias de antemano...

Véase OnCalculate():

La selección de una serie temporal o un indicador necesario como matriz de precios[] la realiza el usuario al iniciar el indicador en la pestaña "Parámetros". Para ello, debe especificar el elemento necesario en la lista desplegable del campo "Aplicar a".

Para recibir los valores de un indicador personalizado desde otros programas mql5, se utiliza la función iCustom(), que devuelve el manejador del indicador para las operaciones posteriores. También puede especificar la matriz de precios[] apropiada o el mango de otro indicador. Este parámetro debe pasarse en último lugar en la lista de variables de entrada del indicador personalizado.
 
Rosh:

Véase OnCalculate():


Rosh gracias, pero mi pregunta es exactamente esa. ¿Qué debo especificar en la declaración
handleMA = iMA(_Símbolo, _Periodo, periodMA, shiftMA, MODE_SMA, AppPrice)
como AppPrice?

Estoy leyendo con atención la ayuda disponible. Tal vez el calor haya hecho mella, pero ...

 
FlyAgaric:

Rosh gracias, pero mi pregunta es exactamente esa. ¿Qué debo especificar en la declaración
handleMA = iMA(_Símbolo, _Periodo, periodMA, shiftMA, MODE_SMA, AppPrice)
como AppPrice?

He leído la ayuda disponible con mucha atención. Tal vez el calor haya hecho mella, pero ...

Especifique una manija de indicador, si desea calcular sobre los datos de otro indicador. O el tipo de precios sobre los que se calculará el indicador.
 
FlyAgaric:

Rosh gracias, pero mi pregunta es exactamente esa. ¿Qué debo especificar en la declaración
handleMA = iMA(_Símbolo, _Periodo, periodMA, shiftMA, MODE_SMA, AppPrice)
como AppPrice?

He leído la ayuda disponible con mucha atención. Tal vez el calor haya hecho mella, pero ...

El calor. Debe especificar ENUM_APPLIED_PRICE como AppPrice)
input ENUM_APPLIED_PRICE AppPrice=PRICE_CLOSE;
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Swan:
El calor. Debe especificar ENUM_APPLIED_PRICE como AppPrice)

Cisne, gracias por su atención. Pero si utiliza
input ENUM_APPLIED_PRICE AppPrice=PRICE_CLOSE; y el primer formulario

int OnCalculate (const int rates_total, // tamaño del array price[]
const int prev_calculado, // barras procesadas en la llamada anterior
const int begin, //donde comienzan los datos significativos
const double& price[]) // matriz para el cálculo
Obtenemos un mensaje de advertencia en la compilación: Se definen dos funciones OnCalculate. Se utilizará la función de datos de precios NameIndicator.mq5 (pg)
y la matriz price[] no está vinculada a AppPrice de ninguna manera, a menos que sea la misma que la de Apply to: en la tercera pestaña "Parámetros".

La pregunta, de hecho, es si los indicadores incorporados de un solo búfer como iMA() y la primera forma de intCalculate() pueden ser utilizados, si el array price[] es de alguna manera
utilizados en los cálculos.

 
Rosh:
Especifique el mango del indicador si quiere calcular sobre los datos de otro indicador. O tipo de precios sobre los que se calculará el indicador.

Nosotros (más bien yo) tenemos algún malentendido.

La cuestión, de hecho, es si podemos utilizar indicadores incorporados de un solo búfer como iMA() y la primera forma de int OnCalculate(), si la matriz price[] se utiliza de alguna manera
en los cálculos.

 
FlyAgaric:

Nosotros (más bien yo) tenemos algún malentendido.

La pregunta, de hecho, es si se pueden utilizar indicadores incorporados de un buffer de tipo iMA() y la primera forma int OnCalculate() si la matriz price[] es de alguna manera
utilizados en los cálculos.

Su parámetroAppPrice no tiene nada que ver con OnCalculate().

int OnInit()
{
... handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
...
}

Puede darle el valor de una de las constantes de precio (opción 1) o el mango de algún otro indicador (opción 2). Y entonces sí:

1ª variante.

En la función OnCalculate() del segundo tipo

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread
   );

solicitar todos los datos necesarios y realizar el cálculo

2ª variante.

Utilizar OnCalculate() de cualquier tipo que requiera el código y utilizar CopyBuffer() para obtener los valores del indicador.