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

 
Sepulca:


Ahí parece que se está dibujando algo.

Aunque puede que no tenga completamente

comprender plenamente el significado del indicador

La cuestión es que si hay una caída o una subida que no supere los 50 pips, el indicador no debería cambiar del valor anterior,

que registramos si no hay sobrepasamiento. Y en cada tic lo comparamos.

Mientras no haya exceso, se dibuja una línea recta; si hay exceso, el indicador obtiene el valor actual.

Aproximadamente.

el código de abajo. Pero cuando lo ejecuto en el probador veo que muestra cosas diferentes en la vida real. Comienza a desviarse cuando no hay exceso

por los mismos 50 puntos. Puedo ver que se retrasa especialmente en la subida y comienza a cambiar a través de la barra.

He cometido un error en alguna parte, no sé dónde.

//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_SECTION,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   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
    raznica,raznica_static,MA_1_t,MA_2_t;
    
  if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
  static double MA_otshet; 
  for(int i=0;i<limit;i++)
   {    
      MA_1_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t;
      raznica_static=MA_1_t-MA_otshet;
      if(raznica_static > -0.005 && raznica_static < 0.005)
      {
      ExtMapBuffer1[i]=MA_otshet;
      }
      else
      if(raznica > -0.005 && raznica < 0.005)
      {
      ExtMapBuffer1[i]=MA_2_t;
      MA_otshet=MA_2_t;
      }
      if((raznica > 0.005) || (raznica <- 0.005))
      {
      ExtMapBuffer1[i]=MA_1_t;
      }  
   } 
   return(0);
  }
//+------------------------------------------------------------------+
 
ALXIMIKS:


¿Me estás tomando el pelo? Las líneas discontinuas no tienen más grosor que el estándar (y en la documentación en algún lugar estaba escrito, no puedo precisar el lugar, pero recuerdo que lo leí)

Lo demostramos:

1) tirar una máscara normal

2) introduzca las propiedades de los "Colores".

3) establecer el tipo de línea - línea discontinua

4) Seleccione el grosor 2-5.

Resultado: una línea de puntos se convierte en una línea normal.

Bueno, eso es lo que escribo sin la línea de puntos.
 
XuMuk:
¡¡¡Hola a todos!!! Intenté escribir un simple experto yo mismo. Pero surge algún problema que no entiendo. Aquí hay un simple osciloscopio que recogí en un libro. Lo compilo y no aparece nada. Aunque, si pones "-" en lugar de la división en el bucle while, todo funciona.

Ahí lo tienes, incluso dibuja

#property indicator_buffers 1
#property indicator_separate_window
extern int Period_valroc=10;
double Line0[];
int init()
  {
   SetIndexBuffer(0,Line0);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,Magenta);

   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i,Counted_bars=1000+Period_valroc;
    for (i=Counted_bars-1-Period_valroc; i>=0;i--)
      {
        Line0[i]=100*(Close[i]/Close[i+Period_valroc]);
//        i--;
      }
//----
   return(0);
  }

puré su pavo)))

 

Por la noche.

Decidí descargar el historial, sólo había un año de USD|JPY.

Resultó ser una mala idea, me salió un gráfico blando.

¿Cómo volver al principio :(?

Gracias.

 
Forexman77:

La cuestión es que si hay una caída o una subida de no más de 50 pips, el indicador no debería cambiar del valor anterior,

que registramos si no hay sobrepasamiento. Y en cada tic lo comparamos.

Mientras no haya exceso, se dibuja una línea recta; si hay exceso, el indicador obtiene el valor actual.

Aproximadamente.

el código de abajo. Pero cuando lo ejecuto en el probador veo que muestra cosas diferentes en la vida real. Comienza a desviarse cuando no hay exceso

por los mismos 50 puntos. Puedo ver que se retrasa especialmente en la subida y comienza a cambiar a través de la barra.

He cometido un error en alguna parte, no sé dónde.


A primera vista, está bien. Lo único es que yo, por ejemplo, prefiero los ciclos de barras del pasado al futuro: menos oportunidad de cambiar los valores de los indicadores a lo largo de la historia. El retraso podría deberse al uso de un muving (tiene un periodo de 7) y el "parloteo" podría deberse al uso del precio de cierre de la barra cero - está cambiando constantemente en el transcurso de la barra.
 
VladislavVG:

A primera vista, todo es normal. Lo único que yo, por ejemplo, prefiero los ciclos de barras del pasado al futuro: menos oportunidad de cambiar los valores del indicador a lo largo de la historia. El retraso puede estar relacionado con el uso de un muving (tiene un muving de 7 periodos), y el "chattering" - con el uso del precio de cierre de barra cero - cambia constantemente durante la barra.

Hechas las condiciones del ciclo

for(int i=Bars-1;i>=0;i--)

Reducción significativa de la velocidad de las pruebas.

Para comprobarlo, he añadido un muving de 7 periodos al probador. Hay desviaciones de 50 puntos, pero el indicador no cambia inmediatamente.

 
Forexman77:

Hechas las condiciones del ciclo

Se ha reducido significativamente la velocidad de la prueba.



  for(int i=limit-1;i>=0;i--)

El resto es igual que en su versión.

Además, en mi opinión, no se deben utilizar valores absolutos al comparar - 0,005 - mejor 50*Punto. De lo contrario, obtendrá resultados diferentes en los distintos pares.

 
VladislavVG:

El resto es igual que en su versión.

Y además, en mi opinión, no se deben utilizar valores absolutos al comparar - 0,005 - mejor 50*Punto. De lo contrario, obtendrá resultados diferentes en los distintos pares.

Gracias. Parece que funciona.

¿Se ha encontrado con algo similar? ¿Quién puede haber puesto en práctica esta idea?

He encontrado el indicador de deslizamiento y el zigzag de Kaufman. Básicamente el indicador de zigzag parece que está hecho.

 
Forexman77:

Gracias. Parece que funciona.

¿Te has encontrado con algo así? ¿Quizás alguien haya puesto en práctica esta idea?

Hasta ahora, he encontrado el indicador de deslizamiento y zigzag de Kaufman. Básicamente, el indicador de zigzag está hecho de forma similar.



No, no he visto nada de eso.
 
fozi:

Por la noche.

Decidí descargar el historial, sólo había un año de USD|JPY.

Resultó ser una mala idea, me salió un gráfico blando.

¿Cómo volver al principio :(?

Gracias.

Si haces clic con el botón derecho del ratón en el gráfico y seleccionas "actualizar"...