[MT4指标]GRFLeadingEdge指标
//+------------------------------------------------------------------+
//| |
//| Copyleft 2007, GammaRatForex |
//| http://www.gammarat.com/Forex |
//+------------------------------------------------------------------+
#property copyright "Copyleft 2007, GammaRatForex"
#property link "http://www.gammarat.com/Forex/"
//design based on the principles similar to the MetaTrader STD Channel
// LSQ line fitting to the a number of samples.
// The trendline is the leading point in the fit;
// the bands are calculated somewhat differently, check the math below and adapt to
// your own needs as appropriate
// also the point estimate is given by the geometric mean
// MathPow(HCCC,.025) (see function "get_avg" below) rather than
// more standard estimates.
// It's computationally fairly intensive
//
//#property indicator_separate_window
//#property indicator_minimum 0
//#property indicator_maximum 100
#property indicator_chart_window
#property indicator_buffers 5
//----
#property indicator_color1 Aqua
#property indicator_color2 Aqua
#property indicator_color3 Aqua
#property indicator_color4 Red
#property indicator_color5 Red
#property indicator_style1 0
#property indicator_style2 2
#property indicator_style3 2
#property indicator_style4 2
#property indicator_style5 2
//---- input parameters
extern int Samples=60;
extern int LookAhead=0;
extern double StdLevel1=2;
extern double StdLevel2 =4.;
//---- buffers
double LeadingEdgeBuffer;
double LeadingEdgeBufferPlus1;
double LeadingEdgeBufferNeg1;
double LeadingEdgeBufferPlus2;
double LeadingEdgeBufferNeg2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
if(LookAhead <0)LookAhead=0;
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,LeadingEdgeBuffer);
SetIndexShift(0,LookAhead);
SetIndexDrawBegin(0,LookAhead+Samples+1);
SetIndexLabel(0,"LeadingEdge Trend");
if(MathAbs(StdLevel1) > 0)
{
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,LeadingEdgeBufferPlus1);
SetIndexShift(1,LookAhead);
SetIndexDrawBegin(1,LookAhead+Samples+1);
SetIndexLabel(1,"LeadingEdge +" + DoubleToStr(StdLevel1,1) + " STD");
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,LeadingEdgeBufferNeg1);
SetIndexShift(2,LookAhead);
SetIndexDrawBegin(2,LookAhead+Samples+1);
SetIndexLabel(2,"LeadingEdge -" + DoubleToStr(StdLevel1,1) + " STD");
}
if(MathAbs(StdLevel2) > 0)
{
SetIndexStyle(3,DRAW_LINE);
SetIndexBuffer(3,LeadingEdgeBufferPlus2);
SetIndexShift(3,LookAhead);
SetIndexDrawBegin(3,LookAhead+Samples+1);
SetIndexLabel(3,"LeadingEdge +" + DoubleToStr(StdLevel2,1) + " STD");
SetIndexStyle(4,DRAW_LINE);
SetIndexBuffer(4,LeadingEdgeBufferNeg2);
SetIndexShift(4,LookAhead);
SetIndexDrawBegin(4,LookAhead+Samples+1);
SetIndexLabel(4,"LeadingEdge -" + DoubleToStr(StdLevel2,1) + " STD");
}
//compute();
//----
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
compute();
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int compute()
{
int i,j,counted_bars=IndicatorCounted();
static double a[2][2],b[2][2];
double base_det,c0,c1,v1,v2,alpha,beta;
static int a_loaded=0;
double s0,s1;
double c01,c11;
//----
if(Bars=0;i--)
{
if(i >=Bars-Samples)
{
continue;
}
c0=0;
c1=0;
for(j=0;j0)
{
LeadingEdgeBufferPlus1=LeadingEdgeBuffer+StdLevel1*c0*Point;
LeadingEdgeBufferNeg1=LeadingEdgeBuffer-StdLevel1*c1*Point;
}
if(MathAbs(StdLevel2)>0)
{
LeadingEdgeBufferPlus2=LeadingEdgeBuffer+StdLevel2*c0*Point;
LeadingEdgeBufferNeg2=LeadingEdgeBuffer-StdLevel2*c1*Point;
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double get_avg(int k)
{
return(MathPow((High[k]*Low[k]*Close[k]*Close[k]),1/4.)/Point);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double det2(double a)
{
return(a[0][0]*a[1][1]-a[1][0]*a[0][1]);
}
//+------------------------------------------------------------------+172_GRFLeadingEdge.jpg
发表于:2014-11-16 02:45只看该作者
2楼
韬客社区www.talkfx.co
发表于:2014-11-16 02:45只看该作者
3楼
发表于:2015-01-04 13:43只看该作者
4楼
辛苦了~分享好资料
韬客社区www.talkfx.co
发表于:2015-01-05 12:20只看该作者
5楼
韬客社区www.talkfx.co
发表于:2015-05-26 09:28只看该作者
6楼
看看再说
发表于:2016-04-20 15:11只看该作者
7楼
学习学习
发表于:2016-07-18 13:50只看该作者
9楼
多谢分享
发表于:2016-07-21 14:11只看该作者
11楼
7777777777777777777777777777777777777
韬客社区www.talkfx.co
发表于:2016-07-29 11:26只看该作者
13楼
ddddddddddddddd
韬客社区www.talkfx.co
发表于:2016-07-30 02:24只看该作者
14楼
ddddddddddddd
韬客社区www.talkfx.co
发表于:2016-12-07 09:11只看该作者
15楼
谢谢分享
韬客社区www.talkfx.co
发表于:2017-08-08 07:49只看该作者
16楼
灌水赚通宝,谢谢分享
韬客社区www.talkfx.co