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

20200421-交易系统增加模块-锤头线

[复制链接]
查看134 | 回复8 | 桥博士 | 2020-4-21 19:52:39 | 显示全部楼层 |阅读模式
20200421
今天上证指数出现了垂头线k线形态,
同学们要通过自学去了解这种k线形态,
并且把对应的模块添加到自己的交易系统中去。

今天的作业,主要考验大家的两种能力。
一、按图索骥查字典的能力
要能够在我们的社区里找到你想要的资料,
比如今天的作业:
1、就要首先到课件板块去找到我们之前上课讲过的交易模型的代码;
2、到论坛中找到垂头线的测试贴,了解它是用于加仓还是减仓?
3、到论坛中找到垂头线的代码贴,找到专门为咱们训练营同学准备的那一段代码

二、照虎画猫搭积木的能力
找到代码后要添加到自己的软件中去,
比如今天的作业:
1、代码中有一些重复的部分,要去除;
2、新增加的k线形态,形态对应的交易指令如何设计?


回复

使用道具 举报

桥博士 | 2020-4-21 19:54:18 | 显示全部楼层
大家可以在下面跟帖

如果模块添加成功以后,加载到k线图上,今天会有信号出现的,

大家可以那截图代码,发上来。

不会的同学也不用着急,日后我在课程中会讲的,今天多和其他同学学习,
回复

使用道具 举报

Mr.程 | 2020-4-21 22:21:46 | 显示全部楼层
//锤头线买入+次日卖出
LOTS:=INTPART(8000000/(C*MARGIN*UNIT+FEE));//计算手数,使每次开仓金额都是800W
TR:=MAX(MAX((H-L),ABS(REF(C,1)-HIGH)),ABS(REF(C,1)-L));//求最高价减去最低价,一个周期前的收盘价减去最高价的绝对值,一个周期前的收盘价减去最低价的绝对值,这三个值中的最大值
ATR:=MA(TR,26);//求N个周期内的TR的简单移动平均
SYXCD:=H-MAX(O,C);//定义上影线长度
XYXCD:=MIN(O,C)-L;//定义下影线长度
KXST:=ABS(O-C);//定义K线实体
WSYX:=SYXCD=0;//定义无上影线
CXYX:=XYXCD>ATR*0.5;//定义长下影线
CXD:=L=LLV(L,10);//创前10日新低
//CTX:=CXD AND CXYX AND WSYX AND XYXCD>=2*KXST;//创前10日新低 AND有长下影线 AND 无上影线AND 下影线>=2倍K线实体
CTX:=CXD AND CXYX AND 2*SYXCD<=XYXCD AND XYXCD>=2*KXST;//创前10日新低 AND 长下影线 AND 2*上影线<=下影线 AND 下影线>=2*K线实体
//进仓信号
CTX,BK(LOTS);//满足锤头线形态时,当天收盘价进仓
//平仓信号
BARSBK>=DAYBARPOS,SP(BKVOL);//一天后平仓
=================================================
//锤头线买入+突破锤头线最高或者最低点卖出
LOTS:=INTPART(8000000/(C*MARGIN*UNIT+FEE));//计算手数,使每次开仓金额都是800W
TR:=MAX(MAX((H-L),ABS(REF(C,1)-HIGH)),ABS(REF(C,1)-L));//求最高价减去最低价,一个周期前的收盘价减去最高价的绝对值,一个周期前的收盘价减去最低价的绝对值,这三个值中的最大值
ATR:=MA(TR,26);//求N个周期内的TR的简单移动平均
SYXCD:=H-MAX(O,C);//定义上影线长度
XYXCD:=MIN(O,C)-L;//定义下影线长度
KXST:=ABS(O-C);//定义K线实体
WSYX:=SYXCD=0;//定义无上影线
CXYX:=XYXCD>ATR*0.5;//定义长下影线
CXD:=L=LLV(L,10);//创前10日新低
//CTX:=CXD AND CXYX AND WSYX AND XYXCD>=2*KXST;//创前10日新低 AND有长下影线 AND 无上影线AND 下影线>=2倍K线实体
CTX:=CXD AND CXYX AND 2*SYXCD<=XYXCD AND XYXCD>=2*KXST;//创前10日新低 AND 长下影线 AND 2*上影线<=下影线 AND 下影线>=2*K线实体
//进仓信号
CTX,BK(LOTS);//满足锤头线形态时,当天收盘价进仓
//平仓信号
C>REF(H,BARSBK)||C<REF(L,BARSBK),SP(BKVOL);//之后收盘价>出现买开信号之日的最高价 或者 之后收盘价<出现买开信号之日的最低价
===========================
先搬运一下,还没写完的作业研究好后待补充

