5.10 Custom indicators自定义指标

5.10  Custom indicators自定义指标

自定义指标中使用的一组函数。

这些函数不能在智能交易和脚本中使用。

5.10.1  IndicatorBuffers指标缓冲

void IndicatorBuffers( int count)

对于缓冲储存器分配记忆应用自定义指标计算。缓冲储存器的总数不能超过8个,或者是小于自定义缓冲属性中所给出的值。如果客户指标要求另外的缓冲器计数,那么这个功能必须使用为指定总额缓冲。

【参量】

Count—在指标缓冲器和s缓冲储存器之间分配缓冲储存器的总量。

【示例】

#property indicator_ separate_window

#property indicator_buffers 1

#property indicator_colorl Silver

//一一-一自定义参量

extern int FastEMA=12;

extern int S1owEMA=26;

extern int SignalSMA=9;

//--一一自定义缓冲

double ind_  bufferl[];

double ind_ buffer2[];

double ind_  buffer3[];

//十一一一一一一一一一一一一一一一一一一一一十

//I  Custom indicator initialization function                                          I

//+一一一一一一一一一一一一一一一一一一一一+

int init)

{

//一--一使用两个添加缓冲。

IndicatorBuffers( 3);

//-一-一画出设定

SetlndexStyle ( 0,DRAW _HISTOGRAM , STYLE_SOLID , 3);

SetIndexDrawBegin ( 0 , SignalSM A);

IndicatorDigits( MarketInfo( Symbol(),MODE  DIGITS)+2);

//一一-一绘制3个添加缓冲位置

SetIndexBuffer( 0,ind_ buffed);

SetIndexBuffer( 1,ind_buffer2;

SetIndexBuffer( 2 , ind_buffer3);

//---一DataWindow和自定义窗口标签名称

IndicatorShortName(”OsMA(”+FastEMA+’.,”+S1owEMA+’‘,”+SignalSMA十”)”);

//-一-一初始化结束

return ( 0 )

5.10.2  IndicatorCounted指标蜡烛总数

int IndicatorCounted)

在自定义最后一次开启之后,函数返回柱的总数不会改变,计算过的柱数无须重新计算。在大多数情况下,同样数额的索引值不需要重估。函数应用到优化计算中。

注解:最近的柱无须考虑计算,在多数情况下,这个柱是要被重估的。不过,自定义指标显示交易中的新柱的第一价格变动。可能先前柱的最后一个价格变动没有处理的结果(因为在最后一个价格变动进人时倒数第二个没有处理完成),可定义柱将不会显示和计算。在这样的情况下,为了避免错误,IndicatorCounted)函数会返回前一个柱。

【示例】

int start()

