为指标添加颜色 - 页 2

 

我还没有搞清楚指标缓冲区的问题。

但下面的代码能做到我想要的,显示当前和过去的条形海肯阿西的颜色。

但它没有做的是把它放在一个单独的窗口中,并且只在当前条形下显示。

这可能吗? 还是我仍然需要弄清楚指标的缓冲区?

你面对的是一个非常青涩的新手...谢谢你的耐心。

int start()

{

ObjectsDeleteAll()。

// 在绘制前清除图表

// 5分钟电流

double open.5.0 =iCustom(NULL,1, "Heiken Ashi",0,2,0); //前次开盘

double close.5.0 =iCustom(NULL,1, "Heiken Ashi",0,3,0); //前次收盘


bool Up.5.0 = (close.5.0>open.5.0);

bool Down.5.0 = (close.5.0<open.5.0);

//过去5分钟

double open.5.1 =iCustom(NULL,1, "Heiken Ashi",0,2,1); //前次开盘

double close.5.1 =iCustom(NULL,1, "Heiken Ashi",0,3,1); // 前次收盘

bool Up.5.1 = (close.5.1>open.5.1);

bool Down.5.1 = (close.5.1<open.5.1);


ObjectCreate("square1",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.001, 0, Bid-0.001)。

if(Down.5.0 == 1) ObjectSet("square1",OBJPROP_COLOR,Red);


ObjectCreate("square1",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.001, 0, Bid-0.001)。

if(Down.5.0 == 0) ObjectSet("square1",OBJPROP_COLOR,White);


ObjectCreate("square2",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.0015, 0, Bid-0.0015);

if(Down.5.1 == 1) ObjectSet("square2",OBJPROP_COLOR,Red);


ObjectCreate("square2",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.0015, 0, Bid-0.0015);

if(Down.5.1 == 0) ObjectSet("square2",OBJPROP_COLOR,White);


return(0);

}

 

请用这个来张贴代码。.这使它更容易阅读。

 
mrchuckw:

我还没有搞清楚指标缓冲区的问题。

但下面的代码能做到我想要的,显示当前和过去的条形海肯阿西的颜色。

但它没有做的是把它放在一个单独的窗口中,并且只在当前条形下显示。

这可能吗? 还是我还需要弄清楚指标的缓冲区?

我想你需要在单独的窗口上画一个指示器,以便首先获得窗口,这样你就可以把对象添加到窗口中。
 

类似这样的事情

double adUpBuffer[],
       adDnBuffer[];
//---- indicator colors
color  cDirection[2]={LimeGreen,FireBrick};
string sDirection[2]={"up", "down"};
int    iSquare=110;
double dGap=10*Point
//+------------------------------------------------------------------+
//   Custom indicator initialization function                        |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   IndicatorBuffers(2);
   for(int i=0;i<2;i++){
   SetIndexStyle(i,DRAW_ARROW,clrDirection[i]);
   SetIndexArrow(i,iSquare);
   SetIndexDrawBegin(i,12);
   SetIndexLabel(i,sDirection[i]);}
//---- 2 indicator buffers mapping
   SetIndexBuffer(0,adUpBuffer);
   SetIndexBuffer(1,adDnBuffer);
//---- initialization done
   return(0);
  }


      if(Up.5.0)
           adUpBuffer[i]=Low[i]-dGap;
      else adDnBuffer[i]=NULL;
      if(Dn.5.0)
           adDnBuffer[i]=High[i]+dGap;}
      else adDnBuffer[i]=NULL;} 
 

我不擅长使用指标......看一下这个,看看它是否能满足你的需要......。

附加的文件:
ashi1.mq4  3 kb
 

好的......我正在努力......但你认为我知道的比我多得多。

附上我目前的整个指标程序。 我怎样才能把你的代码放进去? 还是说我要创建一个全新的程序?

我试着把它塞进去,但我无法编译。 它不喜欢双倍dGap=10*Point ,即使我在它后面加了一个;。

而且还有一大堆其他的编译错误。 我想我只是太笨了,不知道现在该怎么做。

附加的文件:
objects2.mq4  3 kb
 
mrchuckw:

好的......我正在努力......但你认为我知道的比我多得多。

附上我目前的整个指标程序。 我怎样才能把你的代码放进去? 还是说我要创建一个全新的程序?

我试着把它塞进去,但我无法编译。 它不喜欢双倍dGap=10*Point ,即使我在它后面加了一个;。

而且还有一大堆其他的编译错误。 我想我只是太笨了,不知道现在该怎么做。

只要下载我的代码,将其复制到你的MT4目录结构中的指标中。停止并重新启动MT4,然后将指标添加到图表中 ......如果你使用指标缓冲区,你就不会使用对象。
 

我在哪里可以下载你的代码?

看看我有多蠢?

 
mrchuckw:

我在哪里可以下载你的代码?

看看我有多蠢?

它附在我的帖子里,就在上面的几个帖子里 . . .ashi1.mq4
 

这几乎是完美的。 我一直在玩它,而且玩得很开心。

我想我可能已经谋杀了它,但我现在让它把方块放在一个单独的窗口里。

这一部分工作得很完美。 现在... 我不知道如何把所有的方块放在一条完美的线上。

因为,我想在那条线下再放一条线。 我想我能想出办法来......至少我在尝试中会有乐趣。

新线将是一个更大的时间框架。 而第三条线将是另一个更大的时间框架。

这是我玩过你的EA后的样子。 你能告诉我如何把平方放在一条直线上吗。?

谢谢

ps...我已经玩了一段时间了,但我不知道如何获得第二和第三条线,并使它们成为直线。

如果你能帮我解决这个问题,我将不胜感激。 第二个文件是我对第二行的尝试。

附加的文件:
ashi1_1.mq4  3 kb
ashi1-a.mq4  3 kb
原因: