
等级: 标准版
- 注册:
- 2023-2-16
- 曾用名:
|
以下策略是日内网格,麻烦帮忙改成非日内的
高低点价格有自己输入指定,收盘不平仓
INPUT:DIF(5,1,1000,1),SS(1,1,1000,1);//DIF为网格间隔参数,单位是最小变动价位;SS是手数参数
VARIABLE:levelb:=-1,levels:=-1;//全局变量用来记录最近一次 买和卖 时候的价位所在的档位。
//网格边界,可自行定义H1,L1的计算逻辑,但是务必要在H1,L1变化时候 进行仓位或者全局变量的重置。
L1:CALLSTOCK('',vtLOW,6,-1);//网格上限
H1:CALLSTOCK('',vtHIGH,6,-1);//网格下限
if TODAYBAR=1 then //开盘初始化一次
begin
levelb:=-1;
levels:=-1;
end
//这2个值反应了当前收盘价 距离上下限 的间隔数
level1:FLOOR((H1-c)/DIF);//当前价格从最高点回落的 档位,数值变小是价格上涨
level2:FLOOR((c-l1)/DIF);//当前价格从最低点上涨的 档位,数值变小是价格下跌
if levelb=-1 then levelb:=max(1,level1);
if levels=-1 then levels:=max(1,level2);
upprice:=H1-(max(levelb,level1))*DIF;//跌破这个价格买入,每次买后,levelb升一档。考虑到价格可能不连续变化,实际取(上次记录的档位,当前实际档位)最大值计算价格
dnprice:=L1+(max(levels,level2))*DIF;//突破这个价格卖出,每次卖后,levels升一档。
买:=c<=upprice and levelb>=0 and level2>0 ;
卖:=c>=dnprice and HOLDING>0 and levels>=0;
if 卖 then
begin
sell(1,SS,market);
levels:=level2+1;
end
if 买 then
begin
buy(1,SS,market);
levelb:=level1+1;
end
if time=CLOSETIME(0) then
begin
收盘平仓:sell(1,holding,market);
END
|
|