- 精华
- 0
- 在线时间
- 159 小时
- UID
- 114140
- 积分
- 94
- 帖子
- 53
- 阅读权限
- 30
- 注册时间
- 2012-12-16
- 最后登录
- 2015-4-9
- 精华
- 0
- UID
- 114140
- 积分
- 94
- 帖子
- 53
- 主题
- 24
- 阅读权限
- 30
- 注册时间
- 2012-12-16
- 最后登录
- 2015-4-9
|
本帖最后由 woomin1985 于 2013-2-19 23:52 编辑
//------------------------------------------------------------------------
// 简称: kd2
// 名称:
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
Params
Numeric Length1(3);
Numeric Length2(5);
Numeric Length3(5);
Numeric Lots(1);
Vars
NumericSeries Value1;
NumericSeries Value2;
Numeric LowestValue;
NumericSeries Value5;
NumericSeries RSV;
NumericSeries KValue;
NumericSeries DValue;
Numeric AvgVol5;
NumericSeries CloseTmp1;
NumericSeries CloseTmp2;
NumericSeries RSIValue;
NumericSeries PreLow;
NumericSeries PreKValue;
Numeric Lowest33Value;
NumericSeries VarTmp1;
NumericSeries VarTmp2;
NumericSeries ZL;
Numeric SH;
Begin
{
Value1 =XAverage(Close,Length1);
Value2 =XAverage(Close,Length2);
//取两条均线的值
LowestValue = Lowest(Low,Length3);
//取最低值
Value5= (CLOSE-LowestValue)/(Highest(High,Length3)-LowestValue)*100;
RSV =XAverage(Value5,3);
KValue = XAverage(RSV,3);
DValue =Average(KValue,3);
PreKValue =KValue[1];
PreLow =Low[1];
AvgVol5 =Average(Vol,5);
Lowest33Value= Lowest(Low,33);
VarTmp1=((2*CLOSE+HIGH+LOW)/4 - Lowest33Value )/(Highest(High,33) - Lowest33Value) *100;
ZL =XAverage(VarTmp1,17);
VarTmp2 =0.667*ZL[1] + 0.333*ZL;
SH =XAverage(VarTmp2,2);
CloseTmp1 =Max(Close - Close[1], 0);
CloseTmp2 =Abs(Close - Close[1]);
RSIValue =WAverage(CloseTmp1,6)/WAverage(CloseTmp2,6) *100;
//以上为KD部分只要如何换书写方式就可了,higest==hhv lowest==llv xAverager=ma
// Buy什么时做买入动作,条件
If((CrossOver(Close,Value1 ) && (KValue > DValue) &&(ZL>SH)) Or
(CrossOver(Value1,Value2) && (ZL>SH) && (Vol> 1.25 * AvgVol5) && (KValue > DValue)) Or
(CrossOver(KValue,DValue) && (Close > Value1) &&(ZL>SH)) Or
(CrossOver(RSIValue,70)))//条件
{
Buy(Lots,Close[1]);
}
//SellShort 什么作卖出动作
If((CrossOver(PreLow,Close) && (KValue > DValue ) && (SH>ZL)) Or
(CrossOver(DValue,KValue) && (Close < Value1) &&(Value1 < Value2)) Or
(CrossOver(PreKValue,KValue)&& (SH>ZL)))//条件
{
SellShort(Lots,Close[1]);
}
// Sell 什么做多平动作
If(CrossOver(DValue,KValue)|| Close[1] < Value1 * 1.001)//条件
{
Sell(Lots,Close[1]);
}
//BuyToCover什么进个做空平动作
If(CrossOver(KValue,DValue)|| Close[1] > Value1 * 1.001)//条件
{
BuyToCover(Lots,Close[1]);
}
}
End
评测:回测就大把问题,感觉没啥存在的必要. |
|