欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 能不能帮助编写一个远月和近月价差的选股公式?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3196人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
lqsh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2021/1/15 16:32:59
能不能帮助编写一个远月和近月价差的选股公式?  发帖心情 Post By:2021/1/15 16:47:26    Post IP:123.139.104.158[只看该作者]

选股范围主力合约
远月合约价格高于当前主力合约的归入上涨板块

远月合约价格低于当前主力合约的归入下跌板块

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/15 17:21:10    Post IP:58.246.57.26[只看该作者]

远月合约是你自己指定的,还是有具体确定的规则来判定,如果有请说明下判断逻辑。
[此贴子已经被作者于2021/1/15 17:21:29编辑过]


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
lqsh
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2021/1/15 16:32:59
  发帖心情 Post By:2021/1/16 14:14:42    Post IP:123.139.104.158[只看该作者]

远月合约里头持仓量最大的就可以了。

 回到顶部
帅哥哟,离线,有人找我吗?
lqsh
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2021/1/15 16:32:59
回复:(FireScript)远月合约是你自己指定的,还是有...  发帖心情 Post By:2021/1/16 14:16:45    Post IP:123.139.104.158[只看该作者]

远月合约选择几个远期里头持仓量最大的。

 回到顶部
帅哥哟,离线,有人找我吗?
lqsh
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2021/1/15 16:32:59
  发帖心情 Post By:2021/1/25 11:48:12    Post IP:123.139.114.250[只看该作者]

公式能编出来吗?

 回到顶部
帅哥哟,离线,有人找我吗?
lqsh
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2021/1/15 16:32:59
远月里头持仓量最大的就可以  发帖心情 Post By:2021/1/26 16:23:53    Post IP:123.139.114.128[只看该作者]

近月合约和远月合约选持仓量最大的比就可以。

 回到顶部
帅哥哟,离线,有人找我吗?
lqsh
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2021/1/15 16:32:59
近月合约和远月合约选持仓量最大的比就可以。  发帖心情 Post By:2021/1/26 16:26:32    Post IP:123.139.114.128[只看该作者]

近月合约和远月合约选持仓量最大的比就可以。也就是按照期限结构Contango和Backwardation分为两个大板块就可以了。

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/26 16:41:04    Post IP:58.246.57.26[只看该作者]

所以是以主力合约所在月份后面 持仓量最大月份作为远月?如果是这样的话,就要写循环遍历了。但是还要构建后面月份合约的代码字符串。会比较麻烦。我试试看。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/28 14:27:44    Post IP:58.246.57.26[只看该作者]

//不可以用在原油上,原油代码特殊。
//只能在连续合约上操作
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
图片点击可在新窗口打开查看

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



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
lqsh
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2021/1/15 16:32:59
帮着改一下,调用选出合约的收盘价为何没输出?  发帖心情 Post By:2021/2/9 16:25:50    Post IP:123.139.113.133[只看该作者]

//不可以用在原油上,原油代码特殊。
//只能在连续合约上操作
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 1 2 下一页