Soy un novato y quiero conseguir HA en una nueva ventana.. - página 3

 

Gracias por eso

¿Qué papel tiene esta línea SetIndexStyle(0, DRAW_LINE) en el código anterior cuando acabamos de utilizar los objetos para dibujar la línea? Entiendo el papel de los buffers, pero no sé por qué un buffer debe estar vinculado a un índice y por qué un índice debe tener estilo, ya que lo que vemos está fuera de la llamada createObject con atributos de precio.


¿Viste que usando el código anterior las velas tienen bordes curvos y no rectángulos puros como el gráfico de precios?

 

Ya lo he explicado.

Si quieres rectángulos dibuja rectángulos en lugar de objetos de línea de tendencia.

 

Hola Phy

Lo siento por ser una molestia, la opción RECTANGULO no funciona, por eso te estoy molestando, gracias por tu paciencia y por favor prueba esto y hazme saber, he arreglado los cálculos de HA.

Por favor, intente una última vez gracias, me gustaría poder conseguir que este rectángulo funcione correctamente.


#property indicator_separate_window

#property indicator_buffers 6
#propiedad indicador_color1 CLR_NONE
#propiedad indicador_color2 CLR_NONE


double high[];
double low[];
double open[];
double close[];
double haOpen1[];
double haClose1[];

//+------------------------------------------------------------------+
//| Función de inicialización de los indicadores personalizados ||.
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE);
SetIndexStyle(4, DRAW_LINE);
SetIndexStyle(5, DRAW_LINE);
SetIndexBuffer(0, alto);
SetIndexBuffer(1, low);
SetIndexBuffer(2, open);
SetIndexBuffer(3, close);
SetIndexBuffer(4, haOpen1);
SetIndexBuffer(5, haClose1);
return(0);
}
//+------------------------------------------------------------------+
//| Función de desinicialización del indicador personalizada ||
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| Función de iteración del indicador personalizada ||.
//+------------------------------------------------------------------+
int inicio(){

string basename = "Heikin-Ashi";
IndicatorShortName(basename);
int window = WindowFind(basename);

for (int i = Bars-100; i >= 0; i--){

// estos dos índices se utilizan para controlar el tamaño de la subventana
// no son visibles
high[i] = High[i];
low[i] = Low[i];
double haOpen, haHigh, haLow, haClose,haDiffCo;
haOpen=(haOpen1[i+1]+haClose1[i+1])/2;
haOpen1[i] = haOpen;
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haClose1[i] = haClose;
haHigh=MathMax(haOpen,High[i]);
haLow=MathMin(haOpen,Low[i]);
string name1 = "Heikin-Ashi-HL-"+i;

if(ObjectFind(name1) != -1) ObjectDelete(name1);
ObjectCreate(name1, OBJ_TREND, window, Time[i], haHigh, Time[i], haLow);
ObjectSet(nombre1, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(name1, OBJPROP_RAY, 0);
ObjectSet(nombre1, OBJPROP_WIDTH, 2);

string name2 = "Heikin-Ashi-OC-"+i;
if(ObjectFind(nombre2) != -1) ObjectDelete(nombre2);
ObjectCreate(name2, OBJ_RECTANGLE, window, Time[i], haOpen, Time[i], haClose);
ObjectSet(nombre2, OBJPROP_WIDTH, 5);
//ObjectSet(nombre2, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(nombre2, OBJPROP_RAY, 0);

si (haOpen < haClose) {
ObjectSet(nombre1, OBJPROP_COLOR, Chartreuse);
ObjectSet(name2, OBJPROP_COLOR, Chartreuse);
}else{
ObjectSet(name1, OBJPROP_COLOR, Red);
ObjectSet(name2, OBJPROP_COLOR, Red);
}

}

return(0);
}

 

Las velas deben ser líneas de tendencia

Ancho del cuerpo 2 o más probablemente, 3

No sé a qué te refieres con el "redondeo" de las líneas


Muestra una imagen

 
Vea la foto, por favor...
 

A veces, cuando se desplaza a la izquierda también aparece esto (mezcla de verde y rojo)

 

Sí, lo veo.

Creo que tienes algunas barras viejas para borrar allí.

 
Gracias por su respuesta, ¿cómo se hace?
 

Averigüe qué es lo que está mal y luego piense en cómo podría solucionarlo. ¿hay barras duplicadas, qué está pasando?

 

Hola Phy

Si estoy en lo cierto, el problema puede deberse a que hago lo siguiente

SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE);
SetIndexStyle(4, DRAW_LINE);
SetIndexStyle(5, DRAW_LINE);

Hago lo anterior y hago que se dibujen los buffers y al mismo tiempo hago


if(ObjectFind(nombre1) != -1) ObjectDelete(nombre1);
ObjectCreate(name1, OBJ_TREND, window, Time[i], haHigh, Time[i], haLow);
ObjectSet(nombre1, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(name1, OBJPROP_RAY, 0);
ObjectSet(nombre1, OBJPROP_WIDTH, 2);

string name2 = "Heikin-Ashi-OC-"+i;
if(ObjectFind(nombre2) != -1) ObjectDelete(nombre2);
ObjectCreate(name2, OBJ_TREND, window, Time[i], haOpen, Time[i], haClose);
ObjectSet(nombre2, OBJPROP_WIDTH, 5);
//ObjectSet(nombre2, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(nombre2, OBJPROP_RAY, 0);

Así que tanto los datos del buffer como los objetos se dibujan uno encima del otro, ¿Estoy en lo cierto?

¿Debería quitar la configuración del código de estilo de índice ya que sólo estoy usando el buffer para el almacenamiento de datos y no quiero dibujarlo?

¿Estoy en lo cierto?

Razón de la queja: