Línea vertical. - página 2

 
Alexey Viktorov:

Tienes que decidir lo que quieres...

Si quieres mezclado, sólo a veces para eliminar las conexiones entre dos secciones verticales del zigzag, es mejor tomar un zigzag de color y el lugar, por la condición, sin color.

De hecho, es posible que quiera leer toda la sección de documentación sobre el trazado de gráficos. Te dará una idea de lo que se puede hacer...

"He empezado a hacer un indicador que dibujará líneas entre dos puntos por tiempo y precio...

Todo es bueno, pero a veces el tiempo de los puntos puede estar en una vela..."

Culpa mía por utilizar la palabra línea y no segmentos de línea. Debería haber insertado una imagen de inmediato.

Gracias, probaré el zigzag de colores, creo que será más fácil que hacer un buffer extra para el segmento inclinado.
 
Alexey Viktorov:

Es mejor tomar un zigzag de color y no asignar ningún color en algunos lugares, por convención.

Pues no cómo consigo la falta de color en un zigzag de color. Si no es difícil (creo que a ti no te llevará más de 5 minutos), ¿puedes asignar la falta de color en este ejemplo? He adjuntado una imagen de las líneas que deberían faltar.


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot ZigZag
#property indicator_label1  "ZigZag"
#property indicator_type1   DRAW_COLOR_ZIGZAG
#property indicator_color1  clrRed,clrYellow
#property indicator_style1  STYLE_SOLID
#property indicator_width1  10
//--- input параметры
//--- indicator buffers
double         ZigZagBuffer1[];
double         ZigZagBuffer2[];

int            color_sections;
double         Color_ZigzagColors[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- связывание массивов и индикаторных буферов
   SetIndexBuffer(0,ZigZagBuffer1,INDICATOR_DATA);
   SetIndexBuffer(1,ZigZagBuffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Color_ZigzagColors,INDICATOR_COLOR_INDEX);
   color_sections=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[])
  {
   int limit=prev_calculated;
   if(prev_calculated==0)limit=rates_total-1;

   for(int i2=limit;i2<rates_total;i2++) // recalculate on new bar
     {
      for(int i=0;i<rates_total;i++)
        {
         if(i==rates_total-3 || i==rates_total-12 ||  i==rates_total-18) // Test VLines and TLines! 
           {
            ZigZagBuffer1[i]=high[i];
            Color_ZigzagColors[i]=color_sections;
           }
         else
           {
            ZigZagBuffer1[i]=EMPTY_VALUE;
           }

         if(i==rates_total-7 || i==rates_total-12 || i==rates_total-20) // Test VLines and TLines!   
           {
            ZigZagBuffer2[i]=low[i];
            Color_ZigzagColors[i]=color_sections;
           }
         else
           {
            ZigZagBuffer2[i]=EMPTY_VALUE;
           }

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

No puedo conseguir la falta de color en el zigzag de color. Si no es difícil (creo que a ti no te llevará más de 5 minutos), ¿puedes asignar la falta de color en este ejemplo? Adjunto una imagen de las líneas que deben faltar.


1.

#property indicator_color1  clrRed,clrNone

2.

Color_ZigzagColors[i]=0;

El color será rojo

Color_ZigzagColors[i]=1;

No habrá color.

Y la variable

int            color_sections;
es completamente superfluo.
 
Alexey Viktorov:

1.

2.

El color será rojo

No habrá color.

Y la variable

es completamente innecesario.

Gracias, pero no consigo que esto funcione a nivel de funciones, ¿qué debo añadir o quitar en las funciones para que estas líneas desaparezcan? ¿Cómo puedo implementar clrNone aquí?

         if(i==rates_total-3 || i==rates_total-12 ||  i==rates_total-18) // Test VLines and TLines! 
           {
            ZigZagBuffer1[i]=high[i];
            Color_ZigzagColors[i]=0;
           }
         else
           {
            ZigZagBuffer1[i]=EMPTY_VALUE;
           }

         if(i==rates_total-7 || i==rates_total-12 || i==rates_total-20) // Test VLines and TLines!   
           {
            ZigZagBuffer2[i]=low[i];
            Color_ZigzagColors[i]=0;
           }
         else
           {
            ZigZagBuffer2[i]=EMPTY_VALUE;
           }
           
 
Nauris Zukas:

Gracias, pero no consigo que esto se aplique a nivel de función, ¿qué debo añadir o quitar en las funciones allí para que desaparezcan estas líneas? ¿Cómo implementar clrNone aquí?

En un lugar 0 en otro 1

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Línea vertical.

Alexey Viktorov, 2018.10.12 17:29

Color_ZigzagColors[i]=0;

El color será rojo

Color_ZigzagColors[i]=1;

No habrá color.

Y en su código es lo mismo en dos casos

Color_ZigzagColors[i]=0;


 
Alexey Viktorov:

En un lugar 0 en el otro 1

En su código es lo mismo en ambos casos


Esto es lo que ocurrirá (he puesto clrYellow en lugar de clrNone para que quede más claro). En lugar de las líneas de conexión (marcadas con cruces azules) desaparece la línea vertical central (marcada con un círculo rojo). Por lo tanto, asumo que algo ya está mal en el nivel de la función.


 
Nauris Zukas:

Esto es lo que ocurre (he sustituido clrNone por clrYellow para que quede más claro). La línea vertical del medio (rodeada de rojo) también desaparece en lugar de las líneas de conexión (rodeadas de azul). Por lo tanto, asumo que algo ya está mal en el nivel de la función.


Proporcionar el código y el dibujo no a mano, pero las líneas dibujadas por el indicador. La capacidad de dibujar secciones verticales de un zigzag apareció hace muy poco. Rashid Umarov participó en ese debate y este cambio se hizo a propuesta suya. Si se confirma esta opción, invitaremos a Rashid.

 
Alexey Viktorov:

Proporcionar el código y el dibujo no a mano, pero las líneas dibujadas por el indicador. La posibilidad de dibujar secciones verticales del zigzag ha aparecido recientemente. Rashid Umarov participó en ese debate y este cambio se hizo a propuesta suya. Si se confirma esta opción, invitaremos a Rashid.


Archivos adjuntos:
 
Nauris Zukas:


Interesante, con unas líneas tan gruesas que parecen dibujadas a mano...

@Rashid Umarov

En uno de los hilos has participado en la discusión sobre la imposibilidad de dibujar una línea vertical mediante DRAW_ZIGZAG. Un ejemplo está en el post anterior. Tras esa discusión, se hicieron cambios y se añadió la función. Ahora hay otro problema con DRAW_COLOR_ZIGZAG, es simplemente imposible establecer el color de forma consistente para cada segmento. ¿Tal vez haya una forma de solucionar este inconveniente también en la pantalla gráfica?

 
Alexey Viktorov:

Interesante, con unas líneas tan gruesas que parecen dibujadas a mano...

@Rashid Umarov

En uno de los hilos has participado en la discusión sobre la imposibilidad de dibujar una línea vertical mediante DRAW_ZIGZAG. Un ejemplo está en el post anterior. Después de esa discusión, se hicieron cambios y se añadió la función. Ahora hay otro problema con DRAW_COLOR_ZIGZAG, es simplemente imposible establecer el color de forma consistente para cada segmento. ¿Tal vez haya una forma de solucionar este inconveniente también en la pantalla gráfica?

Si lo hay, no será pronto. Estará en algún lugar en el centésimo lugar como una tarea lejana no prioritaria.