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

 
Se dibuja en una ventana separada especificando el número de ventana en la función ObjectCreate().
 

Hola Phy

Lo he intentado desde esta mañana, no aparece nada en la pantalla. Tu código sería de gran ayuda para poder empezar a concentrarme en otros

He utilizado el objeto create

con el tipo de rectángulo, grande y pequeño, no aparece nada en la pantalla. No sé cómo especificar el tiempo y los niveles de precios y obtener un patrón de velas

Por favor, proporcione su código sería muy apreciado o un ejemplo para obtener un candelabro utilizando la función de creación de objetos

 
Aquí hay una muestra:

Dibuja barras simples.

#property indicator_separate_window
 
#property indicator_buffers 2
#property indicator_color1 CLR_NONE
#property indicator_color2 CLR_NONE
 
 
double high[];
double low[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    SetIndexBuffer(0, high);
    SetIndexBuffer(1, low);
    SetIndexStyle(0, DRAW_LINE);
    SetIndexStyle(1, DRAW_LINE);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
 
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
  
   string basename = "test";
   IndicatorShortName(basename);
   int window = WindowFind(basename);
  
   for (int i = Bars-100; i >= 0; i--){
  
       // these two indexes are used to control the size of the subwindow
       // they are not visible
       high[i] = High[i];
       low[i] = Low[i];
 
       string name = basename+i;
  
       if(ObjectFind(name) != -1) ObjectDelete(name);
       ObjectCreate(name, OBJ_TREND, window, Time[i], High[i], Time[i], Low[i]);
       ObjectSet(name, OBJPROP_RAY, 0);
   }
   return(0);
  }
 

Hola Phy gracias por el código, pero el código no crea barras de palo de vela, crea una barra de línea. Necesito algo para las barras de velas stcik plzz..zzz,>

Estoy tan desconcertado por qué es tan difícil crear una barra de velas utilizando estas funciones?

Por favor, ayuda

gracias por su ayuda

 
Así que añade el cuerpo:


...
...
string name = basename+i;
  
   if(ObjectFind(name) != -1) ObjectDelete(name);
       ObjectCreate(name, OBJ_TREND, window, Time[i], High[i], Time[i], Low[i]);
       ObjectSet(name, OBJPROP_RAY, 0);
   }
   name = basename+"Body"+i;
  
   if(ObjectFind(name) != -1) ObjectDelete(name);
       ObjectCreate(name, OBJ_TREND, window, Time[i], Open[i], Time[i], Close[i]);
       ObjectSet(name, OBJPROP_WIDTH, 3);
       ObjectSet(name, OBJPROP_RAY, 0);

   }
...
...
 

Por fin muchas gracias Lo tengo funcionando pero el cuerpo de la vela está todo petado arriba y abajo ¿por qué? alguna idea? y peor alrededor de las últimas 20 velas...


#property indicator_separate_window

#property indicator_buffers 5
#property indicator_color1 CLR_NONE
#property indicator_color2 CLR_NONE


double high[];
double low[];
double open[];
double close[];
//+------------------------------------------------------------------+
//| Función de inicialización del indicador personalizada ||.
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE);
SetIndexBuffer(0, alto);

SetIndexBuffer(1, low);
SetIndexBuffer(2, open);
SetIndexBuffer(3, close);


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=(Open[i+1]+Close[i+1])/2;
open[i] = haOpen;
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
close[i] = haClose;
haHigh=MathMax(haOpen,High[i]);
haLow=MathMax(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, 1);

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, 3);
//ObjectSet(name2, 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);
}

 
¿Qué es "smugged"?

Además, me he dado cuenta de que no hay colas inferiores utilizando tu código.
No creo que tu cálculo de HA sea del todo correcto.
 

Gracias phy

por su amable respuesta, smugged significa que el cuerpo no son rectángulos adecuados los bordes son curvos. Su derecho también, no hay colas inferiores ... Me pregunto por qué todo esto.


¿Cómo puedo hacer que los cuerpos sean rectángulos perfectos como el gráfico de precios?


Pregunta:

1. Declaramos los indicadores y los buffers en la parte superior y luego decimos estilo de índice como DRAW_LINE. Luego decimos insertar línea de tendencia con este ancho y color para representar un indicador. Así que sólo usamos los buffers para pintar el objeto (línea de tendencia) ¿necesitamos declarar los indicadores en la parte superior y hacer el estilo de índice como draw_line?

Es un poco confuso tener tanto drawline como insertar el objeto trendline?


Por favor, sus comentarios expertos y apreciaría si usted puede corregir mi pensamiento?

 

ESE era el problema de las colas,

haLow=MathMax(haOpen,Low[i]);

debería ser

haLow=MathMin(haOpen,Low[i]);

Mi pregunta anterior sigue ahí por favor ayuda?

por su amable respuesta, smugged significa que el cuerpo no son rectángulos adecuados los bordes son curvos. ¿Cómo puedo hacer que los cuerpos sean rectángulos perfectos como el gráfico de precios?

Pregunta:

1. Declaramos los indicadores y los topes en la parte superior y luego decimos estilo de índice como DRAW_LINE. Luego decimos insertar línea de tendencia con este ancho y color para representar un indicador. Así que sólo usamos los buffers para pintar el objeto (línea de tendencia) ¿necesitamos declarar los indicadores en la parte superior y hacer el estilo de índice como draw_line?

Es un poco confuso tener tanto drawline como insertar el objeto trendline?

Por favor, sus comentarios expertos y apreciaría si usted puede corregir mi pensamiento?

 
La ventana del indicador puede tener un tamaño especificado, utilizando la #propiedad indicador_máximo y la #propiedad indicador_mínimo

Si no se especifican (no están en mi ejemplo), la ventana del indicador se redimensiona en función de los valores más altos y más bajos de uno de los índices del indicador.
valores máximo y mínimo de uno de los índices del indicador.

Nunca decimos "insertar línea de tendencia"... Los objetos se dibujan con atributos específicos de tiempo y precio.

Los buffers de los índices están ahí ( pero son invisibles ) para dimensionar adecuadamente la subventana a medida que los precios cambian en el tiempo.
Razón de la queja: