以文本方式查看主题

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

--  作者:bob
--  发布时间:2014/4/14 9:56:32
--  后台交易策略
请教各位老师,下面这个后台策略我编写的有没有什么问题,帮忙检查一下?我主要是从其他策略里面调用持仓变化来进行交易,调用的策略是图表交易的,那么这个策略做为控制器能正常运作吗?
VARIABLE:ss=4,kg=0;
cc1:STKINDI(\'if00\',\'bldy.cc\',0,18,-1),NOAXIS;
cc2:STKINDI(\'if00\',\'zddy.cc\',0,2,-1),NOAXIS;
jhc1:STKINDI(\'if00\',\'zddy.hc2\',0,2,-1),NOAXIS;
ls:STKINDI(\'if00\',\'zddy.ls\',0,2,-1),NOAXIS;
input:x(9000,1000,10000,1000);
jhc:jhc1,NOAXIS;
//正常交易
if jhc=0 then BEGIN
if cc1=0 and cc2=0 then BEGIN
tsell(HOLDING>0,HOLDING, mkt);
tSELLSHORT(HOLDING<0,HOLDING,mkt);
end 

if (cc1=0 and cc2>0) or (cc1>0 and cc2=0) then BEGIN
tSELLSHORT(HOLDING<0,HOLDING,Mkt);
tbuy(HOLDING=0,ss,Mkt);
if HOLDING=8 then BEGIN
tsell(1,ss,Mkt);
end 
end 

if (cc1=0 and cc2<0) or (cc1<0 and cc2=0) then BEGIN
tsell(HOLDING>0,HOLDING,Mkt);
tBUYSHORT(HOLDING=0,ss,Mkt);
if HOLDING=-8 then BEGIN
tSELLSHORT(1,4,Mkt);
end 
end 

if (cc1>0 and cc2<0) or (cc1<0 and cc2>0) then BEGIN
tsell(HOLDING>0,HOLDING,Mkt);
tSELLSHORT(HOLDING<0,HOLDING,Mkt);
end 

if cc1>0 and cc2>0 then BEGIN
tSELLSHORT(HOLDING<0,HOLDING,mkt);
tbuy(HOLDING=0,ss*2,Mkt);
if HOLDING=4 then BEGIN
tbuy(1,ss,Mkt);
end
end 

if cc1<0 and cc2<0 then BEGIN
tsell(HOLDING>0,HOLDING,Mkt);
tBUYSHORT(HOLDING=0,ss*2,Mkt);
if HOLDING=-4 then BEGIN
tBUYSHORT(1,ss,Mkt);
end
end 
end 


--  作者:fly
--  发布时间:2014/4/14 10:06:46
--  
你这个后台程序,能取到正确的HOLDING值?
--  作者:bob
--  发布时间:2014/4/14 10:07:48
--  
那应该用什么?tholding?
--  作者:bob
--  发布时间:2014/4/14 10:11:24
--  
VARIABLE:ss=4,kg=0;
cc1:STKINDI(\'if00\',\'bldy.cc\',0,18,-1),NOAXIS;
cc2:STKINDI(\'if00\',\'zddy.cc\',0,2,-1),NOAXIS;
jhc1:STKINDI(\'if00\',\'zddy.hc2\',0,2,-1),NOAXIS;
ls:STKINDI(\'if00\',\'zddy.ls\',0,2,-1),NOAXIS;
input:x(9000,1000,10000,1000);
jhc:jhc1,NOAXIS;
//正常交易
if jhc=0 then BEGIN
if cc1=0 and cc2=0 then BEGIN
tsell(tHOLDING>0,tHOLDING, mkt);
tSELLSHORT(tHOLDING<0,tHOLDING,mkt);
end 

if (cc1=0 and cc2>0) or (cc1>0 and cc2=0) then BEGIN
tSELLSHORT(tHOLDING<0,tHOLDING,Mkt);
tbuy(tHOLDING=0,ss,Mkt);
if tHOLDING=8 then BEGIN
tsell(1,ss,Mkt);
end 
end 

if (cc1=0 and cc2<0) or (cc1<0 and cc2=0) then BEGIN
tsell(tHOLDING>0,tHOLDING,Mkt);
tBUYSHORT(tHOLDING=0,ss,Mkt);
if tHOLDING=-8 then BEGIN
tSELLSHORT(1,4,Mkt);
end 
end 

if (cc1>0 and cc2<0) or (cc1<0 and cc2>0) then BEGIN
tsell(tHOLDING>0,tHOLDING,Mkt);
tSELLSHORT(tHOLDING<0,tHOLDING,Mkt);
end 

if cc1>0 and cc2>0 then BEGIN
tSELLSHORT(tHOLDING<0,tHOLDING,mkt);
tbuy(tHOLDING=0,ss*2,Mkt);
if tHOLDING=4 then BEGIN
tbuy(1,ss,Mkt);
end
end 

if cc1<0 and cc2<0 then BEGIN
tsell(tHOLDING>0,tHOLDING,Mkt);
tBUYSHORT(tHOLDING=0,ss*2,Mkt);
if tHOLDING=-4 then BEGIN
tBUYSHORT(1,ss,Mkt);
end
end 
end 

--  作者:bob
--  发布时间:2014/4/14 10:11:56
--  
都改成THOLDING  应该可以了吧?还有些什么问题?
--  作者:lichenghu
--  发布时间:2014/4/14 10:21:08
--  
 后台全局变量使用EXTGBDATASET,variable后台在取值上存在问题
--  作者:uranusmoon
--  发布时间:2014/4/14 20:29:08
--  
版主,请详细说明一下,后台程序用variable全局变量有什么问题。目前正被类似问题困扰。我在后台程序中用到全局变量数组,不用variable类型还能怎么解决?
--  作者:jinzhe
--  发布时间:2014/4/15 9:07:01
--  

variable是图表上的全局变量赋值,计算方式取决于K线图上全局变量的理论计算数据,

后台要用extgbdataset


--  作者:uranusmoon
--  发布时间:2014/4/16 18:38:41
--  
用GLOBALVARIABLE可以吗,extgbdataset容易不同策略之间冲突。
--  作者:jinzhe
--  发布时间:2014/4/17 8:54:41
--  

也可以,但是不要用图表的全局变量函数