回复

使用道具 举报

桥博士 | 2020-4-21 23:07:01 | 显示全部楼层
代码没找对!
----

3、到论坛中找到垂头线的代码贴,找到专门为咱们训练营同学准备的那一段代码
回复

使用道具 举报

杨文武 | 2020-4-21 23:18:36 | 显示全部楼层
锤头线&MACD金叉状态买入+MACD死叉卖出

【测试目标】
尝试将锤头线K线形态与MACD结合,通过MACD来判断大趋势,用锤头线形态作为交易信号。

【测试结论】
策略整体盈利率相较单一的锤头线形态提高了99.73%,盈亏比也大幅提升1.82,说明K线形态和技术指标的结合有效。

锤头线 MACD600000.PNG
【测试步骤】
1.首先定义锤头线的具体形态;
2.创建一个简易的交易策略;
3.在文华软件中测试策略,并得出测试结果;

【测试细节】
1.首先定义锤头线的具体形态:
a.在下跌过程中出现(为了方便测试,我们定义为价格连续创十天新低)
b.出现长下影线(我们定义为下影线长度>0.5倍*收盘价过去26天的ATR)
c.下影线大于等于上影线的2倍
d.下影线大于或等于实体的2倍

2.创建一个简易的交易策略:
买入信号:MACD的DIFF在DEA线之上,同时当前K线向前数10根是锤头线时,买入
卖出信号:MACD出现死叉时,卖出



【测试代码】
LOTS:=INTPART(8000000/(C*MARGIN*UNIT+FEE));//计算手数,使每次开仓金额都是800W
//MACD
DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA:EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线
MACD1:CROSSUP(DIFF,DEA);//MACD出现金叉
MACD2:CROSSDOWN(DIFF,DEA);//MACD出现死叉
MACD3: DIFF>DEA;//MACD的DIFF线在DEA线之上
//半十字星
TR:=MAX(MAX((H-L),ABS(REF(C,1)-HIGH)),ABS(REF(C,1)-L));//求最高价减去最低价,一个周期前的收盘价减去最高价的绝对值,一个周期前的收盘价减去最低价的绝对值,这三个值中的最大值
ATR:=MA(TR,26);//求N个周期内的TR的简单移动平均
SYXCD:=H-MAX(O,C);//定义上影线长度
XYXCD:=MIN(O,C)-L;//定义下影线长度
KXST:=ABS(O-C);//定义K线实体
WSYX:=SYXCD=0;//定义无上影线
CXYX:=XYXCD>ATR*0.5;//定义长下影线
CXD:=L=LLV(L,10);//创前10日新低
//CTX:=CXD AND CXYX AND WSYX AND XYXCD>=2*KXST;//创前10日新低 AND有长下影线 AND 无上影线AND 下影线>=2倍K线实体
CTX:=CXD AND CXYX AND 2*SYXCD<=XYXCD AND XYXCD>=2*KXST;//创前10日新低 AND 长下影线 AND 2*上影线<=下影线 AND 下影线>=2*K线实体

//进仓信号

MACD3 AND REF(CTX,N),BK(LOTS);//MACD的DIFF在DEA线之上,同时当前K线过去的第N=10根是锤头线时,进多仓

//平仓信号
MACD2,SP(BKVOL);//MACD出现死叉时,平仓


回复

使用道具 举报

春江 | 2020-4-21 23:50:16 | 显示全部楼层
训练营锤头线代码,在文化软件测试,胜率盈亏为0.408。wjg
但看到老师的其他关于锤头线的帖子,都是亏损的,所以还是按早晨之星那样写交易代码。把锤头线代码加上去,胜率盈亏指标:加上锤头线后由0.8429变小为0.7086,好在交易次数增加了60次,盈利就增加了420万。


TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真实波幅
ATR:=MA(TR,26); //求26个周期内真实波幅的简单移动平均
TC:=INTPART((MONEYTOT*0.01/(UNIT*ATR)));//根据权益的1%计算下单手数
MTC:=4*TC; //总的持仓头寸
HH:=HV(H,20);
LL:=LV(L,20);
CROSSUP(C,HH)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,BK(TC);//最新价超过20周期的最高值,首次买入开仓,手数为TC手
CROSSDOWN(C,LL)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,SK(TC); //最新价跌破20周期的最低值,首次卖出开仓,手数为TC手
C>=BKPRICE+0.5*ATR&&BKVOL<MTC&&ISLASTBK,BK(TC);//价格在上次开仓的基础上上涨0.5倍ATR,在手数不超过4倍TC的时候,买入加仓TC手
C<=SKPRICE-0.5*ATR&&SKVOL<MTC&&ISLASTSK,SK(TC);//价格在上次开仓的基础上下跌0.5倍ATR,在手数不超过4倍TC的时候,卖出加仓TC手
C<=(BKPRICE-2*ATR)&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去2倍的ATR,止损平仓
C>=(SKPRICE+2*ATR)&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上2倍的ATR,止损平仓
CROSSUP(H,HV(H,10))&&SKVOL>0,BP(SKVOL);//最高价上穿10周期最高价,平仓
CROSSDOWN(L,LV(L,10))&&BKVOL>0,SP(BKVOL); //最低价下穿10周期的最低价,平仓
TRADE_AGAIN(10);

