以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=63029) |
-- 作者:qinhanbo -- 发布时间:2014/3/24 8:54:47 -- 混合模式问题 老师好!我想在已经开发完成的突破模型中加入震荡交易,思路是:突破模型完成平仓后(不论平多还是平空),即转入震荡模式;转入震荡模式后,只允许做3次交易(不论多空);震荡模式结束标准:震荡模式交易达到3次或者突破模式出现开仓信号。以上思路尝试了好几天都无法实现,麻烦老师帮忙指引。
手数:=(CASH(0)/(CLOSE*300*0.15))*0.5; 突破单平多:SELL(突破单平多条件,HOLDING,MARKET); 突破单开多:BUY(突破单开多条件,手数,MARKET); 震荡市开多:BUY( 震荡市开多条件,震荡手数1,MARKET); 震荡市开空:BUYSHORT( 震荡市开空条件 ,震荡手数1,MARKET); |
-- 作者:jinzhe -- 发布时间:2014/3/24 9:18:00 -- 你尝试的写法是怎么写的? |
-- 作者:qinhanbo -- 发布时间:2014/3/24 9:34:11 -- //交易系统 手数:=(CASH(0)/(CLOSE*300*0.15))*0.5; 震荡市开多:BUY( 震荡市开多条件,震荡手数1,MARKET); END 突破单开多:BUY(突破单开多条件,手数,MARKET); END |
-- 作者:qinhanbo -- 发布时间:2014/3/24 9:38:32 -- 我不知道控制语句用的对不对,另外如何用全局变量来分别记录两种模式的交易信号,我学习时间不长,实盘资金等着这个模型呢。急 |
-- 作者:jinzhe -- 发布时间:2014/3/24 10:20:06 -- 思路是:突破模型完成平仓后(不论平多还是平空),即转入震荡模式;转入震荡模式后,只允许做3次交易(不论多空);震荡模式结束标准:震荡模式交易达到3次或者突破模式出现开仓信号。 variable:n=0; variable:m=0;
if 突破单平多条件 and n=0 and holding>0 then begin 平多语句; n:=1; end
if 突破单平空条件 and n=0 and holding<0 then begin 平空语句; n:=1; end
if 突破单开多条件 and holding=0 then begin 开多语句; n:=0; end
if 突破单开空条件 and holding=0 then begin 开空语句; n:=0; end
if n=1 and holding=0 and m<3 and 震荡单开多条件 then begin 开多语句; m:=m+1; end
if n=1 and holding=0 and m<3 and 震荡单开空条件 then begin 开空语句; m:=m+1; end
if m=3 then begin n:=0; M:=0; end
|
-- 作者:qinhanbo -- 发布时间:2014/3/24 11:34:51 -- 谢谢!我试试看 |
-- 作者:qinhanbo -- 发布时间:2014/3/24 14:20:36 -- 发现两个问题 1、要去掉第一、第二段的n=0,信号才会正常出现,否则历史图表中只显示一次开仓信号,别的信号都没有。 2、震荡市的开仓信号是用突破单的平仓条件进行平仓的,不是震荡单的平仓条件,是漏掉了吗? |
-- 作者:jinzhe -- 发布时间:2014/3/24 14:27:33 -- 1随你的需求改 2没有必要的,没涉及到全局变量的就不写了 |
-- 作者:qinhanbo -- 发布时间:2014/3/26 13:49:48 -- 老师,我用你给的语法改写了自己的模型,发现震荡模式没有平仓信号,后续符合开仓条件的信号也就出不来了。我的思路可能表达不完整,应该是震荡模式3次交易结束后等待突破模式信号,如此反复循环。下面是我写的语句,麻烦帮看一下怎么改。 //交易系统 手数:=(CASH(0)/(CLOSE*300*0.15))*0.5; variable:n=0;//突破--震荡标志,0突破,1震荡 if n=0 and 突破单平空条件 and holding<0 then begin
if n=1 and holding=0 and m<3 and 震荡单开多条件 then begin if n=1 and holding=0 and m<3 and 震荡单开空条件 then begin if holding>0 then begin if holding<0 then begin if m=3 then begin n:=0; M:=0; end
|
-- 作者:jinzhe -- 发布时间:2014/3/26 13:57:36 -- 这个我只能帮你到这里了,剩下的就看你自己对全局变量的理解了
m是震荡的开仓次数 n是突破的标记,=1表示已经突破平仓过,=0表示还没有 |