Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 394

 

Hola.

Por favor, ayúdame a colorear un zigzag.

Quiero hacer que si la distancia de la depresión a la cima es >=100 puntos, colorear el segmento en verde.

 
Dimitry-1983:

¡Hola!

Ya me he devanado los sesos. ¿Cómo puedo comprobar si hay un precio determinado en la matriz doble?

Lo escribí así para la prueba:



El script encuentra 11, 22, 33, 44 sin problemas (el terminal tiene esas órdenes). Sin embargo, si el script procesa el precio de 45, por ejemplo, sigue mostrando 3 (posición del precio 44 en la matriz).

Lo que realmente necesito es un bool - si hay un precio de la orden que se está procesando en el array, debería devolver true, si no, debería devolver false. Pero todavía no he encontrado esa función en el idioma.

La funcióndevuelve el índice del primer elemento encontrado en la primera dimensión del array, perosi no se encuentra el valor buscado, devuelve el índice del elemento con el valor más pequeño, entre el que se encuentra el valor buscado. Por lo tanto, para esta tarea, también debemos comprobar la igualdad del valor buscado y el encontrado. El resultado de la comparación será verdadero o falso

 
STARIJ:

¿Por qué debo imprimir algo del indicador? Todo está en la pantalla: eso es el indicador. Cuando necesito una tabla - ejecuto el script con iCustom()


Lo que has escrito aquí, no he entendido nada. Estábamos hablando del hecho de crear un archivo, que siempre está vacío por alguna razón. No puedo meter un array de datos en un archivo.

Necesito que los datos se guarden en un archivo. Si el indicador está unido al gráfico durante 1 año, todos los registros de sus lecturas durante un año deberían estar ahí.

 
Alekseu Fedotov:

Es una forma interesante de coserlo.

Prueba esto por error.


Gracias. Pero ya lo he intentado y no ha funcionado.

 

¿Pueden aconsejarme por qué salen los errores?

//--- input parameters
input int      MyLevel=100; // установка уровня (отступ) выше (ниже) текущей цены;
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   SetIndexBuffer(1,Label2Buffer);
   double R1 = 0; // служеные переменные принимаются равными 0;
   double R2 = 0; // служебные переменные; принимаются равными 0;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   double i=Bid; // переменной i присваивается значение текущего курса;

   if(i>=R1) // если текущий курс >= служебной переменной R1;
     {
      R1=i+(MyLevel*Point); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel*Point); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
      break;  // иначе, выходим из оператора
     }
   if(i<=R2) // если текущий курс <= служебной переменной R2;
     {
      R1=i+(MyLevel*Point); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel*Point); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
      break; // иначе выходим
     }

   Label1Buffer [0] = R1; // заносим в буфер данные R1
   Label2Buffer [0] = R2; // и R2

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Errores:

'R1' - identificador no declarado Mylevel.mq4 61 10

posible pérdida de datos debido a la conversión de tipo Mylevel.mq4 63 9

'R2' - identificador no declarado Mylevel.mq4 64 7

';' - 'break' debe usarse dentro de algún bucle o sentencia switch Mylevel.mq4 68 12

';' - 'break' debe usarse dentro de algún bucle o sentencia switch Mylevel.mq4 77 12


 
YarTrade:

¿Pueden aconsejarme por qué salen los errores?

Errores:

'R1' - identificador no declarado Mylevel.mq4 61 10

posible pérdida de datos debido a la conversión de tipo Mylevel.mq4 63 9

'R2' - identificador no declarado Mylevel.mq4 64 7

';' - 'break' debe usarse dentro de algún bucle o sentencia switch Mylevel.mq4 68 12

';' - 'break' debe usarse dentro de algún bucle o sentencia switch Mylevel.mq4 77 12


R1, R2 se declaran dentro de una función, respectivamente - sólo visible allí - son locales.
break se utiliza en los bucles y swith
 

No sé si hay un programa para combinar informes de pruebas similar al reportmanager para mt5,el reportmanager no los abre.

 
iv1986:

Si lo sabes, ¿hay algún programa para combinar informes de pruebas similar a reportmanager para mt5, peroreportmanager no los abre?

Es más fácil reescribir el código y hacer pruebas de multidivisas en mt5. Los resultados de las pruebas en la plataforma mt4 definitivamente no son correctos, y el resultado final será críticamente distorsionado y no tiene sentido analizarlo.

Aquí está una de las 23 pruebas de símbolos, todo es claro y casi obvio


 

¿Puedo hacer un EA multi-instrumental si tengo diferentes parámetros y estrategias para cada instrumento?

Vitaly Muzichenko:

Es más fácil reescribir el código y hacer pruebas de multidivisas en mt5. Los resultados de las pruebas en la plataforma mt4 son obviamente erróneos, y el resultado final estará críticamente distorsionado y no tiene sentido analizarlo.

Aquí está una de las pruebas para 23 símbolos, todo es claro y casi obvio


Si tengo una estrategia diferente y el correspondiente código diferente para cada símbolo, ¿puedo hacer un EA de este tipo?

 
iv1986:

¿Puedo hacer un EA multi-instrumental si tengo diferentes parámetros y estrategias para cada instrumento?

Y si tengo diferentes estrategias y código para cada instrumento, ¿es posible hacer un EA así?

Puedes escribir un EA multidivisa, estará en un solo archivo. Es posible combinar las estrategias para diferentes pares en un solo archivo para el probador, y también es posible operarlas en línea en un solo gráfico, pero es posible separarlas para que cada estrategia opere en el símbolo en el que se ha colocado el EA. Las posibilidades son ilimitadas

Razón de la queja: