Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 240

 
barabashkakvn:

Hola.

1. No puedo utilizar el indicador "Blau_Ergodic" porque no hay ningún archivo al final del artículo. Ahora necesito un archivo de inclusión " WilliamBlau.mqh". Por favor, envíenme este archivo (mejor a través de un mensaje de perfil).

2. Todos los indicadores están en...MQL5\Indicators\Examples\ - estos son indicadores personalizados, es decir, aquellos indicadores, cuyo código puede modificar.

Enviado.
 
forexman77:

Estoy intentando construir un generador de señales de trading basado en un indicador personalizado.

Se han planteado las siguientes preguntas:

1. Puedo especificar cualquier nombre en la línea después de CiCustom, por ejemplo marcarlo como "m_ind;".

2. ¿Esta línea es correcta?

He entendido bien, ¿aquí obtengo el valor del propio indicador?

3. No puedo entender cómo el programa obtiene el valor del indicador. Es decir, si usamos MQL4, debemos especificar el nombre del indicador y el programa lo encontrará por su nombre. Entonces, ¿dónde introduzco su nombre en la clase?

He creado este código) no voy a ir más allá, porque necesito más Expert Advisor en mi creación.

En general, todo es correcto. Aquí está sólo el código:

   double             Custom(int index)                   { return(m_ind.ParamDouble(index));}
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }

plantea una pregunta. ParamDouble - obtiene el valor de un parámetro de punto flotante especificado, que se utilizó en la creación del indicador. Tal vez necesitemos acceder al valor del buffer del indicador:

   double             Custom(int index)                   { return(m_open.GetData(index));  }
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }

?

 
barabashkakvn:

En definitiva, todo es correcto. Excepto el código:

plantea una pregunta. ParamDouble - obtiene el valor del parámetro de punto flotante especificado, utilizado al crear el indicador. Tal vez tengamos que acceder al valor del buffer del indicador:

?

Mirando la ayuda, me parece que se necesita " ParamDouble". En realidad necesitamos obtener el valor del buffer.

Sólo he encontrado "NumBuffers" en la clase"CiCustom"

 
forexman77:
Mirando la ayuda, me parece que necesita " ParamDouble". Por lo general, es necesario obtener el valor del buffer.
Bueno, ya veo que todo te saldrá bien.
 
barabashkakvn:
Bueno, veo que todo te saldrá bien.
Si entiendo bien
double             Custom(int index)                   { return(m_ind.ParamDouble(index));}

¿es el valor del indicador solicitado con esta línea?

En los indicadores estándar los valores del buffer se obtienen a través del acceso a los datos, pero no hay nada sobre el acceso a los datos en el indicador personalizado.

Existen funciones en el grupo de clases básicas y auxiliares de indicadores técnicos y series temporales, pero ¿cómo las adjunto? ¿O no es lo que necesito?

 
forexman77:
Si entiendo bien

¿es el valor del indicador solicitado con esta línea?

En los indicadores estándar los valores del buffer se obtienen a través del acceso a los datos, pero no hay nada sobre el acceso a los datos en el indicador personalizado.

Existen funciones en el grupo de clases básicas y auxiliares de indicadores técnicos y series temporales, pero ¿cómo las adjunto? ¿O no es la correcta?

1. Sí el valor del parámetro - por ejemplo el parámetro de entrada sobre el que se calculará el indicador.

2. No se confunda: el indicador en el que puede cambiar el código es un indicador personalizado. Incluso si su nombre es el mismo que el indicador que viene en la biblioteca estándar. Un ejemplo de indicador personalizado - ...MQL5\Indicadores\NEjemplos\Ny cualquier otro donde se pueda cambiar el código. El buffer del indicador dibuja su contenido (datos) en el gráfico. Simplemente se cambian los datos en el buffer del indicador y se dibujan en el gráfico. ¿Qué acceso está preguntando?

3. No lo entiendo.

 
barabashkakvn:

1. Sí valor del parámetro - por ejemplo, parámetro de entrada sobre el que se calculará el indicador.

2. No se confunda: el indicador en el que puede cambiar el código es un indicador personalizado. Incluso si su nombre es el mismo que el indicador que viene en la biblioteca estándar. Un ejemplo de indicador personalizado - ...MQL5\Indicadores\NEjemplos\Ny cualquier otro donde se pueda cambiar el código. El buffer del indicador dibuja su contenido (datos) en el gráfico. Simplemente se cambian los datos en el buffer del indicador y se dibujan en el gráfico. ¿Qué acceso está preguntando?

3. No lo entiendo.

Este es el parámetro de entrada período, que se utiliza para calcular el indicador "q"

class CSampleSignal : public CExpertSignal
  {
protected:
   CiCustom           m_ind;              // объект для доступа к значениям ind
   CiOpen             m_open;            // объект для доступа к ценам открытия баров
   CiClose            m_close;           // объект для доступа к ценам закрытия баров
  //--- настраиваемые параметры
   int      q;  // q - период, по которому вычисляется индикатор
   double             m_stop_loss;       // уровень установки ордера "stop loss" относительно цены открытия
   double             m_take_profit;     // уровень установки ордера "take profit" относительно цены открытия
public:
              CSampleSignal();
   //--- методы установки параметров настройки
   void               Q(int value)                 { q=value;   }
   void               StopLoss(double value)       { m_stop_loss=value;   }
   void               TakeProfit(double value)     { m_take_profit=value; }

A la pregunta 2. Ahora el siguiente código

protected:
   //--- метод инициализации объектов
   bool               Initind(CIndicators* indicators);
   bool               InitOpen(CIndicators* indicators);
   bool               InitClose(CIndicators* indicators);
   //--- методы доступа к данным объектов
   double             Custom(int index)                   { return(m_ind.ParamDouble(index));}//знаю, что не правильно
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }
  };

Si he entendido bien, ¿especificamos aquí que queremos recibir información sobre los precios de apertura y cierre, valores de los buffers de los indicadores?

Entiendo lo que quieres decir con los indicadores estándar. Los datos del buffer se obtienen a través de"Main".Por ejemplo, se muestra en el código siguiente

 double             MA(int index)                       { return(m_MA.Main(index));       }
 double             Open(int index)                     { return(m_open.GetData(index));  }
 double             Close(int index)                    { return(m_close.GetData(index)); }

A la tercera pregunta. ¿Cómo se obtienen los datos del indicador personalizado?

Para una mejor comprensión, ¿qué pasos hay que pasar en el proceso de creación del generador de la señal de trading?

 
Si he entendido bien, ¿especificamos aquí que queremos obtener información sobre los precios de apertura y cierre, valores de los buffers de los indicadores?

Sí.

Los indicadores estándar son claros. Los datos del buffer se recuperan a través de "Main". Por ejemplo, como en el código siguiente.

Sí, la clase CiMA tiene el métodoMain

¿Cómo se obtienen los datosdel indicador personalizado?

.GetData(index))
donde el índice es el número de búfer del indicador.
 
barabashkakvn:

Sí.

Sí, la clase CiMA tiene un métodoMain

donde el índice es el número de la memoria intermedia del indicador.
double             Main(int ind)                       { return(m_ind.GetData(0,ind));   }
¿Verdad?)
 


cuando saldrá metatrader en windows phone 8