美文网首页
自定义指标函数(待)

自定义指标函数(待)

作者: 牛在汇上飞 | 来源:发表于2018-10-23 12:01 被阅读0次

自定义指标函数[Custom Indicator Functions]是用于设计和编写自定义指标。这些函数不能用在编写EA和脚本中。

void IndicatorBuffers(int 缓存总数)

指标数据缓冲区数

为指标缓冲区分配内存,用于对指标计算。缓冲区的个数不能超过8个 也不可小于在自定义缓冲区属性中所给出的值。
如果自定义指标要求额外的缓冲区用于统计,那么这个函数必须使用指定的总缓冲区数。

需输入缓存总数参数是指分配缓冲区的总个数。应该在 indicator_buffers常量值 和8之间。

示例:
.#property indicator_separate_window
.#property indicator_buffers 1
.#property indicator_color1 Silver

//--指标参数
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;

//--指标缓冲区
double ind_buffer1[];
double ind_buffer2[];
double ind_buffer3[];

//----------初始化----------+
int init()
{
//--使用2个额外的缓冲区用于计算。
IndicatorBuffers(3);

//--画线设置
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);

//--设置 3 个指标缓冲区位置
SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);

//-- 数据窗口和自定义窗口的指标标签名称
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");

//--初始化结束
return(0);
}

int IndicatorCounted()

指标已经计算过的缓存数

在自定义指标上次计算运行之后,本函数返回已经计算好的的K线数量。曾经计算过的柱体K线不必重新计算。
大多数情况下,相同的指标值不需要重算,本函数用于优化计算。

(注:最新的K线无须考虑重算,在多数情况下,这个柱子有必要重算,但有时会遇到边界情况,也就是在新K线的第一个价时从EA交易调用自定义指标。可能先前柱子的最后一个价位还没有处理完(因为在这一跳进入时上一跳还没有处理完),因为这个原因,自定义指标将不会被调用和计算。为了避免指标计算出错,IndicatorCounted()函数将返回前一个K线。)

示例:
//---------------------主函数-----------------------+
int start()
{
int limit; // 最少计
int 已计= IndicatorCounted(); // 已计

//--检验可能出现错误
if(已计<0)
return(-1);

//--目的是为了最后未计算过的柱将被重算
if(已计>0)
已计--;

limit= Bars-已计;

//--主要循环
for(int i=0; i<limit; i++){ //--ma_shift set to 0 because SetIndexShift called abowe
ExtBlueBuffer[i]= iMA(NULL,0,JawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtRedBuffer[i]= iMA(NULL,0,TeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtLimeBuffer[i]= iMA(NULL,0,LipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
}

//--主函数完成一次循环
return(0);
}

void IndicatorDigits( int 精确位数)

设置指标精确度
使其值显示直观化。货币对的价格精度采用默认值,指标会添加到图表上。
精确位数参数是指小数点后的小数位数

示例:
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);//使指标值比货币对价格值更精准

void IndicatorShortName( string 指标名 )
设置指标的简称,
可将自定义指标的“简称”在数据窗口和子窗口中显示出来。

示例:
(略)

void SetIndexArrow(int 指标线索引, int 箭头码)

设置指标箭头符号

给DRAW_ARROW类的指标线设置一个箭头符号。
箭头代码的范围限于33到255之间,超过无效。
指标线索引参数,须在0-7之间,
箭头码参数 来自 Wingdings字体 或 箭头代码 的符号代码

示例:
//-----------初始化-----------+

int init()
{
//--2 个指标缓冲区
SetIndexBuffer(0, ExtUppperBuffer);
SetIndexBuffer(1, ExtLowerBuffer);

//--画线参数设置
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 217);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 218);

//--显示在DataWindow窗口
SetIndexLabel(0, "Fractal Up");
SetIndexLabel(1, "Fractal Down");

//--初始化完成
return(0);
}

bool SetIndexBuffer( int 指标线索引, double 缓冲数组名)

设置指标线的缓存区位置
将自定义指标预定义的缓冲区绑定到全局数组。需要计算指标缓冲区的个数由 IndicatorBuffers() 函数设定并且不能超过8个。

指标线索引参数。必须在0-7之间
缓冲数组名参数 存储计算指标值的数组。

示例:
double ExtBufferSilver[];
//-----------初始化--------------+
int init()
{
SetIndexBuffer(0, ExtBufferSilver); // 第1个指标线的值的缓冲区
// ...
}

void SetIndexDrawBegin(int 指标线索引,int 始绘点)

设置指标线的起始位置

指标线从左边绘制到右边,已给出的K线左边的数组值不会显示在图表或数据窗口中。设置0作为默认值,所有数据将被绘出。

指标线索引参数。必须在0至7之间。
始绘点参数指标线开始绘制的K线编号。

示例:(略)

void SetIndexEmptyValue(int 指标线索引 , double 空值)
设置指标线的空值,

设置图表画线空值。设置的值不绘出或不显示在数据窗口。默认值为 EMPTY VALUE。

:: 输入参数
index - 指标线索引。必须是 0 - 7 之间
value - 设置的空值

示例:

//----------------------初始化-----------------------+

int init()

{

//--设置 2 个指标缓冲区位置

SetIndexBuffer(0, ExtUppperBuffer);

SetIndexBuffer(1, ExtLowerBuffer);

//-- 画出参数设置

SetIndexStyle(0, DRAW_ARROW);

SetIndexArrow(0, 217);

SetIndexStyle(1, DRAW_ARROW);

SetIndexArrow(1, 218);

//-- 值为 0 不显示

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0.0);

//--

SetIndexLabel(0, "Fractal Up");

SetIndexLabel(1, "Fractal Down");

//-- 初始化完成

return(0);

}

void SetIndexLabel( int 指标线索引 , string 标签文本 )

设置指标线的标签名

设置在数据窗口和快速提示中,以显示该指标线的说明。

:: 输入参数
index - 指标线索引。必须是 0 - 7 之间
text - 标签文本。若为NULL 表示指标值在数据窗口中不显示。

示例:

//------------------------初始化------------------------------+

int init()

{

//--

SetIndexStyle(0, DRAW_LINE);

SetIndexBuffer(0, Tenkan_Buffer);

SetIndexDrawBegin(0, Tenkan-1);

SetIndexLabel(0, "Tenkan Sen");

//--

SetIndexStyle(1, DRAW_LINE);

SetIndexBuffer(1, Kijun_Buffer);

SetIndexDrawBegin(1, Kijun-1);

SetIndexLabel(1, "Kijun Sen");

//--

a_begin= Kijun;

if(a_begin<Tenkan)

a_begin=Tenkan;
SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_DOT);

SetIndexBuffer(2, SpanA_Buffer);

SetIndexDrawBegin(2, Kijun+a_begin-1);

SetIndexShift(2, Kijun);

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

SetIndexLabel(2, NULL);

SetIndexStyle(5, DRAW_LINE, STYLE_DOT);

SetIndexBuffer(5, SpanA2_Buffer);

SetIndexDrawBegin(5, Kijun+a_begin-1);

SetIndexShift(5, Kijun);

SetIndexLabel(5, "Senkou Span A");

//--

SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_DOT);

SetIndexBuffer(3, SpanB_Buffer);

SetIndexDrawBegin(3, Kijun+Senkou-1);

SetIndexShift(3, Kijun);

//-- 在DataWindow窗口上 Down Kumo 线不显示

SetIndexLabel(3, NULL);

//--

SetIndexStyle(6, DRAW_LINE, STYLE_DOT);

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

SetIndexLabel(4, "Chinkou Span");

//--

return(0);

}

void SetIndexShift( int 指标线索引 , int 位移数)

设置指标线的位移数

:: 输入参数
index - 指标线索引。必须是 0 - 7 之间
shift - K线偏移值

示例:

//-------------------------初始化---------------------------+

int init()

