- 精华
- 0
- 在线时间
- 7 小时
- UID
- 260680
- 积分
- 21
- 帖子
- 12
- 阅读权限
- 10
- 注册时间
- 2017-12-18
- 最后登录
- 2017-12-25
- 精华
- 0
- UID
- 260680
- 积分
- 21
- 帖子
- 12
- 主题
- 1
- 阅读权限
- 10
- 注册时间
- 2017-12-18
- 最后登录
- 2017-12-25
|
你的代码嵌套问题,你应该是没写过程序吧。程序都是从上往下执行的。
问题:你上面执行BUY之后MarketPosition的值就等于1了。然后程序继续你下面的IF(MarketPosition == 1.。。。。。。的判断),程序就会直接执行你卖出的命令。
解决方法:
1.你可以更改写成结构化程序。
2.你调换一下程序的顺序。
下面给你调换一下顺序:
If(MarketPosition == 1 AND High >= MyEntryPrice + TakeProfitSet )
{
MyExitPrice = MyEntryPrice + TakeProfitSet;
Sell(0,MyExitPrice);
Return;
}
If(MarketPosition == -1 AND Low <= MyEntryPrice - TakeProfitSet)
{
MyExitPrice = MyEntryPrice - TakeProfitSet;
BuyToCover (0,MyExitPrice);
Return;
}
If(MarketPosition == 1 AND Low <= MyEntryPrice - StopLossSet AND BarsSinceLastEntry > 0)
{
MyExitPrice = MyEntryPrice - StopLossSet;
Sell(0,MyExitPrice);
Return;
}
If(MarketPosition == -1 AND High >= MyEntryPrice + StopLossSet AND BarsSinceLastEntry > 0)
{
MyExitPrice = MyEntryPrice + StopLossSet;
BuyToCover(0,MyExitPrice);
Return;
}
复制代码
//把建仓的方下面,因为程序是从上到下执行的,以后注意一下程序的嵌套。
If(MarketPosition == 0 AND Open >= S2 AND Open <= U1 )
{
If(High>=U1)
{
Buy(lots,U1 + i_offset);
}
If(Low<=S2)
{
SellShort (lots,S2 - i_offset);
}
} |
|