欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 如何实现一根K线开一次不重复仓

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2654人关注过本帖树形打印复制链接

主题:如何实现一根K线开一次不重复仓

帅哥哟,离线,有人找我吗?
scarecrow
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:17 积分:0 威望:0 精华:0 注册:2016/8/23 14:46:38
如何实现一根K线开一次不重复仓  发帖心情 Post By:2016/8/23 14:48:27    Post IP:121.10.254.2[只看该作者]

设计思路是,
1.使用限价成交
2.向上突破均线,开多;
3.向下帖破均线,开空;
4.单根k线只能开一个仓,比如只能开多仓,或者只能开空仓

我设计了代码,但是出现了如下问题:
同一根k线,回测的时候,k线在均线中间的时候,出现频繁开仓平仓再开仓(比如开多,然后平多,在开空)。

本人小白,请教大家帮帮解决问题
代码如下:

MA1:=MA(CLOSE,N1);
手数:=ss;
MA2:REF(MA1,1);

KD:=HIGH>=MA2;
PD:=LOW<MA2;
KK:=LOW<=MA2;
PK:=HIGH>MA2;


      IF HOLDING<0 THEN BEGIN
         IF PK THEN  BEGIN
            SELLSHORT(1,HOLDING,LIMITR,MAX(OPEN,MA2));//平空
         END
      END       


     IF HOLDING=0 THEN BEGIN
        IF KD THEN BEGIN
           BUY(1,手数,LIMITR,MAX(OPEN,MA2));//开多
        END
     END
 
 
     IF HOLDING>0 THEN BEGIN
        IF PD THEN BEGIN
           SELL(1,HOLDING,LIMITR,MIN(OPEN,MA2));//平多
        END
     END

     IF HOLDING=0 THEN BEGIN
        IF KK THEN BEGIN 
           BUYSHORT(1,手数,LIMITR,MIN(OPEN,MA2));//开空
        END
     END
持仓:holding,linethick0;

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/8/23 15:00:46    Post IP:180.169.30.6[只看该作者]

variable:kai=0;
MA1:=MA(CLOSE,N1);
手数:=ss;
MA2:REF(MA1,1);


KD:=HIGH>=MA2;
PD:=LOW<MA2;
KK:=LOW<=MA2;
PK:=HIGH>MA2;

 

   

     IF HOLDING=0 THEN BEGIN
        IF KK and kai=0  THEN BEGIN
           BUYSHORT(1,手数,LIMITR,MIN(OPEN,MA2));//开空
           kai:=1;
          
         
        END
     END


     IF HOLDING=0 and kai=0 THEN BEGIN
        IF KD THEN BEGIN
           BUY(1,手数,LIMITR,MAX(OPEN,MA2));//开多
          
           kai:=1;
          
        END
     END
 
 
     IF HOLDING>0 THEN BEGIN
        IF PD THEN BEGIN
           SELL(1,HOLDING,LIMITR,MIN(OPEN,MA2));//平多
           kai:=0;
        END
     END


      IF HOLDING<0 THEN BEGIN
         IF PK THEN  BEGIN
            SELLSHORT(1,HOLDING,LIMITR,MAX(OPEN,MA2));//平空
            kai:=0;
         END
      END  

 



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
scarecrow
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:17 积分:0 威望:0 精华:0 注册:2016/8/23 14:46:38
  发帖心情 Post By:2016/8/23 15:23:12    Post IP:121.10.254.2[只看该作者]

回测试了一下,一根k线多次开仓这个问题解决了,但是还有一个小问题没有处理。
就是开仓后,同一根k线也开仓后,不允许在同一根k线也平仓。
举个例子:向上突破了均线开了多仓,同一个k线偶然会出现又跌破空仓,所以希望在该k线未走完的时候,不允许平仓

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/8/23 15:46:55    Post IP:180.169.30.6[只看该作者]

两者不可兼得,这样写是做不到当根k线也能平仓


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
scarecrow
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:17 积分:0 威望:0 精华:0 注册:2016/8/23 14:46:38
  发帖心情 Post By:2016/8/23 16:04:25    Post IP:121.10.254.2[只看该作者]

有没有一个函数,可以记录开仓那根k线,这样就可以区别出开仓k线,如此一来就可以区分该k线不能平仓;
或者用全局变量能不能实现

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2016/8/23 16:08:37    Post IP:116.231.251.172[只看该作者]

variable:kai=0;
MA1:=MA(CLOSE,N1);
手数:=ss;
MA2:REF(MA1,1);


KD:=HIGH>=MA2;
PD:=LOW<MA2;
KK:=LOW<=MA2;
PK:=HIGH>MA2;

 

        IF HOLDING<0 THEN BEGIN
         IF PK THEN  BEGIN
            SELLSHORT(1,HOLDING,LIMITR,MAX(OPEN,MA2));//平空
          
         END
      END  

 


     IF HOLDING=0 and kai<>barpos THEN BEGIN
        IF KD THEN BEGIN
           BUY(1,手数,LIMITR,MAX(OPEN,MA2));//开多
          
           kai:=barpos;
          
        END
     END
 
 
     IF HOLDING>0 THEN BEGIN
        IF PD THEN BEGIN
           SELL(1,HOLDING,LIMITR,MIN(OPEN,MA2));//平多
          
        END
     END


       IF HOLDING=0 THEN BEGIN
        IF KK and kai<>barpos  THEN BEGIN
           BUYSHORT(1,手数,LIMITR,MIN(OPEN,MA2));//开空
           kai:=barpos;
          
         
        END
     END



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部