Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共14 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:能不能帮助编写一个远月和近月价差的选股公式?

1楼
lqsh 发表于:2021/1/15 16:47:26
选股范围主力合约
远月合约价格高于当前主力合约的归入上涨板块

远月合约价格低于当前主力合约的归入下跌板块
2楼
FireScript 发表于:2021/1/15 17:21:10
远月合约是你自己指定的,还是有具体确定的规则来判定,如果有请说明下判断逻辑。
[此贴子已经被作者于2021/1/15 17:21:29编辑过]
3楼
lqsh 发表于:2021/1/16 14:14:42
远月合约里头持仓量最大的就可以了。
4楼
lqsh 发表于:2021/1/16 14:16:45
远月合约选择几个远期里头持仓量最大的。
5楼
lqsh 发表于:2021/1/25 11:48:12
公式能编出来吗?
6楼
lqsh 发表于:2021/1/26 16:23:53
近月合约和远月合约选持仓量最大的比就可以。
7楼
lqsh 发表于:2021/1/26 16:26:32
近月合约和远月合约选持仓量最大的比就可以。也就是按照期限结构Contango和Backwardation分为两个大板块就可以了。
8楼
FireScript 发表于:2021/1/26 16:41:04
所以是以主力合约所在月份后面 持仓量最大月份作为远月?如果是这样的话,就要写循环遍历了。但是还要构建后面月份合约的代码字符串。会比较麻烦。我试试看。
9楼
FireScript 发表于:2021/1/28 14:27:44
//不可以用在原油上,原油代码特殊。
//只能在连续合约上操作
VARIABLE:codeArr[12]:='',optArr[12]:=0,sortArr[4]:=0;

code:=DYNAINFO2(210,STKLABEL);//连续对应的具体品种代码
index:STRTONUM(STRRIGHT(code,2));//主力品种月份的数字
STR:=STRTRIMRIGHT( code, '0123456789');//获取品种代码前缀



//生成每个月的合约代码 并存入到数组中。这个只在第一个K上运行下。字符串相关操作比较消耗资源,没必要每个分笔来都进行一次。
if BARPOS=1 then
begin
for i=index+1 to 12 do //从主力开始往后的月份,这其中有些月份是没有对应合约的,这里不做处理。因为需要下标和月份对应。
begin
codeArr[i]:= STRCAT(str,STRRIGHT(NUMTOSTR(i/100,2),2));   
end
end

isAllhas:=0;
if ISLASTBAR then //将昨日成交量填充到数组里面去
begin
for j=index+1 to 12 do
begin
code:=codeArr[j];//code就是合约代码   
temp:=CALLSTOCK(code,vtOPENINT,6,0);
if temp then isAllhas:=1;//有些垃圾合约除了主力都没有数据。所以这里判断下,如果除了主力都没有数据,那么这个变量值为0。
optArr[j]:=if(not(temp),0,temp);
end       
end


//利用线性函数取最大持仓量的索引(就是月份数值)

if ISLASTBAR and isAllhas=1  then  Maxindex:MFAMAX(optArr,12);






图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
当前主力之后最大持仓量的合约就是下图的04:


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

基本逻辑就是这样了。剩下的就是拼接处一个品种合约 然后调用下数据做下判断。你理解了上面的代码这个问题也不大。你自行尝试下吧。

10楼
lqsh 发表于:2021/2/9 16:25:50
//不可以用在原油上,原油代码特殊。
//只能在连续合约上操作
VARIABLE:codeArr[12]:='',optArr[12]:=0,sortArr[4]:=0;

code:DYNAINFO2(210,STKLABEL),nodraw;//连续对应的具体品种代码????210事啥意思??
index:STRTONUM(STRRIGHT(code,2)),nodraw;//主力品种月份的数字
STR:STRTRIMRIGHT( code, '0123456789'),nodraw;//获取品种代码前缀



//生成每个月的合约代码 并存入到数组中。这个只在第一个K上运行下。字符串相关操作比较消耗资源,没必要每个分笔来都进行一次。
if BARPOS=1 then
begin
for i=index+1 to 12 do //从主力开始往后的月份,这其中有些月份是没有对应合约的,这里不做处理。因为需要下标和月份对应。
begin
codeArr[i]:= STRCAT(str,STRRIGHT(NUMTOSTR(i/100,2),2));   
end
end

isAllhas:=0;
if ISLASTBAR then //将昨日成交量填充到数组里面去
begin
for j=index+1 to 12 do
begin
code:=codeArr[j];//code就是合约代码   
temp:=CALLSTOCK(code,vtOPENINT,6,0);
if temp then isAllhas:=1;//有些垃圾合约除了主力都没有数据。所以这里判断下,如果除了主力都没有数据,那么这个变量值为0。
optArr[j]:=if(not(temp),0,temp);
end       
end


//利用线性函数取最大持仓量的索引(就是月份数值)

if ISLASTBAR and isAllhas=1  then  Maxindex:MFAMAX(optArr,12),nodraw;
//if ISLASTBAR and isAllhas=1  then  Maxindex:STRRIGHT(NUMTOSTR(MFAMAX(optArr,12)/100,2),2);
cdmvol:=STRCAT(str,05),nodraw;//主力之后成交量最大合约代码
cx:"cdmvol$CLOSE",nodraw;//主力之后成交量最大合约收盘价 
共14 条记录, 每页显示 10 条, 页签: [1] [2]


Powered By Dvbbs Version 8.3.0
Processed in .51563 s, 3 queries.