- 精华
- 0
- 在线时间
- 188 小时
- UID
- 121070
- 积分
- 133
- 帖子
- 88
- 阅读权限
- 40
- 注册时间
- 2013-7-8
- 最后登录
- 2023-8-18
- 精华
- 0
- UID
- 121070
- 积分
- 133
- 帖子
- 88
- 主题
- 35
- 阅读权限
- 40
- 注册时间
- 2013-7-8
- 最后登录
- 2023-8-18
|
发表于 2013-8-27 21:41:29
|显示全部楼层
有个问题不明白,楼主为什么在一个交易日里才重新计算一下财务数据和唐奇安参数,而不是在每个bar上计算一次?代码中如下:
if(BarsSinceToday==0)
{
DayCount = DayCount + 1; //记录交易日数;
DayHigh = High;
DayLow = Low;
//从第二个交易日开始记录;
if(DayCount>=2)
{
// 前一日真实波幅;
Atr = max(max(Abs(DayHigh[1]-CloseD_1),Abs(DayLow[1]-CloseD_1)),DayHigh[1]-DayLow[1]);
// 存储前一天的Atr到全局变量环0-19;
AtrIndex = (DayCount-2)%LengthAtr;
SetGlobalVar(AtrIndex,Atr[1]);
}
// 从第LengthAtr+1个交易日开始计算;
if(DayCount>=LengthAtr+1)
{
// 计算日线级别长度为LengthAtr的平均真实波幅;
AtrAve = 0 ;
for i=0 to LengthAtr-1
{
AtrAve = AtrAve + getGlobalVar(i);
}
AtrAve = AtrAve/LengthAtr;
N = IntPart(AtrAve);
DonchianFastUpper = Highest(DayHigh[1],(LengthAtr-0.1)*(MyBarsSinceToday[1]+1));
DonchianFastLower = Lowest(DayLow[1],(LengthAtr-0.1)*(MyBarsSinceToday[1]+1));
DonchianSlowUpper = Highest(DayHigh[1],(LengthSlow-0.1)*(MyBarsSinceToday[1]+1));
DonchianSlowLower = Lowest(DayLow[1],(LengthSlow-0.1)*(MyBarsSinceToday[1]+1));
DonchianExitUpper = Highest(DayHigh[1],(LengthExit-0.1)*(MyBarsSinceToday[1]));
DonchianExitLower = Lowest(DayLow[1],(LengthExit-0.1)*(MyBarsSinceToday[1]));
}
//账户最新资产 = 按当前Bar开盘价计算的可用资金 + 持仓保证金 ;
TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();
//标准单位头寸 = (本金*风险比例)/价值波动率
TurtleUnits = (TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue());
TurtleUnits = IntPart(TurtleUnits); // 对小数取整
// PlotString("Units","Units="+Text(TurtleUnits),High+(High-Low),white);
// PlotString("N","N="+Text(N),Low-(High-Low)/2,white);
} |
|