//定义常规K线
KXST:=ABS(O-C);
SYXCD:=H-MAX(O,C);//上影线长度
XYXCD:=MIN(O, C)-L;//下影线长度
YXCD:=H-L;//影线长度
BT:=KXST>YXCD*0.5;//棒体

//定义十字星
SZXST:=KXST<ATR*0.1;//十字星的实体
SZX:=SZXST AND SYXCD>0 AND XYXCD>0;//十字星定义

//早晨之星
//第三天的上涨棒体
ZCZX1:=BT AND YXCD>0.5*ATR AND C=HHV(C,3) AND H>=HHV(H,2);
//第二天的十字星
ZCZX2:=REF(SZX,1) AND REF(L,1)=LLV(L,3) AND REF(H,1)<REF(H,2) ;//早晨之星第二根是星线,最低价为形态最低价
//第一天的下跌棒体
ZCZX3:=REF(BT,2) AND REF(C,2)<REF(C,3) AND REF(YXCD,2)>0.5*ATR;
//定义早晨之星
ZCZX:=ZCZX1 AND ZCZX2 AND ZCZX3;
ZCZX AND BKVOL>0,SP(TC);//出现早晨之星减仓一手
REF(ZCZX,1) AND REF(BKVOL,2)>0,BK(TC);//1日后买回补回一手

//黄昏之星
//第三天的下跌棒体
HHZX1:=BT AND YXCD>0.5*ATR AND C<=LV(L,1);
//第二天的十字星
HHZX2:=REF(SZX,1) AND REF(H,1)=HHV(H,3) AND REF(L,1)>REF(L,2);
//第一天的上涨棒体
HHZX3:=REF(BT,2) AND REF(C,2)>REF(C,3) AND REF(YXCD,2)>0.5*ATR;
//定义黄昏之星
HHZX:=HHZX1 AND HHZX2 AND HHZX3 ;
HHZX AND BKVOL=0, BK(TC);//出现黄昏之星买入
REF(HHZX,1) AND REF(BKVOL,2)=0,SP(BKVOL);//1日后,卖出

//锤头线
//实体
ST:=ABS(O-C);//倒锤头K线实体
//上影线
SYX:=H-MAX(O,C);//倒锤头K线上影线
//下影线
XYX:=MIN(O,C)-L;//倒锤头K线下影线
//定义锤头线
CTX:=SYX*5<XYX && XYX>ST ;//
CTX AND BKVOL>0,SP(TC);//出现早晨之星减仓一手
REF(CTX,1) AND REF(BKVOL,2)>0,BK(TC);//1日后买回补回一手

回复

使用道具 举报

也无风雨也无晴 | 2020-4-22 16:09:11 | 显示全部楼层
                            锤头线+海龟交易系统

    按照老师在第九节的方法,组合起来。我显然是弄错了。只有锤头线的开仓信号,没有有平仓信号。其他数据也不太敢相信。
      
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真实波幅
ATR:=MA(TR,26); //求26个周期内真实波幅的简单移动平均
TC..INTPART((MONEYTOT*0.01/(UNIT*ATR)));//根据权益的1%计算下单手数
MTC..4*TC; //总的持仓头寸
HH:=HV(H,20);
LL:=LV(L,20);
CROSSUP(C,HH)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,BK(TC);//最新价超过20周期的最高值,首次买入开仓,手数为TC手
CROSSDOWN(C,LL)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,SK(TC); //最新价跌破20周期的最低值,首次卖出开仓,手数为TC手
C>=BKPRICE+0.5*ATR&&BKVOL<MTC&&ISLASTBK,BK(TC);//价格在上次开仓的基础上上涨0.5倍ATR,在手数不超过4倍TC的时候,买入加仓TC手
C<=SKPRICE-0.5*ATR&&SKVOL<MTC&&ISLASTSK,SK(TC);//价格在上次开仓的基础上下跌0.5倍ATR,在手数不超过4倍TC的时候,卖出加仓TC手
C<=(BKPRICE-2*ATR)&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去2倍的ATR,止损平仓
C>=(SKPRICE+2*ATR)&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上2倍的ATR,止损平仓
CROSSUP(H,HV(H,10))&&SKVOL>0,BP(SKVOL);//最高价上穿10周期最高价,平仓
CROSSDOWN(L,LV(L,10))&&BKVOL>0,SP(BKVOL); //最低价下穿10周期的最低价,平仓
TRADE_AGAIN(10);



