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

 
Alexey Viktorov:

¿Está comprobado? )))))

Lo tengo así:

2021.01.29 17:22:20.869 uthyeba 3 GBPUSD,M15: Alerta: 8:4.236 423.6

2021.01.29 17:22:20.869 uthyeba 3 GBPUSD,M15: Alerta: 7:2.618 261.8

2021.01.29 17:22:20.869 uthyeba 3 GBPUSD,M15: Alerta: 6:1.618 161.8

2021.01.29 17:22:20.869 uthyeba 3 GBPUSD,M15: Alerta: 5:1 100.0

2021.01.29 17:22:20.869 uthyeba 3 GBPUSD,M15: Alerta: 4:0.618 61.8

2021.01.29 17:22:20.869 uthyeba 3 GBPUSD,M15: Alerta: 3:0.5 50.0

2021.01.29 17:22:20.869 uthyeba 3 GBPUSD,M15: Alerta: 2:0.382 38.2

2021.01.29 17:22:20.869 uthyeba 3 GBPUSD,M15: Alerta: 1:0.236 23.6

2021.01.29 17:22:20.869 uthyeba 3 GBPUSD,M15: Alerta: 0:0 0.0

2021.01.29 17:22:20.869 uthyeba 3 GBPUSD,M15: Alerta: Niveles de Fibo antes = 9


 
Galim_V:

Yo sí:

¿Dónde están los precios?

 
Alexey Viktorov:

¿Dónde están los precios?

He ejecutado el script que me sugirió Alex. Y sí, eso es lo que he dicho, quiero tomarlo, no contarlo. Todo lo que necesito para el bot nunca podré calcularlo por mi cuenta. Además, confío en los chicos de metquotes. ¿No es así?

 
Galim_V:

He ejecutado el script sugerido por Alex. Y sí, eso es lo que he dicho, quiero tomarlo, no contarlo. Todo lo que necesito para el bot nunca podré calcularlo por mí mismo. Además, confío en los chicos de metquotes. ¿No es así?

Creo que lo tengo.

   //---  а сколько у нас Фибо-уровней ?
   double pr,lpr;
   int levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
   Print("Fibo levels before = ",levels);
   //---выведем в Журнал=> номер уровня:значения описание_уровня
   for(int f=0; f<levels; f++) 
     {
      pr=ObjectGetDouble(0,"Fibo",OBJPROP_PRICE,0)-ObjectGetDouble(0,"Fibo",OBJPROP_PRICE,1);
      lpr=(ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,f)*pr)
         +ObjectGetDouble(0,"Fibo",OBJPROP_PRICE,0);
         Print(f,":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,f),":",DoubleToString(lpr,Digits));
     }
Lo he ajustado un poco, pero por alguna razón los niveles internos y negativos no cuentan
 
Galim_V:

He ejecutado el script sugerido por Alex. Y sí, eso es lo que he dicho, quiero tomarlo, no contarlo. Todo lo que necesito para el bot nunca podré calcularlo por mí mismo. Además, confío en los chicos de metquotes. ¿No es así?

No hay otra opción. Sólo contando...

 
MakarFX:

Creo que está funcionando.

Lo he arreglado un poco, pero por alguna razón los niveles internos y negativos no cuentan

¡Gracias, Makar!

 
Galim_V:

¡Gracias, Makar!

Recomiendo utilizar la búsqueda matemática de precios basada en los dos niveles principales de Fibo.
 
MakarFX:

Parece que funciona.

No hay mucho que ajustar, pero por alguna razón los niveles internos y negativos no cuentan

No funciona, porque el nivel cero no está correctamente definido y, por tanto, no sólo hay que sumar al nivel cero, sino también restarlo si la fibra se estira hacia abajo. En general, todo depende de la posición del nivel cero con respecto al nivel único del 100%.

 
Alexey Viktorov:

No cuenta porque el nivel cero no está correctamente definido y, por tanto, no sólo hay que sumarlo al nivel cero, sino también restarlo si la fibra se estira de arriba a abajo. En general, todo depende de la posición del nivel cero en relación con el nivel único del 100%.

Tienes razón.
 

Lo terminé)

Ahora todos los niveles cuentan correctamente

   //---  а сколько у нас Фибо-уровней ?
   int levels=ObjectGetInteger(0,"Fibo",OBJPROP_LEVELS);
   Print("Fibo levels before = ",levels);
   //---выведем в Журнал=> номер уровня:значения описание_уровня
   for(int f=0; f<levels; f++) 
    {
     if(f>=0)
      {
      Print(f,":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,f),":",ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,f)
      *(NormalizeDouble(ObjectGetDouble(0,"Fibo",OBJPROP_PRICE1,f),Digits)
      -NormalizeDouble(ObjectGetDouble(0,"Fibo",OBJPROP_PRICE2,f),Digits))
      +NormalizeDouble(ObjectGetDouble(0,"Fibo",OBJPROP_PRICE2,f),Digits));
      }
    }
Razón de la queja: