单阳不破k线组合形态测试和代码版本汇总

[复制链接]
查看603 | 回复4 | 张孟珂 | 2020-4-7 14:06:18 | 显示全部楼层 |阅读模式
单阳不破版本一:

1) 定义单阳不破的具体形态
A. 形态条件1
文字描述:一根大阳线出现;
量化定义:大阳线k线影线长度>1*ATR;
(为什么用ATR:《ATR的正确使用方法-动态度量衡》)
B. 形态条件2
文字描述:大阳线后面k线的排列形态:所有k线的最低价都没有击穿该阳线的最低价,中间k线的收盘价处于前面大阳线的最低价、最高价之间
量化定义:REF(ISUP,3) && REF(L,3)<REF(L,(3-1)) && REF(L,3)<REF(L,(3-2)) && REF(L,3)<L && REF(H,3)>REF(H,(3-1)) && REF(H,3)>REF(H,(3-2)) && REF(H,3)>H;

2) 定义测试一的买卖逻辑:
A. 测试的买入条件:形成单阳不破形态,以收盘价买入;
B. 测试的卖出条件:买入后若收盘价突破第一根大k线的最高价或者最低价,以收盘价平仓;

回复

使用道具 举报

张孟珂 | 2020-4-7 14:11:44 | 显示全部楼层
测试一【单阳不破基础测试】
【测试逻辑】
A. 测试的买入条件:出现单阳不破形态,以收盘价买入;
B. 测试的卖出条件:买入后第二天,以收盘价卖出;


【测试代码】[N3=3]
//一、定义仓位
FUND:=10000000; //资金
LOTS:=INTPART(FUND*0.8/(C*MARGIN*UNIT+FEE));//计算开仓手数

//定义ATR指标
TR:MAX(MAX((H-L),ABS(REF(C,1)-HIGH)),ABS(REF(C,1)-L));//算出(当日最高-当日最低)、(当日最高-昨日收盘)的绝对值、(昨日收盘-当日最低)的绝对值,再求这3个值中的最大值
ATR:MA(TR,N);//求N个周期内的TR的简单移动平均
//定义单阳不破形态
//1、定义引线的长度:最高-最低;
DYBP_REFk线IAN:ABS(REF(H,N3)-REF(L,N3))>1*REF(ATR,N3);
//2、再定义一个变量:记录箱体的上下沿;
DYBP_SG:=REF(H,N3);
DYBP_XG:=REF(L,N3);
//3、接下来去判断下一根k线的最高、最低价是否在最高价、最低价之内,如果突破了,就把新的最高价、最低价记录下来;没有的话,就用原来的最高最低;
DYBP_XSG:=IF((L>REF(L,N3) AND H>REF(H,N3)),DYBP_SG,H);//突破上沿,则取箱体新上沿
DYBP_XXG:=IF((L<REF(L,N3) AND H<REF(H,N3)),DYBP_XG,L);//突破下沿,则取箱体新下沿
//4、记录k线数量,从最开始的k线到突破箱体之间的k线的数量;【先判断当日收盘价是否突破箱体,如果未突破,M 就取N3+1;M:IF((C>REF(L,N3) OR C<REF(H,N3)),N3+1,N3);】
M:IF((DYBP_XSG OR DYBP_XXG),N3+1,N3);
//5、如果突破了箱体的最高价
DYBPk线IAN_1:=REF(ISUP,M) && REF(L,M)<REF(C,(M-1)) && REF(L,M)<REF(C,(M-2)) && REF(L,M)<C
&& REF(H,M)>REF(H,(M-1)) && REF(H,M)>REF(H,(M-2)) && REF(H,M)>C && REF(DYBP_XSG,M)>REF(DYBP_XSG,(M-3)) && REF(L,M)<REF(C,(M-3));

DYBPk线IAN_2:=REF(ISUP,N3) && REF(L,N3)<REF(C,(N3-1)) && REF(L,N3)<REF(C,(N3-2)) && REF(L,N3)<C
&& REF(H,N3)>REF(H,(N3-1)) && REF(H,N3)>REF(H,(N3-2)) && REF(H,N3)>C;

