国外策略库.docx
《国外策略库.docx》由会员分享,可在线阅读,更多相关《国外策略库.docx(81页珍藏版)》请在冰豆网上搜索。
国外策略库
国外经典策略库
(1)基于ADX及EMA的交易系统
/*策略说明:
基于ADX及EMA进行判断
系统要素:
1.计算30根k线最高价和最低价的EMA价差
2.计算12根k线的ADX
入场条件:
满足上根K线的收盘价收于EMA30之上,且ADX向上的条件在EntryBarBAR内该条件成立
当前价小于等于SellSetup,做空,当条件满足超过EntryBarBAR后,取消入场
当前价大于等于BuySetup,做多,当条件满足超过EntryBarBAR后,取消入场
出场条件:
多:
当前价格下破30根K线最高价的EMA
空:
当前价格上穿30根K线最低价的EMA
*/
参数:
N:
110014DMI的N值
M:
1306ADX均线周期,DMI的M值
AVGLEN:
105030最高最低价的EMA周期数
ENTRYBAR:
152保持BuySetup触发BAR数
TR:
=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N);//收盘价与最低价做差,最高价与前一周期收盘价做差,最低价与前一周期收盘价作差,在上述三个数据中取绝对值最大者,对该最大值做N周期累加求和。
。
HD:
=HIGH-REF(HIGH,1);//最高价与前一周期最高价做差
LD:
=REF(LOW,1)-LOW;//前一周期最低价与最低价做差
DMP:
=SUM(IFELSE(HD>0&&HD>LD,HD,0),N);//如果HD>0并且HD>LD,取HD否则取0,对取值做N周期累加求和。
DMM:
=SUM(IFELSE(LD>0&&LD>HD,LD,0),N);//如果LD>0并且LD>HD,取LD否则取0,对取值做N周期累加求和。
PDI:
DMP*100/TR;
MDI:
DMM*100/TR;
ADX:
MA(ABS(MDI-PDI)/(MDI+PDI)*100,M);//MDI与PDI差的绝对值与(MDI+PDI)*100做比值,取该比值的M个周期均值。
ADXR:
(ADX+REF(ADX,M))/2;
UPPERMA:
=EMA(HIGH,AVGLEN);//计算30根K线最高价的EMA
LOWERMA:
=EMA(LOW,AVGLEN);//计算30根K线最低价的EMA
CHANSPREAD:
=(UPPERMA-LOWERMA)/2;//通过EMA计算出噪音通道宽度
BUYSETUP:
=C>UPPERMA&&ADX>REF(ADX,1);//当ADX向上且当前价大于30根K线最高价的EMA满足买入准备条件
BUYTARGET:
=C+CHANSPREAD;//满足买入准备条件时,用前BAR价格计算出多头触发价
MROBS:
=BARSLAST(BUYSETUP);//上次满足买入准备条件距离当前BAR的数目
MROBS<=ENTRYBAR&&BKVOL=0&&SKVOL=0&&BARPOS>100&&H>BUYTARGET&&VOL>0,BK;//系统入场
SETSIGPRICETYPE(BK,MAX(OPEN,REF(BUYTARGET,1)));
BKVOL>0&&BARSBK>0&&VOL>0&&LOW<=UPPERMA-MINPRICE,SP;//系统出场
SETSIGPRICETYPE(SP,MIN(OPEN,REF(UPPERMA,1)-MINPRICE));
SELLSETUP:
=CREF(ADX,1);//当ADX向上且当前价下于30根K线最低价的EMA满足卖出准备条件
SELLTARGET:
=C-CHANSPREAD;//满足卖出准备条件时,用前BAR价格计算出空头触发价
MROSS:
=BARSLAST(SELLSETUP);//上次满足卖出准备条件距离当前BAR的数目
MROSS<=ENTRYBAR&&BKVOL=0&&SKVOL=0&&BARPOS>100&&LOW<=SELLTARGET&&VOL>0,SK;
SETSIGPRICETYPE(SK,MIN(OPEN,REF(SELLTARGET,1)));
SKVOL>0&&BARSSK>0&&VOL>0&&HIGH>=LOWERMA+MINPRICE,BP;
SETSIGPRICETYPE(BP,MAX(OPEN,REF(LOWERMA,1)+MINPRICE));
AUTOFILTER;
(2)基于平移的高低点均值通道与K线中值突破的系统
/*策略说明:
基于平移的高点和低点均线通道与K线中值突破进行判断
系统要素:
1.RangeLeader是个当前K线的中点在之前K线的最高点上,且当前K线的振幅大于之前K线的振幅的K线
2.计算高点和低点的移动平均线
入场条件:
1、上根K线为RangeLead,并且上一根收盘价大于N周期前高点的MA,当前无多仓,则开多仓
2、上根K线为RangeLead,并且上一根收盘价小于N周期前低点的MA,当前无空仓,则开空仓
出场条件:
1.开仓后,5个K线内用中轨止损,5个K线后用外轨止损
*/
参数:
ABSDISP:
1105高低点均线前移周期
AVGLEN:
15020高低点均线计算周期
EXITBAR:
1105止损周期参数,该周期以前中轨止损,以后外轨止损
RANGE1:
=HIGH-LOW;
UPPERAVG:
=MA(REF(HIGH,ABSDISP),AVGLEN);//计算N周期前高点的MA,N=参数ABSDISP
LOWERAVG:
=MA(REF(LOW,ABSDISP),AVGLEN);//计算N周期前低点的MA,N=参数ABSDISP
MEDIANPRICE:
=(HIGH+LOW)*0.5;//计算K线中点
EXITAVG:
=MA(REF(MEDIANPRICE,ABSDISP),AVGLEN);//计算N周期前K线中点的MA,N=参数ABSDISP
RANGELEADB:
=MEDIANPRICE>REF(H,1)&&RANGE1>REF(RANGE1,1);//当K线中点大于前一根K线高点并且振幅〉上一根振幅时,RANGELEADB返回1
//系统入场
BKVOL=0&&SKVOL=0&&REF(RANGELEADB,1)=1&&REF(C,1)>REF(UPPERAVG,1),BK;//上根K线RANGELEADB返回1,并且上一根收盘价大于N周期前高点的MA,当前无多仓,则开多仓
SETSIGPRICETYPE(BK,OPEN);
BKVOL=0&&SKVOL=0&&REF(RANGELEADB,1)=1&&REF(C,1)SETSIGPRICETYPE(SK,OPEN);
//系统出场
BKVOL>0&&BARSBK>0&&BARSBK<=EXITBAR&&LOWSETSIGPRICETYPE(SP,MIN(OPEN,EXITAVG));
BKVOL>0&&BARSBK>0&&BARSBK>EXITBAR&&LOW<=UPPERAVG-MINPRICE,SP;
//SETSIGPRICETYPE(SP,MIN(OPEN,UPPERAVG-MINPRICE));
SKVOL>0&&BARSSK>0&&BARSSK<=EXITBAR&&H>=EXITAVG,BP;//开仓后N根K线内用中轨止损,N根K线后用上轨止损,N=参数EXITBAR
SETSIGPRICETYPE(BP,MAX(OPEN,EXITAVG));
SKVOL>0&&BARSSK>0&&BARSSK>EXITBAR&&HIGH>=LOWERAVG+MINPRICE,BP;
//SETSIGPRICETYPE(BP,MAX(OPEN,LOWERAVG+MINPRICE));
AUTOFILTER;
(3)基于平移布林通道的系统
/*策略说明:
基于平移的boll通道突破系统
系统要素:
1.平移的boll通道
入场条件:
1、关键价格突破通道上轨,则开多仓
2、关键价格突破通道下轨,则开空仓
出场条件:
1、关键价格突破通道上轨,则平空仓
2、关键价格突破通道下轨,则平多仓
*/
参数:
SDLEN:
12012boll标准差周期参数
AVGLEN:
1103boll均线周期参数
SDEV:
1102boll通道倍数参数
DISP:
12016boll平移参数
//平移BOLL通道计算
AVGVAL:
=MA(C,AVGLEN);
SDMULT:
=STD(C,SDLEN)*SDEV;
DISPTOP:
=REF(AVGVAL,DISP)+SDMULT;
DISPBOTTOM:
=REF(AVGVAL,DISP)-SDMULT;
//系统入场
BKVOL=0&&SKVOL=0&&HIGH>=REF(DISPTOP,1),BK;
SETSIGPRICETYPE(BK,MAX(OPEN,REF(DISPTOP,1)));
BKVOL=0&&SKVOL=0&&LOW<=REF(DISPBOTTOM,1),SK;
SETSIGPRICETYPE(SK,MIN(OPEN,REF(DISPBOTTOM,1)));
//系统出场
BKVOL>0&&BARSBK>0&&LOW<=REF(DISPBOTTOM,1),SP;
SETSIGPRICETYPE(SP,MIN(OPEN,REF(DISPBOTTOM,1)));
SKVOL>0&&BARSSK>0&&HIGH>=REF(DISPTOP,1),BP;
SETSIGPRICETYPE(BP,MAX(OPEN,REF(DISPTOP,1)));
AUTOFILTER;
(4)基于置换均线的二次穿越突破系统
/*策略说明:
本策略是基于置换均线的二次穿越突破系统
系统要素:
1.将移动平均K线向后平移一定BAR数即为置换均线
2.相隔一定BAR数的收盘价二次穿越置换均线
3.二次穿越完成时那根BAR的高点(或低点)作为突破进场价
4.完成二次穿越的一定BAR数内突破
入场条件:
1.有效期内价格向上突破设定进场价做多
2.有效期内价格向下突破设定进场价做空
出场条件:
1.价格反向穿越均线后止损
2.基于N根K线的高低点的跟踪止损
*/
参数:
AVGLENGTH:
1105均线周期
AVGDISPLACE:
1105置换均线向后平移Bar数
VALIDBARS2:
1105开仓先决条件之二(上穿后再下穿)条件值保持有效的BAR数
VALIDBARS1:
1105开仓先决条件之一(收盘价上穿DMA均线)条件值保持有效的BAR数
VALIDBARS3:
1105开仓先决条件(上穿再下穿再上穿)条件值保持有效的BAR数
TRAILSBARS:
1105多少根BAR的最低价作为跟踪止损价
//计算置换均线
MA1:
=MA(CLOSE,AVGLENGTH);
DMA1:
=REF(MA1,AVGDISPLACE);
//判断收盘价是否穿越置换均线
CONCROSSOVER:
=CROSSUP(CLOSE,DMA1);
CONCROSSUNDER:
=CROSSDOWN(CLOSE,DMA1);
//计算最近的一次下穿发生的BAR离当前BAR的根数
BARSLASTCRSUND:
=BARSLAST(CONCROSSUNDER=1);
//计算最近的两次上穿发生的BAR离当前BAR的根数
BARSSECCRSOVR:
=BARSLAST(CONCROSSOVER=1);
BARSFSTCRSOVR:
=BARSSECCRSOVR+REF(BARSLAST(CONCROSSOVER=1),BARSSECCRSOVR);
//计算最近的一次上穿发生的BAR离当前BAR的根数
BARSLASTCRSOVR:
=BARSLAST(CONCROSSOVER=1);
//计算最近的两次下穿发生的BAR离当前BAR的根数
BARSSECCRSUND:
=BARSLAST(CONCROSSUNDER=1);
BARSFSTCRSUND:
=BARSSECCRSUND+REF(BARSLAST(CONCROSSUNDER=1),BARSSECCRSUND);
//设置开仓标志
TJ:
=CONCROSSOVER&&(BARSLASTCRSUND-BARSSECCRSOVR)<=VALIDBARS2&&BARSFSTCRSOVR-BARSLASTCRSUND<=VALIDBARS1;
ENTRYPOINT:
=HIGH+MINPRICE;
TJ1:
=CONCROSSUNDER&&(BARSLASTCRSOVR-BARSSECCRSUND)<=VALIDBARS2&&BARSFSTCRSUND-BARSLASTCRSOVR<=VALIDBARS1;
ENTRYPOINT1:
=LOW-MINPRICE;
//开仓
TJ&&BKVOL=0&&SKVOL=0&&0<=VALIDBARS3&&HIGH>=ENTRYPOINT&&VOL>0,BK;
SETSIGPRICETYPE(BK,MAX(OPEN,ENTRYPOINT));
TJ1&&BKVOL=0&&SKVOL=0&&0<=VALIDBARS3&&LOW<=ENTRYPOINT1&&VOL>0,SK;
SETSIGPRICETYPE(SK,MIN(OPEN,ENTRYPOINT1));
//止损价格计算
REVERSALPRICE:
=REF(DMA1,1)-MINPRICE;
TRAILSTOPPRICE:
=LLV(REF(LOW,1),TRAILSBARS);
REVERSALPRICE1:
=REF(DMA1,1)+MINPRICE;
TRAILSTOPPRICE1:
=HHV(REF(H,1),TRAILSBARS);
//平仓
BKVOL>0&&BARSBK>0&&VOL>0&&LOW<=MAX(REVERSALPRICE,TRAILSTOPPRICE),SP;
SETSIGPRICETYPE(SP,MIN(OPEN,MAX(REVERSALPRICE,TRAILSTOPPRICE)));
SKVOL>0&&BARSSK>0&&VOL>0&&H>=MIN(REVERSALPRICE1,TRAILSTOPPRICE1),BP;
SETSIGPRICETYPE(BP,MIN(REVERSALPRICE1,TRAILSTOPPRICE1));
AUTOFILTER;
(5)基于均线和形态的高低点突破系统多
/*策略说明:
本策略是基于均线和K线形态的高低点突破系统
系统要素:
1.根据价格与快速均线和慢速均线的关系来判断大的趋势,价格在上为多头趋势,在下为空头趋势
2.根据2根K线收盘位置构成的形态来判断小趋势,第一根收盘靠近低点第二根收盘靠近高点为上涨趋势,否则为下跌趋势
3.最近2根K线的高低点形成的通道
入场条件:
1.大趋势为多头趋势,且K线形态也为多头趋势时,突破通道高点做多
2.大趋势为空头趋势,且K线形态也为空头趋势时,突破通道低点做空
出场条件:
1.开多以开仓BAR的最近N根BAR的低点作为止损价
开空以开仓BAR的最近N根BAR的高点作为止损价
2.盈利超过止损额的一定倍数止盈
*/
参数:
FASTLENGTH:
1108快速均线周期
SLOWLENGTH:
110040慢速均线周期
RISKLENGTH:
1102止损通道的周期数
PROFITFACTOR:
1102止盈相对止损的倍数
//计算及输出均线指标
MA_FAST:
=MA(CLOSE,FASTLENGTH);
MA_SLOW:
=MA(CLOSE,SLOWLENGTH);
//每根K线的波动范围
RANGE1:
=HIGH-LOW;
//K线形态判断的2个条件
CONDITION1:
=CLOSE<=LOW+0.25*RANGE1;
CONDITION2:
=CLOSE>=HIGH-0.25*RANGE1;
CONDITION11:
=CLOSE>=HIGH-0.25*RANGE1;
CONDITION21:
=CLOSE<=LOW+0.25*RANGE1;
//计算周期的高低点
HH:
=HHV(HIGH,2);
LL:
=LLV(LOW,RISKLENGTH);
LL1:
=LLV(LOW,2);
HH1:
=HHV(HIGH,RISKLENGTH);
//开仓
BKVOL=0&&SKVOL=0&&REF(CONDITION1,2)=1&&REF(CONDITION2,1)=1&&REF(C,1)>REF(MA_FAST,1)&&REF(C,1)>REF(MA_SLOW,1)&&VOL>0&&HIGH>=REF(HH,1)+MINPRICE,BK;
SETSIGPRICETYPE(BK,MAX(OPEN,REF(HH,1)+MINPRICE));
LONGRISK:
=REF(LL,1)-MINPRICE;
BKVOL=0&&SKVOL=0&&REF(CONDITION11,2)=1&&REF(CONDITION21,1)=1&&REF(C,1)[0&&LOW]SETSIGPRICETYPE(SK,MIN(OPEN,REF(LL1,1)-MINPRICE));
SHORTRISK:
=REF(HH1,1)+MINPRICE;
//平仓
BKVOL>0&&BARSBK>0&&VOL>0&&HIGH>BKPRICE+PROFITFACTOR*(BKPRICE-LONGRISK),SP;//止盈
SETSIGPRICETYPE(SP,MAX(OPEN,BKPRICE+PROFITFACTOR*(BKPRICE-LONGRISK)));
BKVOL>0&&BARSBK>0&&VOL>0&&LOW<=LONGRISK,SP;//止损
SETSIGPRICETYPE(SP,MIN(OPEN,LONGRISK));
SKVOL>0&&BARSSK>0&&VOL>0&&LOW<=SKPRICE-PROFITFACTOR*(SHORTRISK-SKPRICE),BP;//止盈
SETSIGPRICETYPE(BP,MIN(OPEN,SKPRICE-PROFITFACTOR*(SHORTRISK-SKPRICE)));
SKVOL>0&&BARSSK>0&&VOL>0&&HIGH>=SHORTRISK,BP;//止损
SETSIGPRICETYPE(BP,MAX(OPEN,SHORTRISK));
AUTOFILTER;
(6)基于MACD判断的交易系统
/*策略说明:
基于MACD在价格回撤时进行判断的交易系统
系统要素:
多:
1.用MACD慢线在零轴上判断趋势
2.在多头趋势中以收盘价和波动率构成入场出场通道
空:
1.用MACD慢线在零轴下判断趋势
2.在空头趋势中以收盘价和波动率构成入场出场通道
入场条件:
1.价格高于MACD慢线上穿零轴的当前价格和波动率组成的通道上轨,做多
2.价格低于MACD慢线下穿零轴的当前价格和波动率组成的通道下轨,做空
出场条件:
多:
1.macd慢线在零轴下
2.价格低于MACD慢线上穿零轴的当前价格和波动率组成的通道下轨
3.价格低于多头趋势形成时的最低价格出场
空:
1.macd慢线在零轴上
2.价格高于MACD慢线下穿零轴的当前价格和波动率组成的通道上轨
3.价格高于空头趋势形成时的最高价格出场
*/
参数:
FASTMA:
1104macd短周期值
SLOWMA:
12010macd长周期值
AVGMA:
12016MACD慢线周期值
ATRLEN:
110010atr周期值
EATRPCNT:
1101入场通道波动率过滤数值
XATRPCNT:
1101出场通道波动率过滤数值
MACDLINE:
=EMA(CLOSE,FASTMA)-EMA(CLOSE,SLOWMA);//计算MACD快线
SIGNALLINE:
=EMA(MACDLINE,AVGMA);//计算MACD慢线
TRUEHIGH:
=IF(HIGH>REF(C,1),HIGH,REF(C,1));
TRUELOW:
=IF(LOW<=REF(C,1),LOW,REF(C,1));
TRUERANGE:
=IF(ISLASTBAR,H-L,TRUEHIGH-TRUELOW);
AATR:
=MA(TRUERANGE,ATRLEN);//计算ATR波动率
ZEROLINE:
=0;//零轴
CON1:
=CROSSUP(SIGNALLINE,ZEROLINE);//慢线上穿零轴
CON2:
=CROSSDOWN(SIGNALLINE,ZEROLINE);//慢线下穿零轴
UPTREND:
=IF(CON1||NOT(CON2),1,0);
SIGNALFLAG:
=IF(BKVOL>0||NOT(CON1)||NOT(CON2),1,0);
DNTREND:
=IF(NOT(CON1)||CON2,1,0);
BUYSETUP:
=IF(BKVOL=0||NOT(CON2)||UPTREND=1&&SIGNALFLAG=0,1,0);
CTRENDLOW:
=VALUEWHEN((UPTREND=1&&SIGNALFLAG=0)||(UPTREND=1&&MACDLINEUPPERBAND:
=VALUEWHEN(REF(BUYSETUP,1)=1&&REF(BUYSETUP,2)=0,REF(C,1)+(EATRPCNT*REF(AATR,1)));
EXITBAND:
=VALUEWHEN(REF(BUYSETUP,1)=1&&REF(BUYSETUP,2)=0,REF(CLOSE,1)-(XATRPCNT*REF(AATR,1)));
SIGNALFLAG1:
=IF(SKVOL>0||NOT(CON1)||NOT(CON2),1,0);
SELLSETUP:
=IF(SKVOL=0||NOT(CON1)||DNTREND=1&&SIGNALFLAG1=0,1,0);
CTRENDHIGH:
=VALUEWHEN((DNTREND=1&&SIGNALFLAG1=0)||(DNTREND=1&&MACDLINE>SIGNALLINE&&HIGH>LOOP2(CTRENDHIGH=NULL,NULL,REF(CTRENDHIGH,1))),HIGH);//满足入场条件设定入场价格以及出场价格
LOWERBAND:
=VALUEWHEN(REF(SELLSETUP,1)=1&&R