跨周期求MACD值的问题
日线中调用周线MACD数据的代码。
- 新建用户函数WeekXAverage,返回值为数值型,代码如下:
//------------------------------------------------------------------------
// 简称: WeekXAverage
// 名称: 日线转化周线的指数平均
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
NumericSeries Price(10);
Numeric Length(10);
Vars
NumericSeries WeeksNo;
NumericSeries WeekDays;
BoolSeries FirstWeek(True);
Numeric sFcactor;
NumericSeries XAvgValue;
Begin
If(CurrentBar == 0)
{
FirstWeek = True;
}Else
{
FirstWeek = FirstWeek[1];
If(FirstWeek && Weekday==1)
{
FirstWeek = False;
}
}
WeeksNo = IntPart(DateDiff(19700105,Date)/7);
If(WeeksNo!=WeeksNo[1])
{
WeekDays = 1;
}Else
{
WeekDays = WeekDays[1] + 1;
}
sFcactor = 2 / ( Length + 1 );
if (FirstWeek)
{
XAvgValue = Price;
}else
{
XAvgValue = XAvgValue[WeekDays] + sFcactor * ( Price - XAvgValue[WeekDays] ) ;
}
Return XAvgValue;
End
//------------------------------------------------------------------------
// 编译版本 GS2004.06.12
// 用户版本 2008/04/08 20:23
// 版权所有 nopain
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
- 新建技术指标WeekMACD,代码如下:
//------------------------------------------------------------------------
// 简称: WeekMACD
// 名称: 周线MACD
// 类别: 技术指标
// 类型: 其它类
// 输出:
//------------------------------------------------------------------------
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
NumericSeries MACDValue;
Numeric AvgMACD;
Numeric MACDDiff;
Begin
MACDValue = WeekXAverage( Close, FastLength ) - WeekXAverage( Close, SlowLength ) ;
AvgMACD = WeekXAverage(MACDValue,MACDLength);
MACDDiff = MACDValue - AvgMACD;
PlotNumeric("MACD",MACDValue);
PlotNumeric("MACDAvg",AvgMACD);
If (MACDDiff >= 0)
PlotNumeric("MACDDiff",MACDDiff,Red);
Else
PlotNumeric("MACDDiff",MACDDiff,Green);
PlotNumeric("零线",0);
End
//------------------------------------------------------------------------
// 编译版本 GS2004.06.12
// 用户版本 2008/04/08 20:20
// 版权所有 nopain
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
- 您可以建一个周线图,插入标准的MACD指标,然后新建一个日线图,插入WeekMACD指标。
为了让两个图的数据完全相等,周线的数据应该要大于120,日线的数据应该要大于(120*5=600)。否则会出现精度误差,这是因为指数平均的最大回溯周期大概是在120左右
程序化交易, TradeBlazer, 跨周期
风险提示及免责条款
市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!