DYBPk线IAN_XG:IF((C>REF(L,N3) AND C>REF(H,N3)),DYBPk线IAN_1,DYBPk线IAN_2);
//6、如果突破了箱体的最低价
DYBPk线IAN_3:=REF(ISUP,M) && REF(L,N3)<REF(C,(M-1)) && REF(L,M)<REF(C,(M-2)) && REF(L,M)<C
&& REF(H,M)>REF(H,(M-1)) && REF(H,M)>REF(H,(M-2)) && REF(H,M)>C && REF(H,M)>REF(H,(M-3)) && REF(DYBP_XXG,M)<REF(DYBP_XXG,(M-3));

DYBPk线IAN_XD:IF((C<REF(L,N3) AND C<REF(H,N3)),DYBPk线IAN_3,DYBPk线IAN_2);

DYBPk线IAN_XGORXD:=DYBPk线IAN_XG OR DYBPk线IAN_XD;

DYBP:=DYBP_REFk线IAN && DYBPk线IAN_XGORXD;//单阳不破形态
//执行交易
DYBP,BK(LOTS);//满足k线形态,开仓做多
//针对单阳不破:以收盘价突破箱体的上沿或下沿为平仓条件
C<REF(L,M) || C>REF(H,M),SP(BKVOL);


回复

使用道具 举报

张孟珂 | 2020-4-7 14:12:30 | 显示全部楼层
测试二【单阳不破改变k线数量测试】
【测试逻辑】
A. 测试的买入条件:出现单阳不破形态,以收盘价买入;
B. 测试的卖出条件:买入后第二天,以收盘价卖出;


【测试代码】[N3=6,k线数量为6]
//一、定义仓位
FUND:=10000000; //资金
LOTS:=INTPART(FUND*0.8/(C*MARGIN*UNIT+FEE));//计算开仓手数

//定义ATR指标
TR:MAX(MAX((H-L),ABS(REF(C,1)-HIGH)),ABS(REF(C,1)-L));//算出(当日最高-当日最低)、(当日最高-昨日收盘)的绝对值、(昨日收盘-当日最低)的绝对值,再求这3个值中的最大值
ATR:MA(TR,N);//求N个周期内的TR的简单移动平均
//定义单阳不破形态
//1、定义引线的长度:最高-最低;
DYBP_REFk线IAN:ABS(REF(H,N3)-REF(L,N3))>1*REF(ATR,N3);
//2、再定义一个变量:记录箱体的上下沿;
DYBP_SG:=REF(H,N3);
DYBP_XG:=REF(L,N3);
//3、接下来去判断下一根k线的最高、最低价是否在最高价、最低价之内,如果突破了,就把新的最高价、最低价记录下来;没有的话,就用原来的最高最低;
DYBP_XSG:=IF((L>REF(L,N3) AND H>REF(H,N3)),DYBP_SG,H);//突破上沿,则取箱体新上沿
DYBP_XXG:=IF((L<REF(L,N3) AND H<REF(H,N3)),DYBP_XG,L);//突破下沿,则取箱体新下沿
//4、记录k线数量,从最开始的k线到突破箱体之间的k线的数量;【先判断当日收盘价是否突破箱体,如果未突破,M 就取N3+1;M:IF((C>REF(L,N3) OR C<REF(H,N3)),N3+1,N3);】
M:IF((DYBP_XSG OR DYBP_XXG),N3+1,N3);
//5、如果突破了箱体的最高价
DYBPk线IAN_1:=REF(ISUP,M) && REF(L,M)<REF(C,(M-1)) && REF(L,M)<REF(C,(M-2)) && REF(L,M)<C
&& REF(H,M)>REF(H,(M-1)) && REF(H,M)>REF(H,(M-2)) && REF(H,M)>C && REF(DYBP_XSG,M)>REF(DYBP_XSG,(M-3)) && REF(L,M)<REF(C,(M-3));

