设为首页收藏本站

 找回密码
 注册
查看: 1659|回复: 3

为何会在同一点位买入卖出? [复制链接]

Rank: 1

精华
0
UID
258116
积分
14
帖子
5
主题
3
阅读权限
10
注册时间
2017-10-23
最后登录
2019-9-27
发表于 2017-12-19 14:44:48 |显示全部楼层
如图,已经是1秒的周期了,居然在同价位开仓平仓,这是什么原因啊?请大神们帮忙,先谢谢了!

代码简单如下:
  1. If(MarketPosition == 0 AND Open >= S2 AND Open <= U1 )
  2.         {
  3.                 If(High>=U1)
  4.                 {
  5.                         Buy(lots,U1 + i_offset);
  6.                      
  7.                 }
  8.                                
  9.                                 If(Low<=S2)
  10.                 {
  11.                         SellShort (lots,S2 - i_offset);
  12.                         
  13.                 }
  14.                 }
  15.                 If(MarketPosition == 1 AND High >= MyEntryPrice + TakeProfitSet )
  16.                                 {
  17.             
  18.                        MyExitPrice = MyEntryPrice + TakeProfitSet;
  19.                                           
  20.                                            Sell(0,MyExitPrice);
  21.                                            Return;
  22.                                
  23.                                 }
  24.                 If(MarketPosition == -1 AND Low <= MyEntryPrice - TakeProfitSet)
  25.                                 {
  26.                                         MyExitPrice = MyEntryPrice - TakeProfitSet;
  27.                                           
  28.                                           BuyToCover (0,MyExitPrice);
  29.                                           Return;
  30.                         
  31.                                 }
  32.                                
  33.                  If(MarketPosition == 1 AND Low <= MyEntryPrice - StopLossSet AND BarsSinceLastEntry > 0)
  34.                         {               
  35.                         MyExitPrice = MyEntryPrice - StopLossSet;
  36.                                             
  37.                                 Sell(0,MyExitPrice);
  38.                                 Return;
  39.                                
  40.                         }
  41.                 If(MarketPosition == -1 AND High >= MyEntryPrice + StopLossSet AND BarsSinceLastEntry > 0)
  42.                 {
  43.                         MyExitPrice = MyEntryPrice + StopLossSet;
  44.                                                
  45.                                 BuyToCover(0,MyExitPrice);
  46.                                 Return;
  47.                         }
复制代码
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 1

精华
0
UID
260680
积分
21
帖子
12
主题
1
阅读权限
10
注册时间
2017-12-18
最后登录
2017-12-25
发表于 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);
                        
                }
                }

使用道具 举报

Rank: 1

精华
0
UID
260680
积分
21
帖子
12
主题
1
阅读权限
10
注册时间
2017-12-18
最后登录
2017-12-25
发表于 2017-12-22 18:03:12 |显示全部楼层
建议你写程序,写成结构化的。这样清楚些,标准程序员都不会将判断写成那样的。

使用道具 举报

Rank: 1

精华
0
UID
258116
积分
14
帖子
5
主题
3
阅读权限
10
注册时间
2017-10-23
最后登录
2019-9-27
发表于 2017-12-26 11:03:43 |显示全部楼层
mianmian 发表于 2017-12-22 18:03
建议你写程序,写成结构化的。这样清楚些,标准程序员都不会将判断写成那样的。 ...

好的好的,非常感谢!!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-3-29 06:32

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部