- 精华
- 0
- 在线时间
- 264 小时
- UID
- 52470
- 积分
- 182
- 帖子
- 91
- 阅读权限
- 40
- 注册时间
- 2011-7-11
- 最后登录
- 2014-4-24
- 精华
- 0
- UID
- 52470
- 积分
- 182
- 帖子
- 91
- 主题
- 30
- 阅读权限
- 40
- 注册时间
- 2011-7-11
- 最后登录
- 2014-4-24
|
本帖最后由 skykisser 于 2012-7-25 23:10 编辑
自己写了一个跨周期调用ATR的波动突破系统,遇到两个问题。1,信号消失,不知道哪里写的不对了。2,我的入市信号是,无论市场上涨还是下跌相对于前一天收盘价0.7倍的最近5天的ATR,入市。但是信号出来仔细看了看并不是这样,我用的 highline=CloseD[1]+ATREntryset*ATREntryValue; Lowline=CloseD[1]-ATREntryset*ATREntryvalue;不知道这样写对不对。
代码如下:
//------------------------------------------------------------------------
// 简称: ATR突破
// 名称:
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
Params
Numeric length1(5);
Numeric Length2(20);
Numeric Length3(50);
Numeric ATREntrySet(0.7);
Numeric ATRExitSet(3);
Numeric offset(3);
Numeric TimeFrame(1440);
Numeric BarsBack(1);
Vars
Numeric Myentryprice;
Numeric ATRFilterValue;
Numeric ATREntryValue;
Numeric ATRExitValue;
NumericSeries MtATR;
Numeric oATRFilter;
Numeric oATREntry;
Numeric oATRExit;
NumericSeries highline;
NumericSeries Lowline;
Numeric i_offset;
Begin
i_offset = offset*MinMove*PriceScale;
MtATR(TimeFrame,BarsBack,Length3,oATRFilter);
MtATR(TimeFrame,BarsBack,Length1,oATREntry);
MtATR(TimeFrame,BarsBack,Length2,oATRExit);
ATRFilterValue=oATRFilter;
ATREntryValue=oATREntry;
ATRExitValue=oATRExit;
highline=CloseD[1]+ATREntryset*ATREntryValue;
Lowline=CloseD[1]-ATREntryset*ATREntryvalue;
PlotNumeric("Highline",Highline);
PlotNumeric("Lowline",Lowline);
If (MarketPosition == 0 && (ATREntryValue>0.6*ATRFilterValue))
{
If(Open>highline)
{Buy(1, Open+i_offset);
Myentryprice = Open;
}
If(Open<Lowline)
{Sellshort(1, Open-i_offset);
Myentryprice = Open;
}
}
If (MarketPosition == 1)
{
{
If(Open<myentryprice-0.5*ATRExitValue)
Sell (1, Open+i_offset);
}
If (MarketPosition == -1)
{
If(Open>myentryprice+0.5*ATRExitValue)
BuyToCover(1,Open-i_offset);
}
}
End
|
|