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

[复制链接]
查看445 | 回复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);
回复

使用道具 举报

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

本版积分规则

媒体报道
再次反包测试
心怡再次反包测试
1.今阴昨阳 做多出a平 今阳昨阴 做空出v平
反包测试
心怡反包测试
反包:今日K线H>昨日K线H 且今日K线L
如何抄在针尖上?
刘昱妗如何抄在针尖上?
如果有办法能让你抄在针尖上,你想不想学? 不需要复杂的指标,也不需要高深的技术,
交易模型测试库
宇晨交易模型测试库
目录 1.MACD日线 2.海6日线3.海龟S1日线 4.海龟S2日线
关于调delta的研究
刘昱妗关于调delta的研究
调备兑时间点 早晨9点,下午14:30,晚上21点 12.9 夜盘调delta 纸浆成交量为0 delta
文华各分区测试
宇晨文华各分区测试
////一楼////
test1
admintest1
test1
test1
admintest1
test1
相关课程推荐
再次反包测试
1.今阴昨阳 做多出a平 今阳昨阴 做空出v平
反包测试
反包:今日K线H>昨日K线H 且今日K线L
如何抄在针尖上?
如果有办法能让你抄在针尖上,你想不想学? 不需要复杂的指标,也不需要高深的技术,只要死磕这招盈亏比极

43

主题

235

帖子

799

积分

宽论高级会员

Rank: 4

积分
799
  • 官方论坛

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