DYBPk线IAN_2:=REF(ISUP,N3) && REF(L,N3)<REF(C,(N3-1)) && REF(L,N3)<REF(C,(N3-2)) && REF(L,N3)<C
&& REF(H,N3)>REF(H,(N3-1)) && REF(H,N3)>REF(H,(N3-2)) && REF(H,N3)>C;

DYBPk线IAN_XG:IF((C>REF(L,N3) AND C>REF(H,N3)),DYBPk线IAN_1,DYBPk线IAN_2);
//6、如果突破了箱体的最低价
DYBPk线IAN_3:=REF(ISUP,M) && REF(L,N3)<REF(C,(M-1)) && REF(L,M)<REF(C,(M-2)) && REF(L,M)<C
&& REF(H,M)>REF(H,(M-1)) && REF(H,M)>REF(H,(M-2)) && REF(H,M)>C && REF(H,M)>REF(H,(M-3)) && REF(DYBP_XXG,M)<REF(DYBP_XXG,(M-3));

DYBPk线IAN_XD:IF((C<REF(L,N3) AND C<REF(H,N3)),DYBPk线IAN_3,DYBPk线IAN_2);

DYBPk线IAN_XGORXD:=DYBPk线IAN_XG OR DYBPk线IAN_XD;

DYBP:=DYBP_REFk线IAN && DYBPk线IAN_XGORXD;//单阳不破形态
DYBP,BK(LOTS);//满足k线形态,开仓做多
//针对单阳不破:以收盘价突破箱体的上沿或下沿为平仓条件
C<REF(L,M) || C>REF(H,M),SP(BKVOL);

回复

使用道具 举报

张孟珂 | 2020-4-7 14:24:31 | 显示全部楼层
测试三【单阳不破改变持仓周期测试】
【测试逻辑】
A. 测试的买入条件:出现单阳不破形态,以收盘价买入;
B. 测试的卖出条件:
突破进场k线高点、低点平仓,以收盘价平仓

【测试代码】[N3=3]
//一、定义仓位
FUND:=10000000; //资金
LOTS:=INTPART(FUND*0.8/(C*MARGIN*UNIT+FEE));//计算开仓手数

//定义ATR指标
TR:MAX(MAX((H-L),ABS(REF(C,1)-HIGH)),ABS(REF(C,1)-L));//算出(当日最高-当日最低)、(当日最高-昨日收盘)的绝对值、(昨日收盘-当日最低)的绝对值,再求这3个值中的最大值
ATR:MA(TR,N);//求N个周期内的TR的简单移动平均
//定义单阳不破形态
//1、定义引线的长度:最高-最低;
DYBP_REFk线IAN:ABS(REF(H,N3)-REF(L,N3))>1*REF(ATR,N3);
//2、再定义一个变量:记录箱体的上下沿;
DYBP_SG:=REF(H,N3);
DYBP_XG:=REF(L,N3);
//3、接下来去判断下一根k线的最高、最低价是否在最高价、最低价之内,如果突破了,就把新的最高价、最低价记录下来;没有的话,就用原来的最高最低;
DYBP_XSG:=IF((L>REF(L,N3) AND H>REF(H,N3)),DYBP_SG,H);//突破上沿,则取箱体新上沿
DYBP_XXG:=IF((L<REF(L,N3) AND H<REF(H,N3)),DYBP_XG,L);//突破下沿,则取箱体新下沿
//4、记录k线数量,从最开始的k线到突破箱体之间的k线的数量;【先判断当日收盘价是否突破箱体,如果未突破,M 就取N3+1;M:IF((C>REF(L,N3) OR C<REF(H,N3)),N3+1,N3);】
M:IF((DYBP_XSG OR DYBP_XXG),N3+1,N3);
//5、如果突破了箱体的最高价
DYBPk线IAN_1:=REF(ISUP,M) && REF(L,M)<REF(C,(M-1)) && REF(L,M)<REF(C,(M-2)) && REF(L,M)<C
&& REF(H,M)>REF(H,(M-1)) && REF(H,M)>REF(H,(M-2)) && REF(H,M)>C && REF(DYBP_XSG,M)>REF(DYBP_XSG,(M-3)) && REF(L,M)<REF(C,(M-3));

DYBPk线IAN_2:=REF(ISUP,N3) && REF(L,N3)<REF(C,(N3-1)) && REF(L,N3)<REF(C,(N3-2)) && REF(L,N3)<C
&& REF(H,N3)>REF(H,(N3-1)) && REF(H,N3)>REF(H,(N3-2)) && REF(H,N3)>C;

DYBPk线IAN_XG:IF((C>REF(L,N3) AND C>REF(H,N3)),DYBPk线IAN_1,DYBPk线IAN_2);
//6、如果突破了箱体的最低价
DYBPk线IAN_3:=REF(ISUP,M) && REF(L,N3)<REF(C,(M-1)) && REF(L,M)<REF(C,(M-2)) && REF(L,M)<C
&& REF(H,M)>REF(H,(M-1)) && REF(H,M)>REF(H,(M-2)) && REF(H,M)>C && REF(H,M)>REF(H,(M-3)) && REF(DYBP_XXG,M)<REF(DYBP_XXG,(M-3));

DYBPk线IAN_XD:IF((C<REF(L,N3) AND C<REF(H,N3)),DYBPk线IAN_3,DYBPk线IAN_2);

DYBPk线IAN_XGORXD:=DYBPk线IAN_XG OR DYBPk线IAN_XD;

DYBP:=DYBP_REFk线IAN && DYBPk线IAN_XGORXD;//单阳不破形态
DYBP,BK(LOTS);//满足k线形态,开仓做多
C>REF(H,BARSBK) OR C<REF(L,BARSBK),SP(BKVOL);//突破突破进场k线高点,低点平仓
回复

使用道具 举报

张孟珂 | 2020-4-7 14:29:11 | 显示全部楼层
测试四【单阳不破+RSI指标组合测试】
【测试逻辑】
A. 测试的买入条件:出现单阳不破形态,同时RSI指标大于70或者RSI指标小于30,以收盘价买入;
B. 测试的卖出条件:买入后第二天,以收盘价卖出;


【测试代码】[N3=3]
//一、定义仓位
FUND:=10000000; //资金
LOTS:=INTPART(FUND*0.8/(C*MARGIN*UNIT+FEE));//计算开仓手数

//定义ATR指标
TR:MAX(MAX((H-L),ABS(REF(C,1)-HIGH)),ABS(REF(C,1)-L));//算出(当日最高-当日最低)、(当日最高-昨日收盘)的绝对值、(昨日收盘-当日最低)的绝对值,再求这3个值中的最大值
ATR:MA(TR,N);//求N个周期内的TR的简单移动平均
//定义单阳不破形态
//1、定义引线的长度:最高-最低;
DYBP_REFk线IAN:ABS(REF(H,N3)-REF(L,N3))>1*REF(ATR,N3);
//2、再定义一个变量:记录箱体的上下沿;
DYBP_SG:=REF(H,N3);
DYBP_XG:=REF(L,N3);
//3、接下来去判断下一根k线的最高、最低价是否在最高价、最低价之内,如果突破了,就把新的最高价、最低价记录下来;没有的话,就用原来的最高最低;
DYBP_XSG:=IF((L>REF(L,N3) AND H>REF(H,N3)),DYBP_SG,H);//突破上沿,则取箱体新上沿
DYBP_XXG:=IF((L<REF(L,N3) AND H<REF(H,N3)),DYBP_XG,L);//突破下沿,则取箱体新下沿
//4、记录k线数量,从最开始的k线到突破箱体之间的k线的数量;【先判断当日收盘价是否突破箱体,如果未突破,M 就取N3+1;M:IF((C>REF(L,N3) OR C<REF(H,N3)),N3+1,N3);】
M:IF((DYBP_XSG OR DYBP_XXG),N3+1,N3);
//5、如果突破了箱体的最高价
DYBPk线IAN_1:=REF(ISUP,M) && REF(L,M)<REF(C,(M-1)) && REF(L,M)<REF(C,(M-2)) && REF(L,M)<C
&& REF(H,M)>REF(H,(M-1)) && REF(H,M)>REF(H,(M-2)) && REF(H,M)>C && REF(DYBP_XSG,M)>REF(DYBP_XSG,(M-3)) && REF(L,M)<REF(C,(M-3));

