2008-8-7 20:52
shawn_liu
to nopain : TB海龟中的一个bug
现象:
1) 加仓价格不是严格的1/2N递增递减,有时反而出现逆向加仓。
2) 赢利头寸出市条件不是反向10日新高/低,会在某个位置莫名其妙以止损出场,而不是严格的右侧交易。
图片可以参考这个帖子:
[url=http://www.tradeblazer.net/forum/viewthread.php?tid=1917]http://www.tradeblazer.net/forum/viewthread.php?tid=1917[/url]
原因:
系统在加仓失败时没有正确处理preEntryPrice变量。
如下代码,加仓失败后,preEntryPrice还是被多次修改,修改后的preEntryPrice值在后面止损指令中被引用。
[code]
while(High >= preEntryPrice + 0.5*N) // 以最高价为标准,判断能进行几次增仓
{
myEntryPrice = preEntryPrice + 0.5 * N;
preEntryPrice = myEntryPrice;
If(Buy(TurtleUnits,myEntryPrice))
{
IsAddThisBar = True;
SetGlobalVar(0,preEntryPrice);// 保存最后一次开仓的价格
}
}
}
// 止损指令
If(IsAddThisBar)[/code]
修改:
或者加仓才改变preEntryPrice值,或者后面止损指令前重新提取preEntryPrice值。[code] while(High >= preEntryPrice + 0.5*N) // 以最高价为标准,判断能进行几次增仓
{
myEntryPrice = preEntryPrice + 0.5 * N;
If(Buy(TurtleUnits,myEntryPrice))
{
IsAddThisBar = True;
SetGlobalVar(0,preEntryPrice);// 保存最后一次开仓的价格
preEntryPrice = myEntryPrice;
}else
break; // 开仓失败,跳出循环
}
}
// 止损指令
If(IsAddThisBar)[/code]
或者
[code] while(High >= preEntryPrice + 0.5*N) // 以最高价为标准,判断能进行几次增仓
{
myEntryPrice = preEntryPrice + 0.5 * N;
preEntryPrice = myEntryPrice;
If(Buy(TurtleUnits,myEntryPrice))
{
IsAddThisBar = True;
SetGlobalVar(0,preEntryPrice);// 保存最后一次开仓的价格
}
}
}
// 止损指令
preEntryPrice = GetGlobalVar(0); // 重新取出上一次开仓的价格
If(IsAddThisBar)[/code]
2008-8-7 21:07
shawn_liu
只要在每次开仓平仓指令后面加入Commentary就可以发现。
Commentary("preEntryPrice:"+Text(preEntryPrice));
2008-8-8 08:56
kill1919
学习ing:lol :lol :lol
2008-8-8 10:05
nopain
:victory:
2008-8-11 19:37
shawn_liu
还需要改一个地方:
[code] // 当不使用过滤条件,或者使用过滤条件并且条件为False进行后续操作
If ((Not LastProfitableTradeFilter) Or (NOT LastBreakoutWin)[/code]
改为:
[code] // 当不使用过滤条件,或者使用过滤条件并且条件为False进行后续操作
If(((Not LastProfitableTradeFilter) Or (NOT LastBreakoutWin)) And MarketPosition == 0)[/code]
这下子是标准的海龟交易系统了 :lol
2008-9-27 21:50
cyycjt
while(Low <= preEntryPrice - 0.5*N) // 以最低价为标准,判断能进行几次增仓
{
myEntryPrice = preEntryPrice - 0.5 * N;
preEntryPrice = myEntryPrice;
If(SellShort(TurtleUnits,myEntryPrice))
{
IsAddThisBar = True;
SetGlobalVar(0,preEntryPrice);// 保存最后一次开仓的价格
}
}
}
// 止损指令
preEntryPrice = GetGlobalVar(0);
If(IsAddThisBar)
请教:原码尾部一段是否也要同样如上处理?
2008-9-27 22:17
nopain
[quote]原帖由 [i]cyycjt[/i] 于 2008-9-27 21:50 发表 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=18761&ptid=2723][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url]
while(Low [/quote]
不需要的
页:
[1]
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.