- 精华
- 0
- 在线时间
- 29 小时
- UID
- 14647
- 积分
- 135
- 帖子
- 34
- 阅读权限
- 40
- 注册时间
- 2010-7-20
- 最后登录
- 2014-10-23
- 精华
- 0
- UID
- 14647
- 积分
- 135
- 帖子
- 34
- 主题
- 9
- 阅读权限
- 40
- 注册时间
- 2010-7-20
- 最后登录
- 2014-10-23
|
//------------------------------------------------------------------------
// 简称: AdaptiveMovAvg
// 名称: 自适应移动平均
// 类别: 交易指令
// 类型: 其他
// 输出:
//------------------------------------------------------------------------
Params
Numeric FilterSet(0.1);//过滤器偏移量
Numeric lots(1);
Numeric terms(10);//自适应计算周期
Numeric AMAOffSetPercent(0.55);//前后两日均线差值触发值百分比
Vars
NumericSeries AMAValue;
Numeric ExtHigh;//前高
Numeric ExtLow;//前低
Numeric filter;
Numeric AMAOffSet;
Bool LongEntryCon(false);
Bool ShortEntryCon(false);
Begin
AMAValue = AdaptiveMovAvg(close,terms,2,30);
if(close == AMAValue)
return; //如果bar个数小于计算周期,直接返回
AMAOffSet=AvgPrice()*AMAOffSetPercent/100; //取当前均价的0.0055作为均线触发值
filter = StandardDev(AMAValue,20,2)*FilterSet; //计算过滤器的值
if(AMAValue>AMAValue[1]and AMAValue[1]<AMAValue[2])
ExtLow = AMAValue[1]; //计算前低
if(AMAValue<AMAValue[1]and AMAValue[1]>AMAValue[2])
ExtHigh = AMAValue[1]; //计算前高
if(AMAValue>AMAValue[1]) //如果今天的均线值大于昨天
{
if(ExtLow!=0) //如果前低不为零
{
if((AMAValue - ExtLow)>filter) //将均线值减去最低值,看是否大于过滤器
LongEntryCon = true;
}Else
{
if((AMAValue-AMAValue[1])>AMAOffSet ) //如果前低为零,即没有产生前低,则直接比较两日的均线值是否大于触发值
LongEntryCon = true;
}
}
if(AMAValue<AMAValue[1])
{
if(ExtHigh!=0)
{
if((AMAValue - ExtHigh)>filter)
ShortEntryCon = true;
}Else
{
f((AMAValue[1]-AMAValue)>AMAOffSet )
ShortEntryCon = true;
}
}
Commentary("AMA:"+TEXT(AMAValue));
Commentary("filter:"+TEXT(filter));
Commentary("ExtLow:"+TEXT(ExtLow));
Commentary("ExtHigh:"+TEXT(ExtHigh));
Commentary("LongCon:"+IIFString(LongEntryCon,"true","false"));
Commentary("ShortCon:"+IIFString(ShortEntryCon,"true","false"));
Commentary("AMAOffSet:"+text(AMAOffSet));
if(MarketPosition !=1 and LongEntryCon)
buy(lots,NextOpen);
if(MarketPosition !=-1 and ShortEntryCon)
SellShort(lots,NextOpen);
end
//------------------------------------------------------------------------
// 编译版本 GS2004.06.12
// 用户版本 2008/12/06 15:39
// 版权所有 cf_38607
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
公式中的if(AMAValue<AMAValue[1])
{
if(ExtHigh!=0)
{
if((AMAValue - ExtHigh)>filter)
ShortEntryCon = true;
}为什么要这么写?AMAValue - ExtHigh永远都小于零,filter都是大于等于零的,那这句话就永远不成立了!不甚明白 |
|