设为首页收藏本站

 找回密码
 注册
查看: 761|回复: 1
打印 上一主题 下一主题

请教: 平仓后怎样限制继续同方向开仓。 找到问题所在了 [复制链接]

Rank: 3Rank: 3

精华
0
UID
288470
积分
126
帖子
63
主题
33
阅读权限
40
注册时间
2020-2-7
最后登录
2021-3-25
跳转到指定楼层
1#
发表于 2020-2-15 16:05:27 |只看该作者 |倒序浏览
本帖最后由 Alex2020 于 2020-2-15 17:50 编辑

找到问题了,平仓标志改为序列变量就可以了。(没看到删帖的地方,那就先说明一下,问题解决了。)

=====
我想达到的目的是:平多仓后,不继续开多。直到开空以后,才能正常开多仓。反之也一样,平空后不再开空,等开多条件满足, 清除不开空的限制。不知道有什么好的办法实现。
我写了一个程序,但是在Tick上运行时没有起作用。 平多仓后马上又开了多仓。不知道哪里不对。

我用变量 MarkPC 记住是否平过仓。平多,设为1,平空设为-1. 如果MarkPC==1,不能开多仓,只能开空仓。
如果,满足开空条件, 开空, 并设置MarkPC=0. 清除限制。
实际在Tick图上运行时,平空后,第2个Tick马上又开了开仓。没达到目的。

Vars
Numeric MarkPC(0);          //平仓标志: 1:平多,-1平空

Bool Dzy;          // 多仓止盈条件
Bool Kzy;          // 空仓止盈条件
Bool Dzs;          // 多仓止损条件
Bool Kzs;          // 空仓止损条件
               
Bool Dkc;          // 开多条件
Bool Kkc;          // 开空条件

Begin

Dzy = High>=MyEntryPrice+Zy*MinPoint  && MarketPosition==1;  // 多仓止盈条件
Dzs =  Low<=MyEntryPrice-Zs*MinPoint && MarketPosition==1;    // 多仓止损条件
Kzy =  Low<=MyEntryPrice-Zy*MinPoint && MarketPosition==-1;   // 空仓止盈条件
Kzs = High>=MyEntryPrice+Zs*MinPoint && MarketPosition==-1;   // 空仓止损条件

Dkc=High>=Dkcx && MarkPC<>1 && MarketPosition <>1;     // 开多仓条件:
Kkc= Low<=Kkcx && MarkPC<>-1 && MarketPosition <>-1;   // 开空仓的条件

  // 止盈止损
   If(MarketPosition==1) // 有多仓的情况
   {
        If ( Dzy )                                 // 如果多仓止赢条件满足
        {
            MyExitPrice=High;                      // 委卖价平多仓,止盈         
              Sell(0,MyExitPrice);                   // 平掉所有持仓;
              MarkPC=1;                              // 标记多平仓
            Commentary("Dzy"+Text(MyExitPrice));   // 标记
                 
        }else if( Dzs )                            // 如果满足多仓止损条件
         {
                  MyExitPrice=Low;                       // 委买价平多仓(卖),止损
                  Sell(0,MyExitPrice);                   //
                  MarkPC=1;                              // 标记多平仓
                Commentary("Dzs"+Text(MyExitPrice));   // 标记
         }
   
   }else if(MarketPosition==-1)                   // 有空仓的情况
         {
            If ( Kzy )                                 // 如果满足开仓止赢条件
           {
            MyExitPrice=Low;                       // 委买价平空仓,止盈
            BuyToCover(0,MyExitPrice);                     
              MarkPC=-1;                              // 标记空平仓
            Commentary("Kzy"+Text(MyExitPrice));      // 标记      
           }else if( Kzs )                            // 如果满足空仓止损条件
            {
              MyExitPrice = High;                     // 委卖价平空(买),止损
                BuyToCover(0,MyExitPrice);  
                MarkPC=-1;                              // 标记空平仓
              Commentary("Kzs"+Text(MyExitPrice));   // 标记
            }
      }
  // 止盈止损

If ( Dkc )                           // 满足开多条件
                 {
                        Buy(1,High);                      // 委卖价开多仓
                        MarkPC=0;                         // 清除平仓标志
                        Commentary("Dkc"+Text(High));     // 标记
                 }                 
                 
If ( Kkc )                            // 满足开空条件
     {
                SellShort(1,Low) ;                 // 委买价开空
                MarkPC=0;                          // 清除平仓标志
                Commentary("Kkc"+Text(Low));       // 标记
     }

END

Rank: 3Rank: 3

精华
0
UID
288470
积分
126
帖子
63
主题
33
阅读权限
40
注册时间
2020-2-7
最后登录
2021-3-25
2#
发表于 2020-2-15 16:59:05 |只看该作者
如图,fu2005 Tick , 空仓止盈后马上又开空仓, 空仓止损后,也马上开了空仓。
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

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

bottom

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

GMT+8, 2024-5-20 00:18

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部