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);