
等级: 标准版
- 注册:
- 2022-1-10
- 曾用名:
|
公式如下,截图见附件。全局变量控制加仓次数失败,请问如何解决?
//MA1MA2 加仓2次
//假设检验:波动率是否有连续性,1,同样比例下注,3%。 2. 波动率增大时,仓位提高1倍。 3. 波动率减小时,仓位提高1倍。
// 该程序是对假设1 的检验, 使用3% 同样的比例下注
//参数设置:缺损值 最小值 最大值 步长
INPUT:N1(8,1,10,1);//收盘在均线之上持续时间周期
INPUT:N2(31,1,100,1);//价格移动平均值计算时间周期
INPUT:MUL(2,1,10,1);// 加仓用 ATR 倍数
INPUT:RS(0.005,0.005,0.1,0.005); //头寸规模确定,单次押注占总资产比例
INPUT:RT(0.1,0.005,0.1,0.005); //头寸规模确定,加完仓后总的仓位与总资产比例
//中间变量
TR1:=MAX((H-L),MAX(ABS(H-REF(C,1)),ABS(L-REF(C,1)))); // 当日真实波动幅度
ATR:=EMA(TR1,20);//20日平均真实波动幅度
RSV:= MAX((INTPART((ASSET*RS)/(ATR*MULTIPLIER))),1);// 单次押注占当前资金的比率
RTV:=INTPART((ASSET*RT)/(ATR*MULTIPLIER)); // 所有押注占当前资金的比率
//中间变量 计算移动平均值
MA1:MA(CLOSE,N1);
MA2:MA(CLOSE,N2);
//交易条件
PKKDCOND:=MA1>MA2; // 平多开空条件
PDKKCOND:=MA1<MA2; // 平空开多条件
//交易指令
VARIABLE:BK1:=0,BK2:=0,BK3:=0; //通过全局变量限制多仓开仓次数一共为3次
VARIABLE:SK1:=0,SK2:=0,SK3:=0; //通过全局变量限制空仓开仓次数一共为3次
SELLSHORT(PKKDCOND AND HOLDING<0,HOLDING,MARKET);
BUY(PKKDCOND AND HOLDING=0,RSV,MARKET);
BK1:=1;
SELL(PDKKCOND AND HOLDING>0,HOLDING,MARKET);
BUYSHORT(PDKKCOND AND HOLDING=0,RSV,MARKET);
SK1:=1;
// 加多条件
BUYADDCOND:=HOLDING>0 AND ATR>REF(ATR,1) AND CLOSE>=ENTERPRICE+MUL*ATR AND ABS(HOLDING)<RTV;
// 加空条件
BUYSHORTADDCOND:=HOLDING<0 AND ATR>REF(ATR,1) AND CLOSE<=ENTERPRICE-MUL*ATR AND ABS(HOLDING)<RTV;
//交易指令
BUY(BUYADDCOND AND BK1=1,RSV,MARKET);
BK2:=1;
BUY(BUYADDCOND AND BK2=1,RSV,MARKET);
BK3:=1;
BUYSHORT(BUYSHORTADDCOND AND SK1=1,RSV,MARKET);
SK2:=1;
BUYSHORT(BUYSHORTADDCOND AND SK2=1,RSV,MARKET);
SK3:=1;
//显示当前交易头寸规模 资产状态
当前持仓: HOLDING,COLORYELLOW,LINETHICK0;
//当前资产:ASSET,LINETHICK4,COLORCYAN,NOAXIS;
|
-
-
|