[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 56

 
Buenas tardes, por favor ayuda, hay una idea simple para implementar una llamada de Alert() cuando tres MAs se cruzan.
Descripción de la intersección en el programa. Parece que funciona, pero no como debería. Estoy redondeando las variables a un dígito para que
capte la intersección. Y este Alert() me tambalea mientras los medios estén en la misma posición. Cómo hago para que se llame una vez, bueno hasta 5 veces.
//+------------------------------------------------------------------+
//| Глобальные переменные                                  |
//+------------------------------------------------------------------+
   extern int Period_MA_Blue = 4;         // Период 4-х расчётной синей МА (4 часа)
   extern int Period_MA_Green = 13;       // Период 13-ти расчётной зеленой МА (13 часов)
   extern int Period_MA_Orange = 50;      // Период 50-ти расчётной оранжевой МА (2 дня 2 часа)
   double MA_Blue_EURUSD, MA_Green_EURUSD, MA_Orange_EURUSD;
   string SMA_Blue_EURUSD,SMA_Green_EURUSD,SMA_Orange_EURUSD;

//+------------------------------------------------------------------+
//| Начало программы                                  |
//+------------------------------------------------------------------+

int init(){return(0);}
int EURUSD()
      {
  
      if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD > SMA_Orange_EURUSD)
         {
          // Если зеленая МА пересекает оранжевую МА и при этом синяя МА выше - сигнал к покупке.
          Alert("Cигнал на ПОКУПКУ паре EURUSD");
          return(11); // 11 - на первой паре сигнал на покупку.
         }
  
      if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD < SMA_Orange_EURUSD)
         {
          // Если зеленая МА пересекает оранжевую МА и при этом синяя МА ниже - сигнал к продаже.
          Alert("Cигнал на ПРОДАЖУ паре EURUSD");
          return(10); // 20 - на первой паре сигнал на продажу.
         }     
      }
int start()

   {

//+------------------------------------------------------------------+
//| Блок работы с EURUSD                               |
//+------------------------------------------------------------------+
   if(EURUSD() != 11 || EURUSD() != 10)
      {
         // Если функция EURUSD() не зафиксировала ни один из сигналов, обрабатываем данные дальше.
         MA_Blue_EURUSD = iMA("EURUSD",PERIOD_H1,Period_MA_Blue,0,MODE_EMA,PRICE_CLOSE,0);
         MA_Green_EURUSD = iMA("EURUSD",PERIOD_H1,Period_MA_Green,0,MODE_EMA,PRICE_CLOSE,0);
         MA_Orange_EURUSD = iMA("EURUSD",PERIOD_H1,Period_MA_Orange,0,MODE_EMA,PRICE_CLOSE,0);
  
         SMA_Blue_EURUSD = MA_Blue_EURUSD;
     // Преобразование int в string
         SMA_Blue_EURUSD = StringSetChar(SMA_Blue_EURUSD, 6, '');     // Округление до х.хххх
         SMA_Green_EURUSD = MA_Green_EURUSD;   // Преобразование int в string
         SMA_Green_EURUSD = StringSetChar(SMA_Green_EURUSD, 6, '');   // Округление до х.хххх
         SMA_Orange_EURUSD = MA_Orange_EURUSD; // Преобразование int в string
         SMA_Orange_EURUSD = StringSetChar(SMA_Orange_EURUSD, 6, ''); // Округление до х.хххх

      }

     }

int deinit(){return(0);}




Si todo está mal en la raíz, sugiera métodos para rastrear la intersección. Gracias.
 
Zherart:
Buenas tardes, por favor ayuda, hay una idea simple para implementar una llamada de Alert() cuando tres MAs se cruzan.
Descripción de la intersección en el programa. Parece que funciona, pero no como debería. Estoy redondeando las variables a un dígito para
para coger la intersección. Y esta Alerta() me tambalea mientras los medios estén en la misma posición. Cómo hago para que se llame una vez, bueno hasta 5 veces.Si no es justo en la raíz, sugiera métodos para seguir la intersección. Gracias.

//+------------------------------------------------------------------+
//| Глобальные переменные                                  |
//+------------------------------------------------------------------+
   extern int Period_MA_Blue = 4;         // Период 4-х расчётной синей МА (4 часа)
   extern int Period_MA_Green = 13;       // Период 13-ти расчётной зеленой МА (13 часов)
   extern int Period_MA_Orange = 50;      // Период 50-ти расчётной оранжевой МА (2 дня 2 часа)
   double MA_Blue_EURUSD, MA_Green_EURUSD, MA_Orange_EURUSD;
   string SMA_Blue_EURUSD,SMA_Green_EURUSD,SMA_Orange_EURUSD;
   int БАРАБАНИТЬ = 1; // Сколько раз подавать сигнал
   int ПОКУПКА=0,ПРОДАЖА=0;
