以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 后台交易策略 (http://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 -- 也可以,但是不要用图表的全局变量函数 |