等级: 标准版
- 注册:
- 2024-5-6
- 曾用名:
|
有段时间没有来学习编写了,今天拼凑了一个简单的价格通道测试,要求实现可以在布林、价格、凯尔特三个价格通道里自由切换。
运行当前的代码会在k线图上同时显示三组通道线,最好运行它的时候只显示当前需要的通道线。请老师看看有没有错误和缺陷,谢谢!
input:M(20,10,300,10),N(2,0.1,10,1),ss(1,1,100,1);
input: BB_ok(1,0),PC_ok(1,0),KC_ok(1,0);
手数:=ss;
//布林带通道BOLL
MID : MA(CLOSE,M); // 布林带的中轨
UPPER: MID + N*STD(CLOSE,M); // 布林带的上轨
LOWER: MID - N*STD(CLOSE,M); // 布林带的下轨
BB_KD:CLOSE>UPPER;
BB_KK:CLOSE<LOWER;
//价格通道(唐奇安)
M周期高点:=ref(hhv(h,M),1);//m是参数,自行调整
M周期低点:=ref(LLV(L,M),1);
PC_KD:CLOSE>M周期高点;
PC_KK:CLOSE<M周期低点;
//肯特纳通道
MA1:REF(MA(((H+L+C)/3,M)),1);//三价平均线
浮动区间:=REF(MA(TR,M),1); //真实振幅的移动平均线
上轨:MA1+浮动区间;
下轨:MA1-浮动区间;
KC_KD:CLOSE>上轨;
KC_KK:CLOSE<下轨;
// 如果布林带信号开启
if BB_ok=1 then begin
IF BB_KK =1 THEN //平多开空单
SELL(HOLDING>0 ,HOLDING,LIMITR,CLOSE);
BUYSHORT(HOLDING=0 ,1,LIMITR,CLOSE);
IF BB_KD=1 THEN //平空开多单
SELLSHORT(HOLDING<0,HOLDING,LIMITR,CLOSE);
BUY(HOLDING=0,1,LIMITR,CLOSE);
END
// 如果价格通道信号开启
if PC_ok=1 then begin
IF PC_KK =1 THEN //平多开空单
SELL(HOLDING>0 ,HOLDING,LIMITR,CLOSE);
BUYSHORT(HOLDING=0 ,1,LIMITR,CLOSE);
IF PC_KD=1 THEN //平空开多单
SELLSHORT(HOLDING<0,HOLDING,LIMITR,CLOSE);
BUY(HOLDING=0,1,LIMITR,CLOSE);
end;
// 如果肯特纳通道信号开启
if KC_ok=1 then begin
IF KC_KK =1 THEN //平多开空单
SELL(HOLDING>0 ,HOLDING,LIMITR,CLOSE);
BUYSHORT(HOLDING=0 ,1,LIMITR,CLOSE);
IF KC_KD=1 THEN //平空开多单
SELLSHORT(HOLDING<0,HOLDING,LIMITR,CLOSE);
BUY(HOLDING=0,1,LIMITR,CLOSE);
end;
|
|