SYXCD:=H-MAX(O,C);//定义上影线长度
XYXCD:=MIN(O,C)-L;//定义下影线长度
KXST:=ABS(O-C);//定义K线实体
WSYX:=SYXCD=0;//定义无上影线
CXYX:=XYXCD>ATR*0.5;//定义长下影线
CXD:=L=LLV(L,10);//创前10日新低
//CTX:=CXD AND CXYX AND WSYX AND XYXCD>=2*KXST;//创前10日新低 AND有长下影线 AND 无上影线AND 下影线>=2倍K线实体
CTX:=CXD AND CXYX AND 2*SYXCD<=XYXCD AND XYXCD>=2*KXST;//创前10日新低 AND 长下影线 AND 2*上影线<=下影线 AND 下影线>=2*K线实体

//平仓信号
CTX AND BKVOL>0,SP(TC);出现锤头线平仓tc

//补仓信号
REF(CTX,1) AND REF(BKVOL,2)>0, BK(TC);一日后补回tc
回复

使用道具 举报

西瓜 | 2020-4-22 17:57:14 | 显示全部楼层
第一次学编程,云里雾里,看这个收益高就做这个,就先交作业吧!

//ATR
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真实波幅
ATR:=MA(TR,26); //求26个周期内真实波幅的简单移动平均

//头寸
TC:=INTPART((MONEYTOT*0.01/(UNIT*ATR)));//根据权益的1%计算下单手数
MTC:=4*TC; //总的持仓头寸

//20周期的新高新低
HH:=HV(H,20);
LL:=LV(L,20);

//海龟交易
CROSSUP(C,HH)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,BK(TC);//最新价超过20周期的最高值,首次买入开仓,手数为TC手
CROSSDOWN(C,LL)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,SK(TC); //最新价跌破20周期的最低值,首次卖出开仓,手数为TC手
C>=BKPRICE+0.5*ATR&&BKVOL<MTC&&ISLASTBK,BK(TC);//价格在上次开仓的基础上上涨0.5倍ATR,在手数不超过4倍TC的时候,买入加仓TC手
C<=SKPRICE-0.5*ATR&&SKVOL<MTC&&ISLASTSK,SK(TC);//价格在上次开仓的基础上下跌0.5倍ATR,在手数不超过4倍TC的时候,卖出加仓TC手
C<=(BKPRICE-2*ATR)&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去2倍的ATR,止损平仓
C>=(SKPRICE+2*ATR)&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上2倍的ATR,止损平仓
CROSSUP(H,HV(H,10))&&SKVOL>0,BP(SKVOL);//最高价上穿10周期最高价,平仓
CROSSDOWN(L,LV(L,10))&&BKVOL>0,SP(BKVOL); //最低价下穿10周期的最低价,平仓

TRADE_AGAIN(10);


//K线组合形态模块
//常规K线形态
STCD:=ABS(O-C);
SYXCD:=H-MAX(O,C);//上影线长度
XYXCD:=MIN(O, C)-L;//下影线长度
YXCD:=H-L;//影线长度
BT:=STCD>YXCD*0.5;//棒体
XX:=STCD<YXCD*0.5;//星线

//十字星
SZXST:=STCD<ATR*0.1;//十字星的实体
SZX:=SZXST AND SYXCD>0 AND XYXCD>0;//十字星定义

//早晨之星
//第三天的上涨棒体
ZCZX1:=BT AND YXCD>0.5*ATR AND C=HHV(C,3) AND H>=HHV(H,2);
//第二天的十字星
ZCZX2:=REF(SZX,1) AND REF(L,1)=LLV(L,3) AND REF(H,1)<REF(H,2) ;//早晨之星第二根是星线,最低价为形态最低价
//第一天的下跌棒体
ZCZX3:=REF(BT,2) AND REF(C,2)<REF(C,3) AND REF(YXCD,2)>0.5*ATR;
//定义早晨之星
ZCZX:=ZCZX1 AND ZCZX2 AND ZCZX3;
//早晨之星交易
ZCZX ,SP(TC);//出现早晨之星减仓卖出1手
REF(ZCZX,1) AND REF(BKVOL,2)>0,BK(TC);//1日后,补回之前的仓位

