- 精华
- 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 12:00 编辑
如题,系统很简单,套用海归的头寸管理。只是在查看交易记录的时候,发现前三次的开仓手数和后面相差很大,并不是我要的。因为引入两个跨周期函数,所以可能水平有限,哪里出问题看不出来,请高手赐教。
Params
Numeric MaLength1(20);
Numeric lots(1);
Numeric offset(3);
Numeric RiskRatio(2.5); // % Risk Per N ( 0 - 100)
Numeric TimeFrame(1440);
Numeric BarsBack(1);
Numeric Length(20);
Numeric OriginalCapital(100000);
Numeric ATRLength(20);
Vars
Numeric Ma1;
Numeric i_offset;
Numeric N;
Numeric TotalEquity;
Numeric TurtleUnits;
NumericSeries MtATR;
NumericSeries ATRValue;
Numeric oATR;
NumericSeries AvgTR;
Numeric oMA1;
Begin
If (Portfolio_CurrentCapital >= 0.9*OriginalCapital)
{
MtATR(TimeFrame,BarsBack,Length,oATR);
ATRValue = oATR;
TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();//获得按当前bar开盘价计算的可用资金+获得当前的持仓保证金
N = TotalEquity/100;
TurtleUnits = (N*RiskRatio) /(ATRValue * ContractUnit()*BigPointValue());
TurtleUnits = IntPart(TurtleUnits); // 对小数取整
AvgTR = XAverage(TrueRange,ATRLength);
Commentary("TotalEquity="+Text(TotalEquity));
Commentary("手数="+Text(TurtleUnits));
Commentary("ATR="+Text(ATRValue));
Commentary("AvgTR="+Text(AvgTR));
Commentary("Riskcapital="+Text(N*RiskRatio));
}
MtMa(TimeFrame,BarsBack,MaLength1,oMA1);
Ma1 = oMA1;
PlotNumeric("Ma1",MA1);
i_offset = offset*MinMove*PriceScale;
If(Open>Ma1)
{
Buy(TurtleUnits,Open+i_offset);
Return;
}
If(Open< Ma1 )
{
SellShort(TurtleUnits,Open-i_offset);
Return;
}
End |
|