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

 

¡Buenas tardes!

Necesito ayuda/consejo. En el terminal hay una opción para mezclar varios indicadores. En este caso es posible fijar los rangos.

Por ejemplo, CCI min=-300 max=300 y RSI min=0 max=100.

¿Es posible implementar en el Asesor Experto para cruzar 2 indicadores. Supongamos que el CCI cruza el RSI de abajo hacia arriba => abrir una orden de Bahía.

¿Es posible?

¿O no es posible ya que estos indicadores tienen un rango de valores diferente? Con el rsi el rango de valores está limitado de 0 a 100, y con el cci los valores pueden ser tanto positivos como negativos y no están limitados al valor máximo...

 
lomaxx7:

¡Buenas tardes!

Necesito ayuda/consejo. En el terminal hay una opción para mezclar varios indicadores. En este caso es posible fijar los rangos.

Por ejemplo, CCI min=-300 max=300 y RSI min=0 max=100.

¿Es posible implementar en el Asesor Experto para cruzar 2 indicadores. Supongamos que el CCI cruza el RSI de abajo hacia arriba => abrir una orden de Bahía.

¿Es posible?

¿O no es posible ya que estos indicadores tienen un rango de valores diferente? Con el rsi el rango de valores está limitado de 0 a 100, y con el cci los valores pueden ser tanto positivos como negativos y no están limitados al valor máximo...

Si escribe su propio iRSI para este propósito, puede restar 50 del valor del iRSI y obtener un indicador con nivel cero. Queda una pregunta: ¿para qué sirve mezclar los indicadores de esta manera?

 
Alexey Viktorov:

Si escribe su propio iRSI para este mismo propósito, puede restar 50 del valor del iRSI y obtener un indicador de nivel cero. Queda una pregunta: ¿para qué sirve mezclar los indicadores de esta manera?

Gracias. Hay algunas ideas que deben ser elaboradas.
 

lomaxx7:

Es posible implementar en un EA la función de cruzar 2 indicadores. Supongamos que el CCI cruza el RSI de abajo a arriba => abre la orden Bay...

¿Es esto posible?

¿O no es posible ya que estos indicadores tienen un rango de valores diferente? Con el rsi el rango de valores está limitado de 0 a 100, y con el cci los valores pueden ser tanto positivos como negativos y no están limitados al valor máximo...

No es complicado. Puede calcularel CCI a travésdel RSI y viceversa. Mira la documentación. Para cada indicador hay una explicación de los precios que se pueden utilizar.

https://www.mql5.com/ru/docs/indicators/irsi

precio_aplicado

[en]Preciousado . Puede ser cualquiera de las constantes de precio ENUM_APPLIED_PRICE o puede ser un manejador de otro indicador.

Porejemplo, sustituimos el asa del CCI en elRSI:

int OnInit()
h_cci=iCCI(_Symbol, _Period, cci_ma_period, cci_applied_price);
h_rsi=iRSI(_Symbol, _Period, rsi _ma_period, h_cci);
Далее
void OnTick() 
if(CopyBuffer(h_cci,0,0,to_copy, cci_buf)<=0) return(0);
if(CopyBuffer(h_rsi,0,0,to_copy, rsi _buf)<=0) return(0);
Далее сравниваете значения:
if(cci_buf>rsi_buf) {...ваши действия; ...buy; ...sell;} 
else
if(cci_buf<rsi_buf) {...ваши действия; ...buy; ...sell;}

El rango de valores en este caso no es importante ya que el siguiente oscilador ya utiliza los valores del oscilador anterior.

Документация по MQL5: Технические индикаторы / iRSI
Документация по MQL5: Технические индикаторы / iRSI
  • www.mql5.com
Технические индикаторы / iRSI - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
 //+------------------------------------------------------------------+
class A
  {
public: int       propA;
public:
                     A(void) {propA = 15;};
                    ~A(void) {};
  };
//+------------------------------------------------------------------+
class B: public A
  {
public:
                     B(void){};
                    ~B(void){};
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   B newObj;
   GetA(newObj);
//---
   //B newObjArray[3];
   //GetA_Array(newObjArray);
  }
//+------------------------------------------------------------------+
void GetA(A &obj)
  {
   Print(obj.propA);
  }
//+------------------------------------------------------------------+
void GetA_Array(A &obj[])
  {
   for(int i=0;i<ArraySize(obj);i++)
      Print(obj[i].propA);
  }
//+------------------------------------------------------------------+

Si descomentamos las líneas restantes en OnStart() obtenemos "newObjArray - parameter conversion not allowed".

Dos preguntas: ¿por qué y cómo solucionarlo?
 

¿Puede decirme cómo obtener un informe de posición desde el terminal?

El caso es que en el terminal veo una posición normal, pero en el informe en Excel está dividido en partes, lo que no me conviene.

 

