- 精华
- 0
- 在线时间
- 366 小时
- UID
- 1829
- 积分
- 240
- 帖子
- 31
- 阅读权限
- 40
- 注册时间
- 2008-7-3
- 最后登录
- 2020-6-23
- 精华
- 0
- UID
- 1829
- 积分
- 240
- 帖子
- 31
- 主题
- 3
- 阅读权限
- 40
- 注册时间
- 2008-7-3
- 最后登录
- 2020-6-23
|
现象:
1) 加仓价格不是严格的1/2N递增递减,有时反而出现逆向加仓。
2) 赢利头寸出市条件不是反向10日新高/低,会在某个位置莫名其妙以止损出场,而不是严格的右侧交易。
图片可以参考这个帖子:
http://www.tradeblazer.net/forum/viewthread.php?tid=1917
原因:
系统在加仓失败时没有正确处理preEntryPrice变量。
如下代码,加仓失败后,preEntryPrice还是被多次修改,修改后的preEntryPrice值在后面止损指令中被引用。
-
- while(High >= preEntryPrice + 0.5*N) // 以最高价为标准,判断能进行几次增仓
- {
- myEntryPrice = preEntryPrice + 0.5 * N;
- preEntryPrice = myEntryPrice;
- If(Buy(TurtleUnits,myEntryPrice))
- {
- IsAddThisBar = True;
- SetGlobalVar(0,preEntryPrice);// 保存最后一次开仓的价格
- }
- }
- }
- // 止损指令
- If(IsAddThisBar)
复制代码
修改:
或者加仓才改变preEntryPrice值,或者后面止损指令前重新提取preEntryPrice值。- 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)
复制代码
或者
- 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)
复制代码 |
|