请老师帮忙编写,谢谢 (文华财经WH8赢智V8.2)

投资者咨询:请老师帮忙编写,谢谢 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-5-11 15:18
此程序主程序在5分钟周期上运行,引用60分钟周期MACD:
60分钟周期MACD大于0,或60分钟macd的diff大于0时:5分钟的kd的k值由20以下向上穿越20(A点),继续向上穿越50(B点)的当根K线的最高点记为H1,当K线收盘价大于H1时开仓做多。A点和B点之间的最低价记为L1,H1-L1的差记为M1。开仓后,当价格上升幅度达到1/2*M1时平一半仓止盈,当价格上升幅度达到M1时,全部平仓止盈。当收盘价低于L1时止损平仓。
技术人员回复
日期:2018-5-11 15:26
思路涉及跨周期,需要用跨周期模型实现

建立引用函数,保存名为AAA

DIFF : EMA(CLOSE,12) - EMA(CLOSE,26);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA  : EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
MACD:2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线

主函数:

假设开仓手数为N=10:

RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;//收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值定义为RSV
K:SMA(RSV,3,1);//RSV的移动平均
D:SMA(K,3,1);//K值的移动平均
#IMPORT [ MIN,60 ,AAA ] AS VAR
MACD60:VAR.MACD;
DIFF60:VAR.DIFF;
N:=10;
A:(MACD60>0||DIFF60>0)&&CROSS(K,20);
BH1:VALUEWHEN((MACD60>0||DIFF60>0)&&CROSS(K,50),H),NODRAW;
EXIST(K<20, BARSLAST(CROSS(MACD60,0))+1)&&C>BH1&&BKVOL<(N/2),BK(N);
J:=EXIST(K<20, BARSLAST(CROSS(MACD60,0))+1)&&C>BH1&&BKVOL=0;
L1:REF(LLV(L,BARSLAST(A)),BARSLAST(J)+1),NODRAW;
H1:VALUEWHEN(J,H),NODRAW;
M1:H1-L1,NODRAW;
C>BKPRICE+0.5*M1,SP(FLOOR(BKVOL*0.5));
C>BKPRICE+M1,SP(BKVOL);
C<L1,SP(BKVOL);

跨周期模型的具体使用您可以参考下面帖子具体了解一下: