1指示器线,两种颜色,同一条线,如何?

[已删除]  
HI,是否可以在指示器框中画一条线,并使其变色 当条件改变时。请显示一个例子..thx ..
black_building
24
black_building 2007.01.31 21:20:47  
icm63:
HI,是否可以在指示器框中画一条线,并使其变色 当条件改变时。请显示一个例子..thx ..

我只做了一个指标"one"两种颜色的线。在 实际上,它们是两条线(两个绘图缓冲区)。示例:您必须做两件事。 创建两个绘图缓冲区(属性和Set .....),并在您的位置设置换行符 想。我在导航窗口中查看了Awesome指标的示例, 使用meta edit打开它。 (也是您的)。


将属性buff1设置为Red;
将属性buff2设置为绿色;

如果一个>1.0) buff1 = 我是一个(......);
否则buff2 = 我是一个(....);


您的图将显示为单线,且颜色在ima = 1.0左右变化。
拉希德·乌马洛夫(Rashid Umarov)
管理员
17261
拉希德·乌马洛夫(Rashid Umarov) 2007.01.31 21:44:22  
请参阅代码库中的示例- 三种颜色
[已删除] 2011.02.16 12:49:26  
据了解(纠正我,如果我错了),但 使用setindexbuffer 不起作用,您必须为此问题使用icustom。
Brewmanz
486
Brewmanz 2011.02.19 11:49:47  
开尔文:
据它的理解(如果我错了,请纠正我),但是使用setindexbuffer无效,您必须为此问题使用icustom。

凯文,嗯,你错了。但是不用担心-这就是我们的学习方式!我希望与该论坛上的大多数人相比,我犯了更多的编码错误(我从事* gulp *编码已有40年了,而且还在学习中)。

SetIndexBuffer适用于2(或3)条色线。您需要其中2个(或3个)来执行此操作。

iCustom所做的只是“从另一个指标模块获取价值”。如果该指标本身有2或3种颜色,那么您需要 致电iCustom 2或3次

祖格
1502
祖格 2011.02.19 12:45:17  

如果适合您,我建议不要使用线条进行着色,则重绘/不绘图将始终存在一些问题。我尚未找到解决此问题的方法。 (线条必须至少始终跟随以下非空值才能绘制)

如果你要线。我建议使用3个缓冲区:Buf1 主线,即始终绘制,buf2和buf3用于着色。

更好的方法(从我的角度来看)是使用箭头(箭头代码108是一个点)进行着色,可能看起来不如彩色线条,但至少可以正确绘制。

祖格
1502
祖格 2011.02.19 12:55:02  

添加:请参见此彩色MA的示例。您可以在点和线样式绘图之间切换...

//+------------------------------------------------------------------+
//|                                               WMMM-ColoredMA.mq4 |
//|                                       when-money-makes-money.com |
//|                                       when-money-makes-money.com |
//+------------------------------------------------------------------+
#property copyright "when-money-makes-money.com"
#property link      "when-money-makes-money.com"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 Blue
#property indicator_color3 Red
//---- buffers
double MA[];
double MA.up[];
double MA.do[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
extern int MA.Period=14;
extern int MA.Type=MODE_SMA;
extern int MA.Price=PRICE_CLOSE;
extern int MA.Shift=0;
extern bool DrawDots=true;
extern int SignalSize=3;
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,SignalSize);
   SetIndexBuffer(0,MA);
   if(DrawDots){
   SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,SignalSize);
   SetIndexArrow(1,108);
   SetIndexBuffer(1,MA.up);
   SetIndexEmptyValue(1,0.0);
   SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,SignalSize);
   SetIndexArrow(2,108);
   SetIndexBuffer(2,MA.do);
   SetIndexEmptyValue(2,0.0);
   }else{
      SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,SignalSize);
      SetIndexBuffer(1,MA.up);
      SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,SignalSize);
      SetIndexBuffer(2,MA.do);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   for(int i=Bars-counted_bars-1;i>=0;i--){
      MA[i]=我是一个(Symbol(),Period(),MA.Period,MA.Shift,MA.Type,MA.Price,i);
      if(MA[i]>MA[i+1]){
         MA.up[i]=MA[i];
         MA.do[i]=0;
      }else{
         MA.up[i]=0;
         MA.do[i]=MA[i];      
      }
   }
//----
   Comment("when-money-makes-money.com");
   return(0);
  }
//+------------------------------------------------------------------+
盖萨塔
5
盖萨塔 2013.03.24 18:24:26  
祖格:

添加:请参见此彩色MA的示例。您可以在点和线样式绘图之间切换...


非常感谢你