//+------------------------------------------------------------------+
//| Начало программы                                  |
//+------------------------------------------------------------------+

int init(){return(0);}
int EURUSD() 
      {
   
      if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD > SMA_Orange_EURUSD)
         { 
          // Если зеленая МА пересекает оранжевую МА и при этом синяя МА выше - сигнал к покупке.
          if(ПОКУПКА<БАРАБАНИТЬ) {Alert("Cигнал на ПОКУПКУ паре EURUSD");ПОКУПКА++;}
          return(11); // 11 - на первой паре сигнал на покупку.
         }
      else ПОКУПКА=0;
      if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD < SMA_Orange_EURUSD)
         { 
          // Если зеленая МА пересекает оранжевую МА и при этом синяя МА ниже - сигнал к продаже.
          if(ПРОДАЖА<БАРАБАНИТЬ) {Alert("Cигнал на ПРОДАЖУ паре EURUSD");ПРОДАЖА++;}
          return(10); // 20 - на первой паре сигнал на продажу.
         }
       else ПРОДАЖА=0;       
      }

En algún lugar así de un vistazo...
 
Sepulca, ¡¡¡gracias!!! Lo intentaremos. ¡¡¡Entendí el punto!!!
 
O soy un estúpido o hay algo mal en el terminal. Quería optimizar un EA, pero no hay una pestaña de "parámetros de entrada" en las propiedades del EA. Ayuda.
 
prom18:
O soy un estúpido o hay algo mal en el terminal. Quería optimizar un EA, pero no hay una pestaña de "parámetros de entrada" en las propiedades del EA. He estado tratando de optimizar mi EA, pero no hay una pestaña de "parámetros de entrada" en sus propiedades.



https://forum.mql4.com/ru/46980/page417#702426

https://www.mql5.com/ru/forum/138609/page417#702426

 

¿Es posible utilizar una matriz en los parámetros de una función? Por ejemplo, quiero crear una función que maneje la información de un array:

void Function(double Array[])
 {
  ...
 }
 
silhouette:

¿Es posible utilizar una matriz en los parámetros de una función? Por ejemplo, quiero crear una función que maneje la información de un array:


¿Qué dice aquí el tutorial?

"

Los parámetros a pasar se indican entre paréntesis después del nombre de la función a llamar y se enumeran, separados por comas. El número de parámetros pasados a una función no debe exceder de 64. La función también puede no utilizar los parámetros pasados. En este caso, se indica una lista de parámetros vacía, es decir, los paréntesis de apertura y cierre se colocan inmediatamente después del nombre de la función.

El número, el tipo y el orden de los parámetros pasados en la llamada a la función deben coincidir con el número, el tipo y el orden de los parámetros formales, especificados en la descripción de la función (la excepción es la llamada de una función, que tiene parámetros por defecto - véase Llamada a la función y Descripción de la función y operador de retorno). Si no hay tal coincidencia, el MetaEditor emitirá un mensaje de error. Se pueden utilizar constantes, variables, expresiones y matrices como parámetros pasados. "

 
silhouette:

¿Es posible utilizar una matriz en los parámetros de una función? Por ejemplo, quiero crear una función que maneje la información de un array:

Prueba esto:

void Function(double& Array[])
 {
  ...
 }
https://docs.mql4.com/ru/basis/variables/formal
 
Sepulca:


Lo mismo ocurre con Close - iClose, Open - iOpen, Time - iTime Volume - iVolume, etc.

Y el indicador puede dibujar hasta 8 líneas de 0 a 7 https://docs.mql4.com/ru/customind/indicatorbuffers


muchas gracias :) el indicador sigue sin dibujarse, tengo picos en líneas como price=iL[k]; donde iL es mi iLow...former Low

En fin, he encontrado muchas cosas útiles... pero no voy a indagar más...

hay un método más sencillo para visualizar el redibujado... sin un indicador personalizado.

 
Roman.:

¿Qué dice aquí el libro de texto?

"

Los parámetros a pasar se indican entre paréntesis después del nombre de la función a llamar, y se enumeran separados por comas. El número de parámetros pasados a la función no debe ser superior a 64. La función también puede no utilizar los parámetros pasados. En este caso, se indica una lista de parámetros vacía, es decir, los paréntesis de apertura y cierre se colocan inmediatamente después del nombre de la función.

El número, el tipo y el orden de los parámetros pasados en la llamada a la función deben coincidir con el número, el tipo y el orden de los parámetros formales, especificados en la descripción de la función (la excepción es la llamada de una función, que tiene parámetros por defecto - ver Llamada a la función y Descripción de la función y operador de retorno). Si no hay tal coincidencia, el MetaEditor emitirá un mensaje de error. Se pueden utilizar constantes, variables, expresiones y matrices como parámetros pasados. "

Leer el libro de texto antes de escribir, ver el subrayado, pero no pudo aplicar en la práctica - escribe sobre el tipo incompatible.