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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件交易策略发布专区 → 【趋势策略】增强版唐奇安通道

   

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


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

主题:【趋势策略】增强版唐奇安通道

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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
【趋势策略】增强版唐奇安通道  发帖心情 Post By:2020/4/24 13:32:30 [显示全部帖子]

         原始的唐奇安通道(DONCHIANCHANNEL)规则其实很简单,它先设置一条阻力线和一条支撑线,阻力线由过去N天的最高价的最大值形成;支撑线由过去N天的最低价的最小值形成。但时过境迁,现在的市场环境已经发生了很大的变化,这导致唐奇安通道策略变得低效,我们在支撑线和阻力线分别增加一个系数,并设置一条平仓使用的中轨线,这样避免与大多数策略参数一致,造成的同质化现象,导致策略低效。另外我们知道,国内的期货市场总是涨的时候涨的缓,跌的时候跌的急,那么可以对支撑线和阻力线设置不同的系数,让策略更合理的适应当前市场环境。
       

         一、增强版唐奇安通道策略交易思路

               1、唐奇安上轨:由过去N天的最高价的最大值*上涨系数
            2、唐奇安下轨:由过去N天的最低价的最小值*下跌系数
            3、唐奇安中轨:(唐奇安上轨 + 唐奇安下轨) / 2
            4、开多条件:如果当前无持仓,并且价格突破唐奇安上轨
            5、开空条件:如果当前无持仓,并且价格跌破唐奇安下轨
            6、平多条件:如果当前持多单,并且价格跌破唐奇安中轨
            7、平空条件:如果当前持空单,并且价格突破唐奇安中轨

 

         二、金字塔策略源码

 

            //该策略适用于图表程序化交易

            //该范例适用于5分钟周期

            //此策略仅供参考学习,请勿直接用于实盘

 

            INPUT:N(55,1,100,1),SS(1,1,100,1),NMIN(10,1,100,1),LONG_CO(0.999,0.001,1.1,0.001),SHORT_CO(1.001,0.001,1.1,0.001);

 

            BUYTIME:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;      //设置日内交易的开仓时段           

            SELLTIME:=TIME>=CLOSETIME(0)-NMIN*100;                                        //设置尾盘的清仓时段      

            UP_LINE:REF(HHV(H,N),1)*LONG_CO;                                                    //设置上轨线
            DOWN_LINE:REF(LLV(L,N),1)*SHORT_CO;                                              //设置下轨线
            MIDDLE_LINE:(UP_LINE+DOWN_LINE)/2;                                               //设置中轨线

            CONKD:H>=UP_LINE AND BUYTIME ;                                                     //设置开多条件
            CONKK:L<=DOWN_LINE AND BUYTIME;                                                 //设置开空条件
            CONPD:C<MIDDLE_LINE;                                                                      //设置平多条件
            CONPK:C>MIDDLE_LINE;                                                                      //设置平空条件

 

            SELLSHORT(CONPK AND HOLDING<0,HOLDING,MARKET);
            SELL(CONPD AND HOLDING>0,HOLDING,MARKET);
            BUY(CONKD AND HOLDING=0,SS,MARKET);
            BUYSHORT(CONKK AND HOLDING=0,SS,MARKET);

 

            IF SELLTIME THEN                                                                               //收盘前全部平仓
                BEGIN
                SELL(HOLDING>0,HOLDING,MARKET);
                SELLSHORT(HOLDING<0,HOLDING,MARKET);
                END

[此贴子已经被作者于2020/4/24 16:07:50编辑过]

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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2020/4/24 16:07:30 [显示全部帖子]

该范例是以5分钟周期举例的,供用户参考学习唐奇安通道的指标编写。若你有指标编写的疑问,需要描述下你具体的需求。


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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2020/4/24 17:13:27 [显示全部帖子]

那直接把日内交易的限制去除就可以了。股票还是需要考虑到可用持仓的问题,举例如下:

INPUT:N(55,1,100,1),SS(1,1,100,1),NMIN(10,1,100,1),LONG_CO(0.999,0.001,1.1,0.001),SHORT_CO(1.001,0.001,1.1,0.001);

 

UP_LINE:REF(HHV(H,N),1)*LONG_CO;                                                 
DOWN_LINE:REF(LLV(L,N),1)*SHORT_CO;                                            
MIDDLE_LINE:(UP_LINE+DOWN_LINE)/2;                                              

CONKD:H>=UP_LINE ;                                                    
CONPD:C<MIDDLE_LINE;    

                                                           

可用持仓:HOLDING-DAYHOLDING;                                                               
SELL(CONPD AND 可用持仓>0,HOLDING,MARKET);
BUY(CONKD,SS,MARKET);


 


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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2020/4/26 9:35:34 [显示全部帖子]

避免连续开仓的话,在开仓条件中加入holding=0的限制。

INPUT:N(55,1,100,1),SS(1,1,100,1),NMIN(10,1,100,1),LONG_CO(0.999,0.001,1.1,0.001),SHORT_CO(1.001,0.001,1.1,0.001);

UP_LINE:REF(HHV(H,N),1)*LONG_CO;                                                 
DOWN_LINE:REF(LLV(L,N),1)*SHORT_CO;                                            
MIDDLE_LINE:(UP_LINE+DOWN_LINE)/2;                                              

CONKD:H>=UP_LINE ;                                                    
CONPD:C<MIDDLE_LINE;   

                                                           

可用持仓:HOLDING-DAYHOLDING;                                                               
SELL(CONPD AND 可用持仓>0,HOLDING,MARKET);
BUY(CONKD and HOLDING=0,SS,MARKET);


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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2020/4/26 14:37:49 [显示全部帖子]

SS就是定义的下单手数啊,不知道你说的蓝色竖线是什么,可以截图看下。另外在股票品种上使用,触发了平仓信号后,有可能当天无可用持仓,会导致平仓失败。

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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2020/4/26 16:43:28 [显示全部帖子]

1、蓝色的竖线是策略中的指标可用持仓的指标线,如果不要这根线,就把这个指标后面加上NODRAW函数,例如:可用持仓:HOLDING-DAYHOLDING,NODRAW  

2、你修改后的程序把这个指标去掉了,所以没有蓝色竖线了啊。你修改后的策略逻辑上没有问题。只是你平仓条件中,用了holding>0的条件,表示的是全部持仓,不是可用持仓,股票当天开的仓是平不掉的。用在期货品种上就没有问题。

[此贴子已经被作者于2020/4/26 16:44:24编辑过]

 回到顶部