Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 553

 
splxgf:
No es un error, es una característica. Puede consultar aquí https://www.mql5.com/ru/articles/1388

¡YOOOOO gracias! Oh, tío. Con un solo clic se solucionó el problema.
 
AlexeyVik:

En matemáticas, el 0 es el 0, y en su caso el 0 es algún precio del que partió todo.

Si el precio de apertura es 1,3926, como sugirió splxgf, entonces 0 estará en 1,3926/123*100=1,1322 o 1,3926/1,23=1,1322.

El 1% de este movimiento de precios sería (1,3926-1,1322)/100=0,0026

Además, espero que lo descubras por ti mismo.


Estimados señores, esto es una tontería. Fibo se construye sobre 2 puntos, lee lo que escribí antes. No se puede calcular nada a partir de un punto 1,3926. Mira cuando el euro estaba a 1,13 :)

El precio de referencia es el nivel 0 de Fibo (mínimo/máximo de 4H, día, semana, mes, año...) y es un precio completamente específico y no un 0 matemático. El cero y el 100% de Fibo son el mínimo y el máximo del precio para el período. Entonces también es comprensible el 23% como punto de entrada desde el nivel 0 y el TP en el 38%, etc.

 
splxgf:


En este caso, es una cuestión diferente y puede resolverse a nivel de matemáticas elementales con porcentajes.

PercentStep=(OrderTakeProfit-OrderOpenPrice)/(138-23) - Esto sería un 1% en loros. Francamente, a veces tendrás que intercambiar los operandos dependiendo del tipo de orden o del módulo.

Entonces

StoplossLevel = OrderOpenPrice + PercentStep*(51-23) //LevelWLoss en términos de Kim, pero esto debe ser calculado para cada orden

MoveStoplossLevel = OrderOpenPrice + PercentStep*(76-23) //LevelProfit - ver arriba.


Muchas gracias por su respuesta y por la fórmula. Lo intentaré.
 

No puedo obtener el valor del cuarto búfer. ¿Qué estoy haciendo mal?

#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua
//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),                      
    limit;
    double MA_1_t,MA_2_t;
    if(counted_bars>0)
    counted_bars--;
    limit=Bars-counted_bars;
    
   for(int i=0;i<limit;i++)
   {
   ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];
   ExtMapBuffer2[i]=MathAbs(ExtMapBuffer1[i]);
   ExtMapBuffer3[i]=ExtMapBuffer1[i]/ExtMapBuffer2[i];
   ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p2, 0, MODE_SMA,i);
   }
   
   return(0);
  }
 
Forexman77:

No puedo obtener el valor del cuarto buffer. ¿Qué estoy haciendo mal?


Tenía varios bucles en mi ejemplo. ¿Te has deshecho de los innecesarios?
 

Hola.

¿Puede decirme por qué en la ventana de configuración del EA no puedo marcar la casilla "Permitir llamadas a DLL"?

En la configuración del terminal también está activado. Está bien en otros EAs.

Yo mismo estoy tratando de escribir este EA. Utiliza el indicador iCustom y éste necesita acceder a la DLL.

Gracias por la ayuda.

 
Vinin:

Tenía varios bucles en mi ejemplo. ¿Te has deshecho de las innecesarias?
He intentado diferentes maneras, pero si hago esto:
#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
extern int       p3          =5;
extern int       p4          =3;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_NONE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2,limit3,limit4;
   limit1=Bars-counted_bars-1;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if(limit1>0) 
     {
      limit1=Bars-Period_MA_1-1;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }

   for(i=limit1;i>=0;i--) ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];
   for(i=limit2;i>=0;i--) ExtMapBuffer2[i]=MathAbs(ExtMapBuffer1[i]);
   for(i=limit3;i>=0;i--) ExtMapBuffer3[i]=ExtMapBuffer1[i]/ExtMapBuffer2[i];
   for(i=limit4;i>=0;i--) ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p2, 0, MODE_SMA,i);

   return(0);
  }

El tercer y cuarto búfer no cuentan. No sé dónde está el error. Mis conocimientos en este ámbito no son suficientes.

Estaría bien no poner todo en diferentes buffers, sino calcular la parte principal así:

 ExtMapBuffer1[i]=(Close[i]-Close[i+Period_MA_1])/MathAbs(Close[i]-Close[i+Period_MA_1]);
pero en este caso no hay nada en absoluto.
 
Forexman77:
He intentado diferentes maneras, pero si hago esto:

El tercer y cuarto búfer no cuentan. No sé dónde está el error. Mis conocimientos en este ámbito no son suficientes.

Sería bueno no moldear todo en diferentes topes, y calcular la parte principal así:

pero en este caso no hay nada en absoluto.


Según su fórmula, el resultado será 1 o -1. ¿Es esto cierto o espera un resultado diferente?
 
Vinin:

Según su fórmula, el resultado será 1 o -1. ¿Es esto cierto o espera un resultado diferente?

Sí, el tercer búfer será 1 o -1. Y el cuarto buffer calcula la media móvil de estos parámetros.

En el tercer buffer, el valor que divide se multiplica por 100, pero esto no es un problema.

 
Forexman77:

Sí, el tercer búfer será 1 o -1. Y el cuarto buffer calcula la media móvil de estos parámetros.

En el tercer buffer, el valor que divide se multiplica por 100, pero esto no es un problema.


//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 2
#property  indicator_color1 Lime
#property  indicator_color2 Yellow

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2=7;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2;
   limit1=Bars-counted_bars-1;
   limit2=limit1;
   if(limit1>0)
     {
      limit1=Bars-Period_MA_1-1;
      limit2=limit1-p2;
     }

   for(i=limit1;i>=0;i--) 
     {
      ExtMapBuffer1[i]=1;
      if(Close[i]<Close[i+Period_MA_1])
         ExtMapBuffer1[i]=-1;
     }
   for(i=limit2;i>=0;i--) ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1,0,p2,0,MODE_SMA,i);

   return(0);
  }
//+------------------------------------------------------------------+
Razón de la queja: