请选择 进入手机版 | 继续访问电脑版

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

[复制链接]
查看117 | 回复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_REFKXIAN: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、如果突破了箱体的最高价
DYBPKXIAN_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));

DYBPKXIAN_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;

DYBPKXIAN_XG:IF((C>REF(L,N3) AND C>REF(H,N3)),DYBPKXIAN_1,DYBPKXIAN_2);
//6、如果突破了箱体的最低价
DYBPKXIAN_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));

DYBPKXIAN_XD:IF((C<REF(L,N3) AND C<REF(H,N3)),DYBPKXIAN_3,DYBPKXIAN_2);

DYBPKXIAN_XGORXD:=DYBPKXIAN_XG OR DYBPKXIAN_XD;

DYBP:=DYBP_REFKXIAN && DYBPKXIAN_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_REFKXIAN: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、如果突破了箱体的最高价
DYBPKXIAN_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));

DYBPKXIAN_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;

DYBPKXIAN_XG:IF((C>REF(L,N3) AND C>REF(H,N3)),DYBPKXIAN_1,DYBPKXIAN_2);
//6、如果突破了箱体的最低价
DYBPKXIAN_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));

DYBPKXIAN_XD:IF((C<REF(L,N3) AND C<REF(H,N3)),DYBPKXIAN_3,DYBPKXIAN_2);

DYBPKXIAN_XGORXD:=DYBPKXIAN_XG OR DYBPKXIAN_XD;

DYBP:=DYBP_REFKXIAN && DYBPKXIAN_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_REFKXIAN: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、如果突破了箱体的最高价
DYBPKXIAN_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));

DYBPKXIAN_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;

DYBPKXIAN_XG:IF((C>REF(L,N3) AND C>REF(H,N3)),DYBPKXIAN_1,DYBPKXIAN_2);
//6、如果突破了箱体的最低价
DYBPKXIAN_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));

DYBPKXIAN_XD:IF((C<REF(L,N3) AND C<REF(H,N3)),DYBPKXIAN_3,DYBPKXIAN_2);

DYBPKXIAN_XGORXD:=DYBPKXIAN_XG OR DYBPKXIAN_XD;

DYBP:=DYBP_REFKXIAN && DYBPKXIAN_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_REFKXIAN: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、如果突破了箱体的最高价
DYBPKXIAN_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));

DYBPKXIAN_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;

DYBPKXIAN_XG:IF((C>REF(L,N3) AND C>REF(H,N3)),DYBPKXIAN_1,DYBPKXIAN_2);
//6、如果突破了箱体的最低价
DYBPKXIAN_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));

DYBPKXIAN_XD:IF((C<REF(L,N3) AND C<REF(H,N3)),DYBPKXIAN_3,DYBPKXIAN_2);

DYBPKXIAN_XGORXD:=DYBPKXIAN_XG OR DYBPKXIAN_XD;

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

使用道具 举报

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

本版积分规则

相关课程推荐
桥博士《MACD指标详解》
为什么我们只用MACD金叉死叉来进行操作效果并不好,学习课程就能在研究MACD指标上少走很多弯路
桥博士《K线形态组合解析》
从理论到实战,让您全面掌握各种K线形态及各种组合,帮您分析梳理大量K线知识让您的投资更游刃有余
桥博士《股票入门基础知识》
从理论到实战,课程包括如何买卖股票、开户流程、交易软件、k线图知识、技术指标、价值投资等新手必备知识

37

主题

214

帖子

629

积分

高级会员

Rank: 4

积分
629
  • 官方论坛

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