买了个专业版,后台还不是很会用。请问下我下面的改法对不对?前一部分发出信号,后一部分是后台部分,后台部分通过workmode模式来控制图表或者后台交易。
INPUT: lots(1,1,20,1);//手数
VARIABLE: signal := 0;
ss := signal;
KD := ...;//开多条件
PD := ...;//平多条件
KK := ...;//开空条件
PK := ...;//平空条件
filter_2 := ...;//平多条件
if ss = 0 and KD and filter_2 then BEGIN
signal := 1 ;
myprice := ...;
end;
if ss = 0 and KK and filter_2 then BEGIN
signal := -1 ;
myprice := ...;
end;
if ss > 0 and PD then BEGIN
signal := 0 ;
myprice := ...;
end;
if ss < 0 and PK then BEGIN
signal := 0 ;
myprice := ...;
end;
//后台部分
if ss < 0 and signal >= 0 then begin
tsellshort(workmode = 1, -ss * lots, MKT);
sellshort(workmode = 0, -ss * lots, LIMITR, myprice);
ss := 0;
end;
if ss > 0 and signal <= 0 then begin
tsell(workmode = 1, ss * lots, MKT);
sell(workmode = 0, ss * lots, LIMITR, myprice);
ss := 0;
end;
tbuy(workmode = 1 and ss < signal, (signal - ss) * lots, MKT);
buy(workmode = 0 and ss < signal, (signal - ss) * lots, LIMITR, myprice);
tbuyshort(workmode = 1 and ss > signal, (ss - signal) * lots, MKT);
buyshort(workmode = 0 and ss > signal, (ss - signal) * lots, LIMITR, myprice);
采用固定轮询模式。 但是有时候会发现先开空了,然后过了几根K线之后又开多或者开空。 是不是ss不对?
另外,采用这种写法回测是没问题的。
1.后台程序化不能回测
2.VARIABLE定义的全局变量用于图表
后台请用extgbdata定义的全局变量,以下为示例,提供给您做参考
1.限制每个周期一天最多开平仓1手(多单or空单,一天最多一手),后台使用全局变量控制
//平空
if (kd or pk) and extgbdata('flag2')=2 then
begin
sellshort(1,1,mkt);
extgbdataset('flag2',3);
end
//开多,全局变量为0才开多
if kd and extgbdata('flag2')=0 then
begin
tbuy(1,1,mkt);
extgbdataset('flag2',1);
end
//平多
if (pd or kk) and extgbdata('flag2')=1 then
begin
tsell(1,1,mkt);
extgbdataset('flag2',3);
end
//开空,全局变量为0才开空
if kk and extgbdata('flag2')=0 then
begin
tbuyshort(1,1,mkt);
extgbdataset('flag2',2);
end
//每天收盘前,将全局变量赋值为0,否则第二天不开仓
if DYNAINFO(207)>=closetime(0) then extgbdataset('flag2',0);