最近在这里下载了个指标,感觉很好用,但是还不够直观,所以想请版主大牛帮忙按效果图修改一下!可惜没有源码,有的麻烦提供一下!有赏!
1,当出现与之前不同颜色的K线时,就向前寻找同色中的高点或者低点所在的K线,并根据该K线的波幅自动生成一个矩形(统一用蓝色)作为阻力支撑区域;
2,当下一个阻力支撑区域出现时,上一个自动阻力支撑区域自动小时,也就是说盘面上只保留一个阻力支撑区域!
源码如下
//[i] 菲波那切K线 FiboBars2
#define level1 0.236
#define level2 0.382
#define level3 0.5
#define level4 0.618
#define level5 0.762
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Green
#property indicator_color2 White
#property indicator_color3 Blue
#property indicator_color4 Red
extern int 跨期 = 10;
extern int 选用水平 = 1;
extern bool 使用报警 = true;
double 绿柱组[];
double 白柱组[];
double 蓝柱组[];
double 红柱组[];
double 趋势[];
double 最后趋势 = 0;
double 水平线;
datetime 最后时间= 0;
//------------初始化---------------+
int init()
{
IndicatorBuffers(5);
SetIndexBuffer(0, 绿柱组);
SetIndexBuffer(1, 白柱组);
SetIndexBuffer(2, 蓝柱组);
SetIndexBuffer(3, 红柱组);
SetIndexBuffer(4, 趋势);
SetIndexStyle(0, DRAW_HISTOGRAM, 0, 1);
SetIndexStyle(1, DRAW_HISTOGRAM, 0, 1);
SetIndexStyle(2, DRAW_HISTOGRAM, 0, 3);
SetIndexStyle(3, DRAW_HISTOGRAM, 0, 3);
SetIndexDrawBegin(0, 跨期);
SetIndexDrawBegin(1, 跨期);
SetIndexDrawBegin(2, 跨期);
SetIndexDrawBegin(3, 跨期);
SetIndexDrawBegin(4, 跨期);
switch(选用水平){
case 1:
水平线= level1;
break;
case 2:
水平线= level2;
break;
case 3:
水平线= level3;
break;
case 4:
水平线= level4;
break;
case 5:
水平线= level5;
break;
default:
水平线= level1;
break;
}
return(0);
}
//--------------主函数--------------+
int start()
{
int 已计= IndicatorCounted();
if(已计0)
已计--;
int 最少计= Bars-已计;
for(int i=最少计; i>=0; i--){
//--引用值
double 极值高= High[iHighest(NULL,0,MODE_HIGH, 跨期, i)];
double 极值低= Low[ iLowest( NULL,0,MODE_LOW, 跨期, i)];
//--趋势转涨
if(Open[i]>Close[i]){
if(趋势[i+1]>=0 && Close[i]-极值低>(极值高-极值低)*水平线)
趋势[i]= 1;
else
趋势[i]= -1;
}
//--趋势转跌
else{
if(趋势[i+1](极值高-极值低)*水平线)
趋势[i]= -1;
else
趋势[i]= 1;
}
//--趋势转换时报警
if(使用报警==true && i==0 && 趋势[0]!=趋势[1]){
if(最后时间!=Time[0]){
if(趋势[0]==1){
Comment("FiboBars2在时框: "+Symbol()+"周期为: M"+Period()+"上信号为: 买");
}
else
if(趋势[0]==-1){
Comment("FiboBars2在时框: "+Symbol()+"周期为: M"+Period()+"上信号为: 卖");
}
}
最后时间= Time[0];
if(最后趋势!=趋势[0]){
PlaySound("event.wav");
}
最后趋势= 趋势[0];
}
if(趋势[i]==1){
绿柱组[i]= High[i];
白柱组[i]= Low[i];
蓝柱组[i]= MathMax(Open[i], Close[i]);
红柱组[i]= MathMin(Open[i], Close[i]);
}
else
if(趋势[i]==-1){
绿柱组[i]= Low[i];
白柱组[i]= High[i];
蓝柱组[i]= MathMin(Open[i], Close[i]);
红柱组[i]= MathMax(Open[i], Close[i]);
}
else{
绿柱组[i]= EMPTY_VALUE;
白柱组[i]= EMPTY_VALUE;
蓝柱组[i]= EMPTY_VALUE;
红柱组[i]= EMPTY_VALUE;
}
}
return(0);
}
//--------试译者: hance66.blog.163.com/blog/ --------+
|