2008-8-16 01:03
hcrob
请教老师一个TransMinData参数的问题
请教老师一个TransMinData参数的问题
看过TransMinData这个算法后,不知道我理解的对不对,在TransMinData中第三个参数"i".的实际用法是不是我模拟的周期的追溯值
如:我在5分钟图上模拟30分钟K线,我想在模拟好的K线上,往前追溯两根30分钟线。
引用函数的方法是不是
5分钟图上
TransMinData(DataConvert(Close,"min",30,"Close"),30,2)
相当于在30分钟图上的close[2]
我这样理解对吗?
2008-8-16 10:30
nopain
如果使用Close计算,可以直接这么用:
TransMinsData(Close,30,2);
相当于30分钟的Close[2];
但是求其他的值要先转成一个序列变量,然后代入TransMinsData进行计算。
2008-8-17 21:06
hcrob
以下是我改写的公式,能帮我看看为什么5分钟的图像信号与30分钟的有很大的不同?
5分钟:
Params
Numeric N(30); //转换周期
Numeric M(6); //图像根数
Numeric Length(7); // 周期
Numeric BiasLength(7); // 价格偏移
Numeric SmaLength(12); // 价格偏移A
Vars
NumericSeries nClose; //30分钟转换为5分钟收盘价
NumericSeries BIAS; //乖离变量
NumericSeries DIF; //偏移量变量
NumericSeries DBCD;
NumericSeries MM;
NumericSeries A2;
Numeric D2;
Begin
nClose = DataConvert(Close,"min",N,"Close");
BIAS = (nClose - AverageFC(nClose,M*SmaLength))/AverageFC(nClose,M*SmaLength);
Commentary("BIAS = "+ Text(BIAS));
DIF = (TransMinData(BIAS,N,0) - TransMinData(BIAS,N,Length));
Commentary("DIF = "+ Text(DIF));
//DIF = (BIAS - TransMinData(BIAS,N,Length));
DBCD = MySMA(DIF,M*BiasLength,1);
Commentary("DBCD = "+ Text(DBCD));
//DBCD = MySMA(DataConvert(DIF,"min",N,"Close"),M*BiasLength,1);
MM = AverageFC(DBCD,M*5);
Commentary("MM = "+ Text(MM));
A2 = AverageFC(nClose,M*24);
D2 = Atan((TransMinData(A2,N,0)/TransMinData(A2,N,3)-1)*100)*57.2956;
If((Abs(D2)> 5) And CrossOver(DBCD,MM)){
Buy(1,Close); //只开仓不平仓,虽然页面上有显示,但是不会平仓动作
}
If((Abs(D2)> 5) And CrossOver(MM,DBCD)){
SellShort(1,Close); //只开仓不平仓,虽然页面上有显示,但是不会平仓动作
}
End
30分钟:
Params
Numeric Length(7); // 周期
Numeric BiasLength(7); // 价格偏移
Numeric SmaLength(12); // 价格偏移A
Vars
NumericSeries BIAS; //乖离变量
NumericSeries DIF; //偏移量变量
NumericSeries DBCD;
NumericSeries MM;
NumericSeries A2;
Numeric D2;
Begin
BIAS = (Close - AverageFC(Close,SmaLength))/AverageFC(Close,SmaLength);
Commentary("BIAS = "+ Text(BIAS));
DIF = (BIAS - BIAS[Length]);
Commentary("DIF = "+ Text(DIF));
DBCD = MySMA(DIF,BiasLength,1);
Commentary("DBCD = "+ Text(DBCD));
MM = AverageFC(DBCD,5);
Commentary("MM = "+ Text(MM));
A2 = AverageFC(Close,24);
D2 = Atan((A2/A2[3]-1)*100)*57.2956;
If((Abs(D2)> 5) And CrossOver(DBCD,MM)){
Buy(1,Close); //只开仓不平仓,虽然页面上有显示,但是不会平仓动作
}
If((Abs(D2)> 5) And CrossOver(MM,DBCD)){
SellShort(1,Close); //只开仓不平仓,虽然页面上有显示,但是不会平仓动作
}
End
请问我哪写错了?