//黄昏之星
//第三天的下跌棒体
HHZX1:=BT AND YXCD>0.5*ATR AND C<=LV(L,1);
//第二天的十字星
HHZX2:=REF(SZX,1) AND REF(H,1)=HHV(H,3) AND REF(L,1)>REF(L,2);
//第一天的上涨棒体
HHZX3:=REF(BT,2) AND REF(C,2)>REF(C,3) AND REF(YXCD,2)>0.5*ATR;
//定义黄昏之星
HHZX:=HHZX1 AND HHZX2 AND HHZX3 ;
//黄昏之星交易
HHZX AND BKVOL=0,BK(TC);//出现黄昏之星买入1手
REF(HHZX,1) AND REF(BKVOL,2)=0,SP(TC);//1日后,卖出


//ATR
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真实波幅
ATR:=MA(TR,26); //求26个周期内真实波幅的简单移动平均

//头寸
TC:=INTPART((MONEYTOT*0.01/(UNIT*ATR)));//根据权益的1%计算下单手数
MTC:=4*TC; //总的持仓头寸

//20周期的新高新低
HH:=HV(H,20);
LL:=LV(L,20);

//海龟交易
CROSSUP(C,HH)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,BK(TC);//最新价超过20周期的最高值,首次买入开仓,手数为TC手
CROSSDOWN(C,LL)&&ISLASTBK=0&&ISLASTSK=0&&BARPOS>=26,SK(TC); //最新价跌破20周期的最低值,首次卖出开仓,手数为TC手
C>=BKPRICE+0.5*ATR&&BKVOL<MTC&&ISLASTBK,BK(TC);//价格在上次开仓的基础上上涨0.5倍ATR,在手数不超过4倍TC的时候,买入加仓TC手
C<=SKPRICE-0.5*ATR&&SKVOL<MTC&&ISLASTSK,SK(TC);//价格在上次开仓的基础上下跌0.5倍ATR,在手数不超过4倍TC的时候,卖出加仓TC手
C<=(BKPRICE-2*ATR)&&BKVOL>0,SP(BKVOL);//最新价小于开仓价减去2倍的ATR,止损平仓
C>=(SKPRICE+2*ATR)&&SKVOL>0,BP(SKVOL); //最新价大于开仓价加上2倍的ATR,止损平仓
CROSSUP(H,HV(H,10))&&SKVOL>0,BP(SKVOL);//最高价上穿10周期最高价,平仓
CROSSDOWN(L,LV(L,10))&&BKVOL>0,SP(BKVOL); //最低价下穿10周期的最低价,平仓

TRADE_AGAIN(10);


//K线组合形态模块
//常规K线形态
STCD:=ABS(O-C);
SYXCD:=H-MAX(O,C);//上影线长度
XYXCD:=MIN(O, C)-L;//下影线长度
YXCD:=H-L;//影线长度
BT:=STCD>YXCD*0.5;//棒体
XX:=STCD<YXCD*0.5;//星线

//十字星
SZXST:=STCD<ATR*0.1;//十字星的实体
SZX:=SZXST AND SYXCD>0 AND XYXCD>0;//十字星定义

//早晨之星
//第三天的上涨棒体
ZCZX1:=BT AND YXCD>0.5*ATR AND C=HHV(C,3) AND H>=HHV(H,2);
//第二天的十字星
ZCZX2:=REF(SZX,1) AND REF(L,1)=LLV(L,3) AND REF(H,1)<REF(H,2) ;//早晨之星第二根是星线,最低价为形态最低价
//第一天的下跌棒体
ZCZX3:=REF(BT,2) AND REF(C,2)<REF(C,3) AND REF(YXCD,2)>0.5*ATR;
//定义早晨之星
ZCZX:=ZCZX1 AND ZCZX2 AND ZCZX3;
//早晨之星交易
ZCZX ,SP(TC);//出现早晨之星减仓卖出1手
REF(ZCZX,1) AND REF(BKVOL,2)>0,BK(TC);//1日后,补回之前的仓位



1587549223(1).png
1587549153(1).png
回复

使用道具 举报

一博 | 2020-4-22 18:58:54 | 显示全部楼层
代码我组合了半天,发现组合对不上,于是放弃

我是这么考虑的,当出现倒垂头线,MACD金叉时买入
MACD死叉卖

我等老师的课,然后按图索骥吧。。。。
回复

使用道具 举报

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

本版积分规则

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

113

主题

475

帖子

1328

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1328
  • 官方论坛

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