Hola! He empezado a hacer un indicador que dibujará una línea entre dos pips en tiempo y precio, la forma en que se dibuja la línea es aproximadamente así:
Todo está bien, pero a veces los puntos de tiempo pueden estar en una vela, se obtiene una línea vertical. ¿Supongo que SupportBuffer[w] no se puede poner en vertical?
Si usamos un zigzag en lugar de una línea, funciona.
Si usas un zigzag en lugar de una línea, funciona.
Gracias, intentaré desmontar el ZigZag y entender el principio de trazar una línea.
Si utiliza un zigzag en lugar de una línea, funcionará.
El ZigZag en sí resultó ser bastante complaciente, por lo que no fue fácil desmontarlo. Pero he preparado un ejemplo sencillo... ¿Puede añadir una función, donde en 3 barras desde la última barra habrá una línea entre el Alto y el Bajo según su consejo zigzag? Me gustaría entender el principio, y entonces podré desarrollarlo yo mismo.
#property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot Support #property indicator_label1 "Line" #property indicator_type1 DRAW_LINE #property indicator_color1 clrAqua #property indicator_style1 STYLE_SOLID #property indicator_width1 3 //--- indicator buffers double LineTest[]; double HighMapBuffer[]; // highs double LowMapBuffer[]; // lows //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,LineTest,INDICATOR_DATA); SetIndexBuffer(1,HighMapBuffer,INDICATOR_CALCULATIONS); SetIndexBuffer(2,LowMapBuffer,INDICATOR_CALCULATIONS); PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE); //--- 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; for(int i2=limit;i2<rates_total;i2++) // New bar recalculate { if(limit<rates_total-1)continue; // New bar recalculate for(int i=0;i<rates_total;i++) { //if(i<rates_total-3 && i>rates_total-15) // H Line 3-15 bar // LineTest[i]=high[rates_total-2]; // Price //else LineTest[i]=EMPTY_VALUE; HighMapBuffer[i]=high[rates_total-3]; LowMapBuffer[i]=low[rates_total-3]; LineTest[i]= // ??? } } return(rates_total); } //+------------------------------------------------------------------+
El ZigZag en sí resultó ser bastante complaciente, por lo que no fue fácil desmontarlo. Pero he preparado un ejemplo sencillo... ¿Puede añadir una función, donde en 3 barras desde la última barra habrá una línea entre el Alto y el Bajo según su consejo zigzag? Me gustaría entender el principio y entonces podré desarrollarlo yo mismo.
https://www.mql5.com/ru/docs/customind/indicators_examples/draw_zigzag
- www.mql5.com
https://www.mql5.com/ru/docs/customind/indicators_examples/draw_zigzag
Gracias, ya hay alguna descripción y es un estilo, no un indicador :), intentaré averiguarlo.
La línea vertical funcionó, pero no entiendo cómo eliminar la línea de conexión entre las líneas verticales. ¿Puede alguien corregir mi ejemplo para que desaparezca la línea de conexión?
#property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 1 //--- plot ZigZag #property indicator_label1 "ZigZag" #property indicator_type1 DRAW_ZIGZAG #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 10 //--- indicator buffers double ZigZagBuffer1[]; double ZigZagBuffer2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer(0,ZigZagBuffer1,INDICATOR_DATA); SetIndexBuffer(1,ZigZagBuffer2,INDICATOR_DATA); 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-15) // should be VLine on 3th and 15th bar! { ZigZagBuffer1[i]=high[i]; } else { ZigZagBuffer1[i]=EMPTY_VALUE; } if(i==rates_total-3 || i==rates_total-15) // should be VLine on 3th and 15th bar ! { ZigZagBuffer2[i]=low[i]; } else { ZigZagBuffer2[i]=EMPTY_VALUE; } if(ZigZagBuffer1[i]!=EMPTY_VALUE )Print(" ZigZagBuffer1[",i,"]: ",ZigZagBuffer1[i]); if(ZigZagBuffer2[i]!=EMPTY_VALUE )Print(" ZigZagBuffer2[",i,"]: ",ZigZagBuffer2[i]); } } return(rates_total); } //+------------------------------------------------------------------+
La línea vertical ha funcionado, pero no sé cómo eliminar la línea de conexión entre las líneas verticales. ¿Puede alguien corregir mi ejemplo para que desaparezca la línea de conexión?
Bueno, entonces me equivoqué. No entendí el propósito...
En este caso es necesario, y más fácil, utilizar el dibujo gráfico DRAW_HISTOGRAM2
- www.mql5.com
Bueno, entonces me equivoqué. No entendí el propósito...
En este caso es necesario, y más fácil, utilizar el trazado gráfico DRAW_HISTOGRAM2
Gracias, lo intentaré.
Otra pregunta, ¿DRAW_HISTOGRAM2 sólo dibuja en vertical o también puede dibujar en oblicuo (entre dos barras)?Gracias, lo intentaré.
Otra pregunta, ¿DRAW_HISTOGRAM2 dibuja sólo verticalmente o puede también inclinarse (entre dos barras)?Tendrás que decidir qué quieres...
Si necesita mezclar, sólo a veces eliminar las conexiones entre las dos secciones verticales del zigzag, entonces es mejor tomar un zigzag de color y colocar la condición de asignar ningún color.
No estaría de más leer toda la sección de documentación sobre el trazado de gráficos. Te daría una idea de lo que se puede hacer...
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Todo está bien, pero a veces los puntos de tiempo pueden estar en una vela, se obtiene una línea vertical. ¿Entiendo que el SupportBuffer[w] no se puede poner en vertical?