以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 新手试写,模型遇到问题 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=144182) |
-- 作者:sxt2339753 -- 发布时间:2016/12/6 15:48:00 -- 新手试写,模型遇到问题 大概思路是两个模型之间近期波动规律的价差套利,这两天看了看帮助说明试写了下,可是其中有不少的问题不甚了解,望指正! 可能其中有不少语法错误,但是大概的思路能体现出来,主要是A1705和M1705的5分钟周期套利 有什么不对的,希望大神纠正以下 Input:N(50,1,100,1),M(50,1,100,1),S(2,2,5,0.1),SS(2,1,5,0.2),CA(0,0,10,1) //N线性计算周期,M标准差计算周期,S标准差框架,SS波动速度,CA标准差绝对值 //定义A,B两个品种的合约 A合约:\'AY05\'; B合约:\'M05\'; A5MIN收盘:=stkindi(\'A合约\',\'MACD.CC\',0,2,0);//A的五分钟周期当前收盘 B5MIN收盘:=CALLSTOCK(\'B合约\',VTCLOSE,2,0);//B的五分钟周期当前收盘 A5SEC收盘:=CALLSTOCK(\'A合约\',VTCLOSE,23,5);//A的五秒钟周期当前收盘 B5SEC收盘:=CALLSTOCK(\'B合约\',VTCLOSE,23,5);//B的五秒钟周期当前收盘 VARIABLE:A收盘[100]=0,B收盘[100]=0; FOR i=1 to 100 do A收盘[i]=CALLSTOCK(\'A合约\',VTCLOSE,2,-i); FOR i=1 to 100 do B收盘[i]=CALLSTOCK(\'B合约\',VTCLOSE,2,-i);//定义A/B 100个 5分钟周期的收盘价 A:=COVAR(A收盘 ,\'B收盘\' ,N )/VARP(\'B收盘\',N); B:=INTERCEPT(A收盘,\'B收盘\',N); PEARSONAB:=PEARSON(A收盘,B收盘,N);//定义线性回归系数以及pearson相关,A赋值给Y,B复制给A SNOWCAN:=dynainfo2(34,\'B合约\')*A-B-dynainfo2(28,\'A合约\');//最新残差,B的卖一,A的买一,做多对价差 BNOWCAN:=dynainfo2(28,\'B合约\')*A-B-dynainfo2(34,\'A合约\');//最新残差,A的卖一,B的买一,做空对价差 OLDCAN:=B5MIN收盘*REF(A,1)-REF(B,1)-A5MIN收盘;//前残差 标准差:=STDP(REF(OLDCAN,1),M); 做多条件:=SNOWCAN/标准差<-S AND (SNOWCAN-OLDCAN)/标准差<-SS; 平多条件:=(BNOWCAN-OLDCAN)/标准差>SS OR BNOWCAN*OLDCAN<0;//缺少当前K线开仓后迅速波动 做空条件:=BNOWCAN/标准差>S AND (BNOWCAN-OLDCAN)/标准差>-SS; 平空条件:=(SNOWCAN-OLDCAN)/标准差<-SS OR SNOWCAN*OLDCAN<0;//缺少当前K线开仓后迅速波动 5秒价差:=A5SEC收盘-B5SEC收盘;//5秒价差 IF 做多条件 and every((5秒价差-REF(5秒价差,1))<=0,3) THEN BEGIN TBUY(1,10,MKT,0,0,0,\'A合约\'); TBUYSHORT(1,10,MKT,0,0,0,\'B合约\'); END IF 平多条件 THEN BEGIN TSELL(1,10,MKT,0,0,0,\'A合约\'); TSELLSHORT(1,10,MKT,0,0,0,\'B合约\'); END IF 做空条件 and every((5秒价差-REF(5秒价差,1))>=0,3) THEN BEGIN TBUYSHORT(1,10,MKT,0,0,0,\'A合约\'); TBUY(1,10,MKT,0,0,0,\'B合约\'); END IF 平空条件 THEN BEGIN TSELL(1,10,MKT,0,0,0,\'A合约\'); TSELLSHORT(1,10,MKT,0,0,0,\'B合约\'); END |
-- 作者:jinzhe -- 发布时间:2016/12/6 16:06:01 -- 用户最好讲使用时发生的问题
编译有个问题: A:=COVAR(A收盘 ,\'B收盘\' ,N )/VARP(\'B收盘\',N); B:=INTERCEPT(A收盘,\'B收盘\',N);
这里b收盘不能加单引号 |
-- 作者:sxt2339753 -- 发布时间:2016/12/6 16:32:24 -- 两个问题 1.检测没有问题后 进行回测 但是回测没有开仓,回测数据全部为0 2.//定义A,B两个品种的合约 A合约:\'AY05\'; B合约:\'M05\'; 后边函数引用 A合约 后总是提示”未定义的变量:A合约“而 B合约引用不受限制
|
-- 作者:jinzhe -- 发布时间:2016/12/6 16:37:08 -- 1.回测指的是 交易 ---公式测评? 2.A合约:\'AY05\'; 定义好之后,使用时直接用A合约,不要加单引号 |
-- 作者:sxt2339753 -- 发布时间:2016/12/6 16:46:54 -- B合约不受影响,只提示A未定义变量
|
-- 作者:sxt2339753 -- 发布时间:2016/12/6 16:48:22 -- 回测报告没有开仓 不知道是什么原因
|
-- 作者:jinzhe -- 发布时间:2016/12/6 16:52:18 -- http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=31614&page=3 看不到图,按照上面的方式发图 |
-- 作者:jinzhe -- 发布时间:2016/12/6 16:52:35 -- A合约和B合约就是我讲的原因,编译不一定会回报正确的错误 |
-- 作者:sxt2339753 -- 发布时间:2016/12/7 10:24:52 -- 看起来是 A收盘价 这个定量出错了 导致接下来的A,B无法计算,不知道应该怎么改 [此贴子已经被作者于2016-12-7 10:25:20编辑过]
|
-- 作者:sxt2339753 -- 发布时间:2016/12/7 10:26:32 -- 图片 |