我是一个新手,想在一个新的窗口中得到HA... - 页 2

 
你通过在ObjectCreate()函数中指定窗口编号,在一个单独的窗口中作画。
 

你好,Phy

我从今天早上开始尝试,屏幕上什么都没有出现。你的代码会很有帮助,这样我就可以开始专注于其他方面了。

我使用对象创建

类型为矩形,大的和小的,屏幕上没有出现任何东西。我不知道如何指定时间和价格水平并获得一个蜡烛图。

请提供您的代码或使用创建对象 功能获得蜡烛图的例子,将不胜感激。

 
这里有一个例子。

它画的是简单的条形图。

#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);
  }
 

您好,感谢您提供的代码,但该代码没有创建蜡烛棒棒,而是创建了一个线棒。我需要一些蜡烛棒的东西,zzzz,>。

我很不解,为什么使用这些函数 创建一个烛台条就这么难呢?

请帮助我

谢谢你的支持

 
因此,要添加身体。


...
...
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);

   }
...
...
 

最后,非常感谢你,使它能够工作,但蜡烛体在顶部和底部都被打碎了,为什么呢?


#property indicator_separate_window

#属性 indicator_buffers 5
#属性 indicator_color1 CLR_NONE
#属性 indicator_color2 CLR_NONE


double high[];
double low[];
double open[];
double close[];
//+------------------------------------------------------------------+
//|自定义指标初始化函数
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE);
SetIndexBuffer(0, high);

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


返回(0)。
}
//+------------------------------------------------------------------+
//| 自定义指标去初始化函数|
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//|自定义指标迭代函数|
//+------------------------------------------------------------------+
int start(){

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

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

// 这两个指数用于控制子窗口的大小
//它们是不可见的
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(name1, OBJPROP_STYLE, STYLE_SOLID)。
ObjectSet(name1, OBJPROP_RAY, 0);
ObjectSet(name1, OBJPROP_WIDTH, 1);

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

如果(haOpen < haClose) {
ObjectSet(name1, OBJPROP_COLOR, Chartreuse);
ObjectSet(name2, OBJPROP_COLOR, Chartreuse)。
}else{
ObjectSet(name1, OBJPROP_COLOR, Red);
ObjectSet(name2, OBJPROP_COLOR, Red)。
}

}

返回(0)。
}

 
什么是 "smugged"?

另外,我注意到使用你的代码没有低尾巴。
我不认为你的HA计算是完全正确的。
 

谢谢phy

谢谢你的回答,凹凸不平的意思是身体不是正确的矩形,边缘是弯曲的。你也是对的,没有底部的尾巴......。我在想为什么会这样。


我怎样才能使主体成为像价格图表那样的完美矩形?


问题:1:

1.我们在顶部声明指标和缓冲区,然后说索引样式为DRAW_LINE。 然后我们说用这个宽度和颜色插入趋势线来 代表一个指标。所以我们只是用缓冲区来画对象(趋势线),我们是否需要在顶部声明指标并使索引样式为draw_line?

同时拥有drawline和insert object trendline有点令人困惑?


如果你能纠正我的想法,请你的专家发表意见,我将非常感激。

 

这就是尾巴的问题。

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

应该是

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

我之前的问题仍然停留在那里,请帮助我?

谢谢你的回答,凹凸不平的意思是主体不是正确的矩形,边缘是弯曲的。我怎样才能使主体成为像价格图表一样的完美矩形?

问题。

1.我们在顶部声明指标和缓冲区,然后说索引样式为DRAW_LINE。然后我们说用这个宽度和颜色插入趋势线来表示一个指标。所以我们只是用缓冲区来画对象(趋势线),我们是否需要在顶部声明指标并使索引样式为draw_line?

同时拥有drawline和insert object trendline有点令人困惑?

请您的专家评论,如果您能纠正我的想法,将不胜感激。

 
指标窗口可以是一个指定的大小,使用#property indicator_maximum 和#property indicator_minumum

如果这些没有被指定(在我的样本中没有),那么指标窗口就会根据显示的
指标指数之一的最高值和最低值进行调整。

我们从不说 "插入趋势线"...对象是以特定的时间和价格属性绘制的。

指数缓冲区的存在(但不可见)是为了在价格随时间变化时适当地调整子窗口的大小。
原因: