跨周期情况下的均线计算。
使用环境:
基本数据源为1分钟,通过DataConvert可以转化为对应的5分钟数据,有些朋友希望能够在1分钟图里面取道5分钟的数据的均线,效果要和单独使用5分钟的均线一样。为此,提供以下函数。
- 新建一个用户函数,TransMinsData,返回值为数值型。
参数1:要计算的数据源。
参数2:想按N分钟来处理,本例是5分钟,不能大于60。
参数3:希望取多少个N分钟前的数据。
Params
NumericSeries Price(1);
Numeric nMinSet(5);
Numeric MinsAgo(2);
Vars
NumericSeries barCnt;
NumericSeries MinData;
Numeric i;
Numeric j;
Numeric nIndex(0);
Begin
If(IntPart(Minute%nMinSet)==0)
{
barCnt = 1;
}Else
{
barCnt = barCnt[1] + 1;
}
MinData = Price;
If(MinsAgo == 0)
{
return MinData;
}Else
{
For i = 1 To MinsAgo
{
If( i == 1)
{
j = 0;
}Else
{
j = j + BarCnt[j];
}
If (j > CurrentBar ) Return InvalidNumeric;
nIndex = nIndex + BarCnt[j];
}
Return MinData[nIndex];
}
End
- 新建一个技术指标,用来举例说明如何使用该函数。
本例是取5分钟的均值((O+H+L+C)/4)的10周期移动平均。
Params
Numeric Length(10);
Vars
Numeric MyOpen;
Numeric MyHigh;
Numeric MyLow;
Numeric MyClose;
NumericSeries MyAvgPrice;
Numeric SumValue(0);
Numeric Value1;
Numeric i;
Begin
MyOpen = DataConvert(Open,"min",5,"Open");
MyHigh = DataConvert(High,"min",5,"High");
MyLow = DataConvert(Low,"min",5,"Low");
MyClose = DataConvert(Close,"min",5,"Close");
MyAvgPrice = (MyOpen+MyHigh+MyLow+MyClose)*0.25;
For i = Length-1 DownTo 0
{
Value1 = TransMinsData(MyAvgPrice,5,i);
SumValue = SumValue + Value1;
}
PlotNumeric("AvgPrice",SumValue/Length);
End
关键字:程序化交易, TradeBlazer, 跨周期
风险提示及免责条款
市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!