
等级: 专业版
- 注册:
- 2025-7-4
- 曾用名:
|
下面公式是希望通过循环运行参数组合,得到模拟收益率最高时的那组参数值,但未能输出值,求优化,谢谢!
//得到月线最高价与最低价,作为循环的边界值
HH1:=CALLSTOCK('', VTHIGH, 8, 0);
LL1:=CALLSTOCK('', VTLOW, 8, 0);
//取整,以方便循环时使用
hh:=intpart(hh1);
LL:=intpart(LL1);
//循环组合参数,用valuewhen记录最大值时hh与LL的值--指标组--过滤因子专用-0过滤公用模块--模拟交易条件来计算概率
for jL=LL to hh do begin
for jh=jL to hh do begin
kd1:=cross(jl,L);//kd1:=L<jL and ref(H>jL,1);
pd1:=cross(h,jh);//h>jh and ref(L<jh,1);
kdzq:=sumbars(kd1,1);
pdzq:=sumbars(pd1,1);
//
kd:=kd1 and count(kd1,pdzq)=1;//第一次才有效
pd2:=pd1 and count(pd1,kdzq)=1;//第一次才有效
//统计有效的平仓次数
cctj:=kdzq<pdzq;//持仓条件
pd:=cctj and pd2;//有持仓时,满足平仓条件的第一次为有效的平仓条件
pdcs:=count(pd,0);//计算有效平仓的次数,作为倍数
yl:=pdcs*(jh-jl);//算法2--返回每次的单次盈利再累加 dcyl:=if(pd,jh-jL,0);yl:=sum(dcyl,0);
ylmax:=valuewhen(yl>ref(yl,1),yl);
jhh:=valuewhen(yl=ylmax,jh);
jLL:=valuewhen(yl=ylmax,jL);
end
ylmaxx:=valuewhen(ylmax>ref(ylmax,1),ylmax);
jhhh:valuewhen(ylmax=ylmaxx,jhh);
jLLL:valuewhen(ylmax=ylmaxx,jLL);
END
gd:jhhh;
dd:jLLL;
|
|