{

int limit;

int counted_ bars=IndicatorCounted();

//---一检验可能出现的错误

if( counted_ bars<0 )  return(一1);

//---一最后数的柱将被重数

if( counted_bars>0 ) counted_bars-一;

limit=Bars一counted_ bars;

//一一一一主环

for( int i=0;i<limit; i++)

{

//一一一一ma shift set to 0 because SetIndexShift called abowe

ExtBlueBuffer[i]=iMA( NULL,O,JawsPeriod , 0,MODE_SMMA,PRICE_MEDI-AN,i);

ExtRedBuffer[i]=iMA(NULL, 0,TeethPeriod,0,MODE_SMMA,PRICE _MEDIAN,i);

ExtLimeBuffer[i]=iMA(NULL,O,LipsPeriod,0,MODE_SMMA, PRICE_MEDIAN,i);

}

//完成

return ( 0 );

5.10.3  IndicatorDigits指标小数位数

void IndicatorDigits ( int digits

设置精确格式(计数数字在小数点以后),使自定义值直观化。货币对精确价格为默认值。指标会添加到图表中。

【参量】

Digits—精确格式。

【示例】

int init()

{

//-一-一使用及计算两个添加缓冲。

IndicatorBuffers ( 3);

//-一一一画出参量设置

SetIndexStyle(O,DRAW_HISTOGRAM,STYLE SOLID,3);

SetIndexDrawBegin ( 0 , SignalSMA );

IndicatorDigits( Digits+2);

//--一一一个自定义的3个缓冲

SetIndexBuffer( 0,ind  bufferl);

SetIndexBuffer( 1,ind_buffer2 );

SetIndexBuffer( 2,ind_buffer3);

//---一DataWindow和自定义子窗口”简称”

IndicatorShortName(‘,OsMA(”+FastEMA+”,”+S1owEMA+”,”+SignalSMA+”)”);

//---一初始化完成

return ( 0 );

5.10.4  IndicatorShortName指标简称

void IndicatorShortName( string name

设置显示在数据窗口和子窗口中自定义指标的”简称”。

【参且】

Name—新简称。

【示例】

int init()

{

//---一使用计算两个添加缓冲

IndicatorBuffers ( 3);

//--一一画出设定

SetIndexStyle ( 0,DRAW_HISTOGRAM,STYLE_ SOLID ,3);

SetIndexDrawBegin ( 0 , SignaISM A );

IndicatorDigits( MarketInfo( Symbol(),MODE_DIGITS)+2);

//一--一绘制3个添加缓冲位置

SetIndexBuffer( 0 , ind_bufferl);

SetIndexBuffer( 1 , ind_buffer2);

SetIndexBuffer( 2 , ind_ buffer3);

//一--一DataW indow和自定义子窗口标签名称

IndicatorShortName(”OsMA(”+FastEMA+”,”+S1owEMA+”,”+SignalSMA+”)‘,);

//一--一初始化完成

return ( 0 );

5.10.5  SetlndexArrow定义箭头类型

void SetIndexArrow ( int index,int code)

设置DRAW_  ARROW类型的自定义线为一个箭头货币对。箭头代码范围限于33一255之间。

【参量】

Index—索引线。必须在0 -- 7之间。

Code—来自Wingdings或数组常数的货币对代码。

【示例】

int init()

//一--一两个自定义缓冲

SetIndexBuffer( 0,ExtUppperBuffer);

SetIndexBuffer( 1,ExtLowerBuffer);

//一--一绘制参量设置

SetIndexStyle ( 0,DRAW_ ARROW);

SetlndexArrow ( 0 , 217);

SetIndexStyle( 1,DRAW_ARROW);

SetIndexArrow( 1 ,218);

//一--一在DataW indow窗口显示

SetIndexLabel ( 0,”Fractal Up");

SetIndexLabel( 1,”Fractal Down");

//---一初始化完成

return ( 0 );

5.10.6  SetlndexBuffer指标索引

boot SetIndexBuffer( int index,double array」)

对于自定义指标预定义的缓冲器绑定的索引序号。需要使用Indicator-Buffers)函数计算缓冲器的总数并且不能超过8。如果成功,返回TRUE;否则,将返回FALSE。获得详细信息,请查看GetLastError()函数。

【参量】

Index—索引线。必须在0一7之间。

array—数组存储计算指标值。

【示例】

double ExtBufferSilver}];

int roil()

SetIndexBuffer(O,ExtBufferSilver); //第一线缓冲

//…

5.10.7  SetlndexDrawBegin指标开始画线位置

void SetIndexDrawBegin(  int index,int begin)

从给出指标线画出必须开始设置柱数字(从数据开始)。指标线会从左到右画出所给出指标数组值,左边部分不会显示在图表或数据窗口中。设置零作为默认值,随r所有数据将得出。

【参量】

Index—索引线。必须在0一7之间。

Begin—第一个画出柱的数字位置。

【示例】

int init()

//--一一使用计算两个添加缓冲

IndicatorBuffers ( 3):

//一--一画出设定

SetIndexStyle ( 0,DRAW  HISTOGRAM,STYLE SOLID ,3);

SetIndexDrawBegin ( 0 , SignalSMA );

IndicatorDigits( Marketlnfo( Symbol(),MODE_DIGITS)+2);

//-一一一绘制3个添加缓冲位置

SetIndexBuffer( 0,ind_bufferl);

SetIndexBuffer( 1 , ind_ buffer2 );

SetIndexBuffer( 2 , ind_  buffer3);

//---一DataWindow和自定义子窗口标签名称

IndicatorShortName(”OsMA(”+FastEMA+’‘,”+S1owEMA+”,”+SignalSMA

初始化完成

return ( 0);

5.10.8  SetlndexEmptyValue指标参数预设

void SetIndexEmptyValue(int index,double value)

设置图画线缺省值。缺省值不得出或不被显示在DataWindow。缺省值是EMPTY_  VALUE。

【参量】

Index—索引线。必须在0 -7之间。

Value—新”缺省值”。

【示例】

int init()

//一一-一两个添加缓冲

SetlndexBuffer( 0,ExtUperBuffer);

SetIndexBuffer( 1,ExtLowerBuffer);

//一一-一画出参量设置

SetIndexStyle( 0,DRAW_ARROW);

SetIndexArrow( 0 ,217);

SetIndexStyle],DRAW_ARROW);

SetIndexArrow( I ,218);

//-一-一零值不显示

SetIndexEmptyValue ( 0 ,0. 0 );

SetIndexEmptyValue( 1 ,0. 0);

//-一一一在DataW indow窗口不显示

SetIndexLabel( 0,”Fractal Up");

SetIndexLabel ( 1,”Fractal Down");

//一--一初始化完成

return ( 0 );

5.10.9  SetlndexLabel指标参数名称

void SetIndexLabel (  int index,string text )

在数据窗口中设置图画线描述。

【参量】

Index—索引线。必须在0 -7之间。

Text—标签文本。NULL表示索引值在DataWindow中不显示。

【示例】

//十一一一一一一一一一一一一一一一一一一一一一+

//I  Ichimoku Kinko Hyo initialization function

//+一一一一一一一一一一一一一一一一一一一一一十

int init()

//

SetIndexStyle ( 0 , DRA W_  LINE );

SetlndexBuffer( 0 , Tenkan_Buffer );

SetlndexDrawBegin ( 0 , Tenkan一1);

SetlndexLabel ( 0,”Tenkan Sen");

//

SetlndexStyle( 1,DRA W_LINE );

SetIndexBuffer( 1,Kijun_Buffer);

SetIndexDrawBegin( 1,Kijun一1);

SetIndexLabel( I,”Kijun Sen");

//一一一一

a begin=Kijun;if( a_ begin<Tenkan) a_ begin=Tenkan;

SetIndexStyle ( 2,DRA W _HISTOGRAM , STYLE_DOT );

SetIndexBuffer( 2 , SpanA_Buffer);

SetlndexDrawBegin( 2,Kijun+a begin一1);

SetIndexShift( 2,Kijun);

//---一在DataWindow窗口Up Kumo线不显示

SetIndexLabel ( 2,NULL);

SetlndexStyle(S,DRAW_  LINE,STYLE_DOT);

SetlndexBuffer( 5 , SpanA2_Buffer);

SetIndexDrawBegin ( 5,Kijun+a_ begin一I);

SetlndexShift ( 5,Kijun );

SetIndexl,abel ( 5,”Senkou Span A");

//一一一一

SetlndexStyle ( 3,DRA}'_HIS'TOGRAM,STYLE DOT);

SetIndexBuffer( 3 , SpanB_ Buffer);

SetlndexDrawBegin( 3,Kijun+Senkou一1);

SetIndexShift( 3,Kijun);

//-一-一在DataW indow窗口Down Kumo线不显示

SetlndexLabe.l ( 3,NULL);

//一一一一

SetlndexStyle ( 6 , DRAW_LINE,STY LE_DO'T );

SetlndexBuffer( 6 , SpanB2_Buffer);

SetIndexDrawBegin ( 6 , Kijun+Senkou一1);

SetIndexShift( 6 , Kijun );

SetIndexLabel( 6,”Senkou Span B");

//

SetIndexStyle( 4,DRAW_LINE);

SetIndexBuffer( 4 , Chinkou_  Buffer);

SetIndexShift(4,一Kijun );

SetIndexLahel ( 4,”Chinkou Span");

//

return ( 0 );

}

5.10.10  SetlndexShift指标位移量

void SetIndexShift( int index,int shift)

撤销画线设置。对于仓位值,画线将会平移到右侧或是左侧。当前柱计算值将被平移到相应的柱。

【参量】

Index—索引线。必须在0 -7之间。

Shift—平移植。

【示例】

   

5.10.11  SetlndexStyle指标类型

void SetIndexStyle ( int index,int type , void style , void width , void elr )

设置新型、样式、宽度和颜色为一条指定的显示线。

【参量】

Index—索引线。必须在0一7之间。

Type—样式风格。可以是画线风格列表中的一个。

Style画线风格。可以应用单线。可以是画线风格列表中的一个。

E M PTY值表示风格不变。

Width—线的宽度。线的宽度可以是1,2,3,4,5 EMPTY值表示风格不变。

C1r—线的颜色。现存的参量表示颜色将不会改变。

【示例】

SetlndexStyle ( 3,DRAW_LINE,EMPTY ,2 ,Red);

5.10.12  SetLeveIStyle线型

void SetLevelStyle ( int draw_style,int line_width,void clr)

函数设置指标水平线输人新型、样式、宽度和颜色输人数据。

【参量】

draw_style—画线风格。可以应用单线。可以是画线风格列表中的一个。EMPTY值表示风格不变。

line_ width—线的宽度。线的宽度可以是1,2,3,4,5o EMPTY值表示风格不变。

Clr—线的颜色。现存的参量表示颜色将不会改变。

【示例】

//-一-一红色单线显示水平

SetLevelStyle(STYLE SOLID ,2 ,Red)

5.10.13  SetLeveIValue水平线赋值

void SetLevelValue( int level,double value

函数设置输人数据指标的水平线。

【参量】

Level—水平索引(0一31)。

Value—给出的指标水平值。

【示例】

SetLevelValue( 1 ,3. 14);