请帮我写一段MT4的BOLL缩口后又开口的报警指标代码
时间: 2024-05-03 15:16:36 浏览: 136
以下是MT4的BOLL缩口后又开口的报警指标代码,供参考:
```
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Lime
extern int Period=20;
extern int Deviation=2;
extern double Threshold=0.5;
double Upper[];
double Lower[];
double Middle[];
int init()
{
SetIndexBuffer(0, Upper);
SetIndexStyle(0, DRAW_LINE);
SetIndexLabel(0, "Upper");
SetIndexBuffer(1, Lower);
SetIndexStyle(1, DRAW_LINE);
SetIndexLabel(1, "Lower");
SetIndexBuffer(2, Middle);
SetIndexStyle(2, DRAW_LINE);
SetIndexLabel(2, "Middle");
SetIndexDrawBegin(0, Period);
SetIndexDrawBegin(1, Period);
SetIndexDrawBegin(2, Period);
IndicatorShortName("BOLL");
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int i, limit;
double sum, sd;
limit=Bars-Period-1;
for(i=0; i<=limit; i++)
{
sum=0;
for(int j=i; j<=i+Period-1; j++)
{
sum+=Close[j];
}
Middle[i]=sum/Period;
sum=0;
for(int j=i; j<=i+Period-1; j++)
{
sum+=MathPow(Close[j]-Middle[i], 2);
}
sd=MathSqrt(sum/Period);
Upper[i]=Middle[i]+Deviation*sd;
Lower[i]=Middle[i]-Deviation*sd;
}
if(Upper[0]-Lower[0]<=Threshold*Middle[0])
{
Alert("BOLL Contraction!");
}
return(0);
}
```
此代码实现了BOLL指标的计算,并在BOLL缩口到一定程度时发出警报。其中,Period、Deviation和Threshold均为可调参数,可以根据需要进行调整。另外,本代码中的警报只在指标计算的第一个Bar时发出,如果需要在每个Bar时都进行判断并发出警报,可将警报代码放在循环中。
阅读全文