以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教图表转后台  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=74293)

--  作者:szy56801
--  发布时间:2015/1/12 10:13:47
--  请教图表转后台

买了个专业版,后台还不是很会用。请问下我下面的改法对不对?前一部分发出信号,后一部分是后台部分,后台部分通过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);

 

 


 


--  作者:jinzhe
--  发布时间:2015/1/12 10:19:16
--  
这个ss是用来判断什么的?
--  作者:szy56801
--  发布时间:2015/1/12 10:23:44
--  
这个ss是替代holding的
--  作者:szy56801
--  发布时间:2015/1/12 10:27:46
--  

采用固定轮询模式。 但是有时候会发现先开空了,然后过了几根K线之后又开多或者开空。  是不是ss不对?

另外,采用这种写法回测是没问题的。


--  作者:fly
--  发布时间:2015/1/12 10:39:39
--  

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);