sunjd03 发表于 2017-12-19 14:44:48

为何会在同一点位买入卖出?

如图,已经是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;
                        }

mianmian 发表于 2017-12-22 18:02:01

你的代码嵌套问题,你应该是没写过程序吧。程序都是从上往下执行的。

问题:你上面执行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:12

建议你写程序,写成结构化的。这样清楚些,标准程序员都不会将判断写成那样的。

sunjd03 发表于 2017-12-26 11:03:43

mianmian 发表于 2017-12-22 18:03 static/image/common/back.gif
建议你写程序,写成结构化的。这样清楚些,标准程序员都不会将判断写成那样的。 ...

好的好的,非常感谢!!:handshake
页: [1]
查看完整版本: 为何会在同一点位买入卖出?