投资者咨询:想问问这个模型是根据海归的加仓策略改的,但是为什么会一直开仓,而不是设定的4次 (文华财经WH8赢智V8.2)
来源:文华财经 日期:2018-8-3 11:26
//该策略为趋势跟踪交易策略,适用较大周期,如日线。
//该模型仅用作模型开发案例,依此入市,风险自负。
////////////////////////////////////////////////////////
MOVAVGVAL:MA((HIGH+LOW+CLOSE)/3,AVGLENGTH);//三价均线,AVGLENGTH的意思是平均长度
//比较当前的最高价和最低价和前一周期的收盘价,比较两者之前的大小,大的取大的,小的取小的,再取价差得到振幅
TRUEHIGH1:=IF(HIGH>=REF(C,1),HIGH,REF(C,1));//如果当前K线最高价大于前一K线收盘价,取最高价,否则取前一K线收盘价
TRUELOW1:=IF(LOW<=REF(C,1),LOW,REF(C,1));//如果当前K线最低价小于等于前一K线收盘价,取最最低价,否则取前一K线收盘价
TRUERANGE1:=IF(ISLASTBAR,H-L,TRUEHIGH1-TRUELOW1);//取最高价和最低价的差,如果是最后一根K线就取当前K线的差,如果不是,就取上面2个数值的差
//通道上下轨
UPBAND:MOVAVGVAL+MA(TRUERANGE1,ATRLENGTH);//三价均线+N期真实范围的平均值,上轨
DNBAND:MOVAVGVAL-MA(TRUERANGE1,ATRLENGTH);//三价均线-N期真实范围的平均值,下轨
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; //总的持仓头寸
LIQUIDPOINT:=MOVAVGVAL;//出场条件,止损点:=三价均线
MOVAVGVAL>REF(MOVAVGVAL,1)&&C>UPBAND,BK(TC);//三价均线向上,并且价格上破通道上轨,开多单
C>=BKPRICE+0.5*ATR&&BKVOL<MTC&&ISLASTBK,BK(TC);//价格在上次开仓的基础上上涨0.5倍ATR,在手数不超过4倍TC的时候,买入加仓TC手
C<LIQUIDPOINT&&BKVOL>0,SP(BKVOL);//持有多单时,价格下破三价均线,平多单
MOVAVGVAL<REF(MOVAVGVAL,1)&&C<DNBAND,SK(TC);//三价均线向下,并且价格下破通道下轨,开空单
C<=SKPRICE-0.5*ATR&&SKVOL<MTC&&ISLASTSK,SK(TC);//价格在上次开仓的基础上下跌0.5倍ATR,在手数不超过4倍TC的时候,卖出加仓TC手
C>LIQUIDPOINT&&SKVOL>0,BP(SKVOL);//持有空单时,价格上破三价均线,平空单
TRADE_AGAIN(10);
技术人员回复
日期:2018-8-3 11:31
没有限制初次开仓,这么试试
MOVAVGVAL:MA((HIGH+LOW+CLOSE)/3,AVGLENGTH);//三价均线,AVGLENGTH的意思是平均长度
//比较当前的最高价和最低价和前一周期的收盘价,比较两者之前的大小,大的取大的,小的取小的,再取价差得到振幅
TRUEHIGH1:=IF(HIGH>=REF(C,1),HIGH,REF(C,1));//如果当前K线最高价大于前一K线收盘价,取最高价,否则取前一K线收盘价
TRUELOW1:=IF(LOW<=REF(C,1),LOW,REF(C,1));//如果当前K线最低价小于等于前一K线收盘价,取最最低价,否则取前一K线收盘价
TRUERANGE1:=IF(ISLASTBAR,H-L,TRUEHIGH1-TRUELOW1);//取最高价和最低价的差,如果是最后一根K线就取当前K线的差,如果不是,就取上面2个数值的差
//通道上下轨
UPBAND:MOVAVGVAL+MA(TRUERANGE1,ATRLENGTH);//三价均线+N期真实范围的平均值,上轨
DNBAND:MOVAVGVAL-MA(TRUERANGE1,ATRLENGTH);//三价均线-N期真实范围的平均值,下轨
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; //总的持仓头寸
LIQUIDPOINT:=MOVAVGVAL;//出场条件,止损点:=三价均线
MOVAVGVAL>REF(MOVAVGVAL,1)&&C>UPBAND&&BKVOL=0,BK(TC);//三价均线向上,并且价格上破通道上轨,开多单
C>=BKPRICE+0.5*ATR&&BKVOL<MTC&&ISLASTBK,BK(TC);//价格在上次开仓的基础上上涨0.5倍ATR,在手数不超过4倍TC的时候,买入加仓TC手
C<LIQUIDPOINT&&BKVOL>0,SP(BKVOL);//持有多单时,价格下破三价均线,平多单
MOVAVGVAL<REF(MOVAVGVAL,1)&&C<DNBAND&&SKVOL=0,SK(TC);//三价均线向下,并且价格下破通道下轨,开空单
C<=SKPRICE-0.5*ATR&&SKVOL<MTC&&ISLASTSK,SK(TC);//价格在上次开仓的基础上下跌0.5倍ATR,在手数不超过4倍TC的时候,卖出加仓TC手
C>LIQUIDPOINT&&SKVOL>0,BP(SKVOL);//持有空单时,价格上破三价均线,平空单
TRADE_AGAIN(10);