DYBPk线IAN_2:=REF(ISUP,N3) && REF(L,N3)<REF(C,(N3-1)) && REF(L,N3)<REF(C,(N3-2)) && REF(L,N3)<C
&& REF(H,N3)>REF(H,(N3-1)) && REF(H,N3)>REF(H,(N3-2)) && REF(H,N3)>C;

DYBPk线IAN_XG:IF((C>REF(L,N3) AND C>REF(H,N3)),DYBPk线IAN_1,DYBPk线IAN_2);
//6、如果突破了箱体的最低价
DYBPk线IAN_3:=REF(ISUP,M) && REF(L,N3)<REF(C,(M-1)) && REF(L,M)<REF(C,(M-2)) && REF(L,M)<C
&& REF(H,M)>REF(H,(M-1)) && REF(H,M)>REF(H,(M-2)) && REF(H,M)>C && REF(H,M)>REF(H,(M-3)) && REF(DYBP_XXG,M)<REF(DYBP_XXG,(M-3));

DYBPk线IAN_XD:IF((C<REF(L,N3) AND C<REF(H,N3)),DYBPk线IAN_3,DYBPk线IAN_2);

DYBPk线IAN_XGORXD:=DYBPk线IAN_XG OR DYBPk线IAN_XD;

DYBP:=DYBP_REFk线IAN && DYBPk线IAN_XGORXD;//单阳不破形态
DYBP && (RSI>70||RSI<30),BK(LOTS);//形态+RSI指标,开仓做多
//针对单阳不破:以收盘价突破箱体的上沿或下沿为平仓条件
C<REF(L,M) || C>REF(H,M),SP(BKVOL);
回复

使用道具 举报

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

本版积分规则

媒体报道
MGCA小组——记录一下,一起并肩作战的岁月
桥博士MGCA小组——记录一下,一起并肩作战的岁月
2024年暑假开始,到2026年寒假,才开始收尾,团队工作逐渐减少,短期内也不再扩招论文
智能量化交易策略的研究_郑泽涛-博士论文-电子科技大
桥博士智能量化交易策略的研究_郑泽涛-博士论文-电子科技大
投资组合管理(Portfolio Management,PM)是指通过投资策略、投资组合来有效管理大规模
72小时量化入门理论篇
刘昱妗72小时量化入门理论篇
72小时量化入门理论篇
世界上最赚钱的对冲基金是怎么炼成的?
admin世界上最赚钱的对冲基金是怎么炼成的?
如果问你,世界上最赚钱的对冲基金是谁?你可能会想到: 但答案可能出乎意料,是城堡
72小时量化入门实战篇
刘昱妗72小时量化入门实战篇
72小时量化入门实战篇
2026GAN论文
桥博士2026GAN论文
被引用最多的GAN论文 毫无疑问,头把交椅属于 Goodfellow 因为真是久仰大名如雷贯耳
大论文配图
刘昱妗大论文配图
大论文所有配图
论文撰写/整合智能体
刘昱妗论文撰写/整合智能体
相关课程推荐
K线形态组合解析
k线图基础知识怎么学? 报名宽论VA鱼识别课
没有人可以做万能交易者,但通过不断学习吸收知识从而有一套属于自己交易系统的人,就是走向了盈利的大道。
90%的时间在研究大盘指数,9.9元学习宽论VA
一买就跌,一卖就涨? 股市七亏二平一赚,怎样才能成为赚钱的10%? 看准大盘胜算过半,炒股新手也能掌握的V

43

主题

192

回帖

799

积分

宽论高级会员

积分
799
  • 官方论坛

    提供最新 Discuz! 产品新闻、软件下载与技术交流