这个指标很有意思,不知道有人有没有源码,变色就是转势,但是往往不知道什么时候变色了,看到总是晚了,虽然有报警功能,但是一变色就报警,等收线又变回去了,这样很不好,我想把这个指标添加一个功能,能跨周期同时语音文字报警,比如说当前的周期是H1,检测到M15变色了也会在屏幕的左上角弹出文字并配有语音提醒,而且只需要切换周期就自动消失,不弹出对话框来,关来关去的麻烦。希望大牛们帮忙弄一下!找到源码了!如下
//[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/ --------+
|