- 精华
- 0
- 在线时间
- 103 小时
- UID
- 217043
- 积分
- 69
- 帖子
- 38
- 阅读权限
- 30
- 注册时间
- 2015-8-14
- 最后登录
- 2024-4-21
- 精华
- 0
- UID
- 217043
- 积分
- 69
- 帖子
- 38
- 主题
- 17
- 阅读权限
- 30
- 注册时间
- 2015-8-14
- 最后登录
- 2024-4-21
|
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[1]>AMAValue[2]and AMAValue[2]<AMAValue[3])
ExtLow = AMAValue[2]; //计算前低
if(AMAValue[1]<AMAValue[2]and AMAValue[2]>AMAValue[3])
ExtHigh = AMAValue[2]; //计算前高
if(AMAValue[1]>AMAValue[2]) //如果今天的均线值大于昨天
{
if(ExtLow!=0) //如果前低不为零
{
if((AMAValue[1] - ExtLow)>filter) //将均线值减去最低值,看是否大于过滤器
{
LongEntryCon = true;
}
}Else if((AMAValue[1]-AMAValue[2])>AMAOffSet ) //如果前低为零,即没有产生前低,则直接比较两日的均线值是否大于触发值
{
LongEntryCon = true;
}
}
if(AMAValue[1]<AMAValue[2])
{
if(ExtHigh!=0)
{
if((AMAValue[1] - ExtHigh)>filter)
{
ShortEntryCon = true;
}
}Else if((AMAValue[2]-AMAValue[1])>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,Open);
if(MarketPosition !=-1 and ShortEntryCon)
SellShort(lots,Open);
end
根据楼主的修改了一下。 |
|