{

//--当画线时指标线的偏移

SetIndexShift(0, JawsShift);

SetIndexShift(1, TeethShift);

SetIndexShift(2, LipsShift);

//-- 当画线时指标线跳过的位置

SetIndexDrawBegin(0, JawsShift+JawsPeriod);

SetIndexDrawBegin(1, TeethShift+TeethPeriod);

SetIndexDrawBegin(2, LipsShift+LipsPeriod);

//-- 设置3个指标缓冲区位置

SetIndexBuffer(0, ExtBlueBuffer);

SetIndexBuffer(1, ExtRedBuffer);

SetIndexBuffer(2, ExtLimeBuffer);

//-- 画出设置

SetIndexStyle(0, DRAW_LINE);

SetIndexStyle(1, DRAW_LINE);

SetIndexStyle(2, DRAW_LINE);

//-- 指标线标签文本

SetIndexLabel(0, "Gator Jaws");

SetIndexLabel(1, "Gator Teeth");

SetIndexLabel(2, "Gator Lips");

//-- 初始化完成

return(0);

}

void SetIndexStyle(int 指标线索引, int 线类, int 线样=EMPTY, int 线宽=EMPTY, color 线色=CLR_NONE)

设置指标线的类型、样式、宽度和颜色。

:: 输入参数

index - 指标线。必须在0至7之间。

type - 线类,可以是 划线形状样式列表 中任意一个。

style - 线型。可以应用一个像素的粗线,可以是 划线形状样式列表 其中一个。EMPTY值表示线型不变。

width - 线宽。有效值是1,2,3,4,5。EMPTY值表示线宽不变。

clr - 线色。省略本参数表示颜色将保持不变

示例:

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

void SetLevelStyle(int 线样, int 线宽, void 线色)

设置输出到副图窗口的指标水平线的样式、宽度和颜色。

:: 输入参数

draw_style - 形状样式,可以是 划线形状样式列表 中任意一个。

line_width - 线宽。有效值是1,2,3,4,5。EMPTY值表示线宽不变。

clr - 线的颜色。空值CLR_NONE表示颜色不变。

示例:

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

SetLevelStyle(STYLE_SOLID,2,Red)

void SetLevelValue(int 线号, double 线值)

设置在副图窗口输出的指标水平线的值。

:: 输入参数

level - 水平线编号,0到31。

value - 给出的水平线值。

clr - 线的颜色。空值CLR_NONE表示颜色不变。

示例:

SetLevelValue(1, 3.14);

相关文章

  • 自定义指标函数(待)

    自定义指标函数[Custom Indicator Functions]是用于设计和编写自定义指标。这些函数不能用在...

  • 21、pandas的apply()和applymap()函数(还

    是否大量使用自定义函数是区分编程小白和老手的重要指标。 虽然在处理数据时,使用自定义函数能够大大缩减时间,并且达到...

  • pandas_map、apply、apply_map

    是否大量使用自定义函数是区分编程小白和老手的重要指标。虽然处理数据时,使用自定义函数能够大大缩减时间,并且达到一些...

  • mysql-自定义函数

    创建自定义无参数函数 调用自定义函数 创建有参数的自定义函数 调用有参数的自定义函数 创建具有复合结构的自定义函数...

  • 9.MySQL自定义函数

    自定义函数 自定义函数的两个必要条件 参数 返回值 创建自定义函数 函数体 例子 带有参数的自定义函数 删除函数 ...

  • trace函数、自定义函数

    trace函数:修改部分可见函数的源代码。自定义函数:函数名<-function(){ } ①自定义函数 ②匿名函...

  • 指标函数

    技术指标相关函数 double iAC( string 币, int 框, int 第) 加减速震荡 :: 输入参...

  • sql server 自定义函数

    函数分为系统函数,自定义函数。 系统函数 如聚合函数,max(),min() 等等系统提供的函数。 自定义函数 自...

  • Django自定义过滤器及标签

    自定义的引入:内置函数>>>>>>>>>>>>>>>自定义函数内置模块>>>>>>>>>>>>>>>自定义模块内置...

  • python03-函数

    函数传递 函数可以作为参数传递 内置函数 自定义filter函数: 自定义map函数: 文件管理 2.7 and ...

网友评论

      本文标题:自定义指标函数(待)

      本文链接:https://www.haomeiwen.com/subject/tmozaftx.html