Hola 2017.06.30_18:11 GMT+3. Conocedores del foro. He probado mi EA en MT5 en el probador de estrategias. Abre y cierra operaciones, pero parece que sólo en la primera condición para abrir y cerrar operaciones. Así que decidí probar el EA en una cuenta demo. Sin embargo, el EA desaparece inmediatamente del gráfico de la cuenta demo. Resulta que tiene un error en la cuenta demo: 2017.06.30 18:08:17.878 Late_raw3 (GOLD,M1) array out of range in 'Cross.mqh' (18,12).
Extrañamente, no se encontró tal error en el probador de estrategias. He intentado buscar el error pero no lo he entendido. La pregunta no puede ser más tonta. Fue muy confuso para mí. ¿Podrían los programadores de MetaQuotes meter la pata en este caso? El asesor experto estándar Moving Average.mq5 tiene el mismo código (lo reescribí desde allí). No tiene ningún error en la cuenta demo. Pero no se comercializó. He negociado en М1. Sin embargo, no he esperado mucho tiempo. ¿Cuál es el problema? Estaré esperando sus respuestas. Lo estoy deseando. Se adjuntan los archivos, aunque no todos a fondo. 18:26 GMT+3. He probado diferentes formas de cambiar el código, pero el resultado es doble: o se sale del array, o escribe el error "No hay datos del indicador". Y en el diario del probador de estrategias se puede ver cómo se obtienen los "excesos". Se toma el precio de apertura de la primera operación. Difiere del precio de apertura de la segunda operación. Esta "desviación" (es mayor que mis 130 puntos) se llama "rebasamiento". También hay que dar las gracias a los programadores de MetaQuotes. No se aburrirá. Todo lo que haces es lento. Voy a terminar el Asesor Experto antes. 18:45 GMT+3. Si necesita alguna aclaración, no dude en ponerse en contacto conmigo. Eso es todo. 18:51 GMT+3.

Archivos adjuntos:
 
Николай Никитюк:

Hola 2017.06.30_18:11 GMT+3. Conocedores del foro. He probado mi EA en MT5 en el probador de estrategias. Abre y cierra operaciones, pero parece que sólo en la primera condición para abrir y cerrar operaciones. Así que decidí probar el EA en una cuenta demo. Sin embargo, el EA desaparece inmediatamente del gráfico de la cuenta demo. Resulta que tiene un error en la cuenta demo: 2017.06.30 18:08:17.878 Late_raw3 (GOLD,M1) array out of range in 'Cross.mqh' (18,12).
Extrañamente, no se encontró tal error en el probador de estrategias. He intentado buscar el error pero no lo he entendido. La pregunta no puede ser más tonta. Fue muy confuso para mí. ¿Podrían los programadores de MetaQuotes meter la pata en este caso? El asesor experto estándar Moving Average.mq5 tiene el mismo código (lo reescribí desde allí). No tiene ningún error en la cuenta demo. Pero no se comercializó. He negociado en М1. Sin embargo, no he esperado mucho tiempo. ¿Cuál es el problema? Estaré esperando sus respuestas. Lo estoy deseando. Se adjuntan los archivos, aunque no todos a fondo. 18:26 GMT+3. He probado diferentes formas de cambiar el código, pero el resultado es doble: o se sale del array, o escribe el error "No hay datos del indicador". Y en el diario del probador de estrategias se puede ver cómo se obtienen los "excesos". Se toma el precio de apertura de la primera operación. Difiere del precio de apertura de la segunda operación. Esta "desviación" (es mayor que mis 130 puntos) se llama "rebasamiento". También hay que dar las gracias a los programadores de MetaQuotes. No se aburrirá. Todo lo que haces es lento. Voy a terminar el Asesor Experto antes. 18:45 GMT+3. Si necesita alguna aclaración, no dude en ponerse en contacto conmigo. Eso es todo. 18:51 GMT+3.


Hasta ahora parece que "rates" (archivo "Cross.mqh", línea 18, posición del cursor 12) se declara en algún lugar a nivel global - por lo que todas las preguntas se reducen a: "¿Cómo se rellenan realmente estas "tasas"?".

 

Intento calcular el ángulo de intersección de dos curvas. La tarea ni siquiera consiste en encontrar el ángulo en sí, sino en comprobar si es agudo u obtuso. Incluso dibujé esto. Puedo encontrar la tangente de B y la tangente de C. Cómo puedo conocer estas tangentes, para determinar si el ángulo A es agudo. Ayúdame, no soy muy bueno en trigonometría. Por supuesto, sin encontrar los ángulos mismos - debido a la diferencia de escalas sus valores son inadecuados.


 
igorbel:

Intento calcular el ángulo de intersección de dos curvas. La tarea ni siquiera consiste en encontrar el ángulo en sí, sino en comprobar si es agudo u obtuso. Incluso dibujé esto. Puedo encontrar la tangente de B y la tangente de C. ¿Cómo puedo conocer estas tangentes para determinar si el ángulo A es agudo? Ayúdame, no soy muy bueno en trigonometría. Por supuesto, sin encontrar los ángulos mismos - debido a la diferencia de escalas sus valores son inadecuados.


Para encontrar tangentes, ¿tienes un triángulo rectángulo?