为何会在同一点位买入卖出?
如图,已经是1秒的周期了,居然在同价位开仓平仓,这是什么原因啊?请大神们帮忙,先谢谢了!{:4_217:}代码简单如下: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);
}
}
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;
} 你的代码嵌套问题,你应该是没写过程序吧。程序都是从上往下执行的。
问题:你上面执行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);
}
} 建议你写程序,写成结构化的。这样清楚些,标准程序员都不会将判断写成那样的。 mianmian 发表于 2017-12-22 18:03 static/image/common/back.gif
建议你写程序,写成结构化的。这样清楚些,标准程序员都不会将判断写成那样的。 ...
好的好的,非常感谢!!:handshake
页:
[1]