金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 6037|回复: 29

品种代码

[复制链接]

107

主题

813

帖子

813

积分

等级: 免费版

注册:
2022-12-12
曾用名:
发表于 2023-8-10 10:03 来自手机 | 显示全部楼层 |阅读模式
在当前窗口连续合约品种已知当前合约的其他月份,(1—12月都有可能),我需要指定当前品种的上面求出来的其他月份的品种代码。以p:其他月份为例。(p后面是一个固定月份,1—12月中的一个),要用字符串处理这个月份,两位数和一位数都要处理才能对,老师帮我写下代码,我求了,有的品种有问题,知道原因。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-8-10 10:46 | 显示全部楼层
参考这里,其中一部分代码就是在拼接不同月份代码。 对部分合约无效,因为部分品种代码规则不一样。

[PEL] 复制代码
//以下代码对非双年份合约有效(SC,AY,SRY,BUY等是双年份合约)
INPUT:N(4,1,12,1);//需要获取的排序位数,如N=4,默认最终获取前四名的数值结果。
VARIABLE:codeArr[12]:='',volArr[12]:=0,sortArr[N]:=0;//codeArr 品种代码数组;volArr 成交量数组;sortArr 排序结果数组,默认长度是4
STR:=STRTRIMRIGHT( STKLABEL, '0123456789');
 
 
//生成每个月的合约代码 并存入到数组中。这个只在第一个K上运行下。字符串相关操作比较消耗资源,没必要每个分笔来都进行一次。
if BARPOS=1 then
begin
for i=1 to 12 do //默认按照该品种有12个月份的合约。
begin
codeArr[i]:= STRCAT(str,STRRIGHT(NUMTOSTR(i/100,2),2));        
end
end
 
if ISLASTBAR then //将成交量填充到数组里面去. 这里可以自行调整,可以是成交量也可以是其他的什么值,自行选择处理即可。
begin
for j=1 to 12 do
begin
code:=codeArr[j];//code就是合约代码        
vox:=CALLSTOCK(code,vtvol,6,0);
volArr[j]:=if(vox>=0,vox,0);//不活跃品种,获取到的成交量可能是负值,这里处理下确保没有负值。
end               
end
 
 
if ISLASTBAR then //利用线性函数取最大成交量的索引(就是月份数值),每次取值完成后 可以把这个最大值重置为0,这样可以依次获取成交量最大的前几名了。
begin
for j=1 to N do
begin
index:=MFAMAX(volArr,12);
sortArr[j]:=index;
volArr[index]:=0;
 
end
end
 
x1:sortArr[1];//第一的月份
x2:sortArr[2];//第二的月份
x3:sortArr[3];
x4:sortArr[4];
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

107

主题

813

帖子

813

积分

等级: 免费版

注册:
2022-12-12
曾用名:
 楼主| 发表于 2023-8-10 11:01 来自手机 | 显示全部楼层
老师不是这个,我已经自己获取了月份,要引用具体月份的品种。但是获取的月份是不固定的,所以要把获取到的月份的品种代码求出来
回复

使用道具 举报

107

主题

813

帖子

813

积分

等级: 免费版

注册:
2022-12-12
曾用名:
 楼主| 发表于 2023-8-10 11:03 来自手机 | 显示全部楼层
当前品种的获取过来的月份的品种代码。比如当前在纯碱00合约,我获取到的是1,那就要输出sa01的合约代码,进行引用,如果获取的是12,那就要求出sa12的品种代码。这个单双月份要处理下。这个是用字符串处理。我求过了,好像有的品种有问题,
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-8-10 11:25 | 显示全部楼层
拼接单月,或者双月合约 在前面那个代码里也有。
i 就是月份数值,str是品种代码。

STRCAT(str,STRRIGHT(NUMTOSTR(i/100,2),2));     
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

107

主题

813

帖子

813

积分

等级: 免费版

注册:
2022-12-12
曾用名:
 楼主| 发表于 2023-8-10 11:39 来自手机 | 显示全部楼层
好的,我试试
回复

使用道具 举报

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
发表于 2023-8-10 12:18 | 显示全部楼层
技术009 发表于 2023-8-10 11:25
拼接单月,或者双月合约 在前面那个代码里也有。
i 就是月份数值,str是品种代码。

老师看下 为何每个品种都有一个月份不对?现在应该是9月 这个品种 其他月份上面都是9  每个品种都有这个情况

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
发表于 2023-8-10 12:21 | 显示全部楼层
技术009 发表于 2023-8-10 11:25
拼接单月,或者双月合约 在前面那个代码里也有。
i 就是月份数值,str是品种代码。

另外 我这样调用
STR:=STRTRIMRIGHT( STKLABEL, '0123456789');
次主力月:"选股次主力合约.持仓次主力月";
次主力代码:STRCAT(STR,STRRIGHT(NUMTOSTR(次主力月/100,2),2));
上面的 次主力月是获取的那边选出的月份
还是说可以直接调用那个代码获取出来的次主力代码呢/
下面是我想直接获取代码 但是不对 如果可以的话老师指导下。让我在调用指标里面直接获取到次主力的代码;
if ISLASTBAR then //利用线性函数取最大成交量的索引(就是月份数值),每次取值完成后 可以把这个最大值重置为0,这样可以依次获取成交量最大的前几名了。
begin
for j=1 to N do
begin
index:=MFAMAX(volArr,12);
codeArr[j]:=index;
volArr[index]:=0;

end
end
if ISLASTBAR then
begin
主力代码:=codeArr[1];//第一的月份
次主主力代码:NUMTOSTR(codeArr[2],2);//第二的月份
END
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-8-10 13:01 | 显示全部楼层
本帖最后由 技术009 于 2023-8-10 13:02 编辑

麻烦明确描述你的需求。我不知道你到底要算什么。算次主力?上面代码是完整可用。除非你本地数据有异常。
我那个代码 劳烦你先理解下里面的逻辑。里面月份的数值,品种的代码 全部都有获取的方式。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
发表于 2023-8-10 13:19 | 显示全部楼层
技术009 发表于 2023-8-10 10:46
参考这里,其中一部分代码就是在拼接不同月份代码。 对部分合约无效,因为部分品种代码规则不一样。

[mw ...

次主力代码:codeArr[持仓次主力月];  这个在被调用指标里面  我怎么在调用指标里面使用它 引用过来要怎么处理
我在被调用指标里面使用它是对的  引用过来不会处理就是错的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-7-28 22:53 , Processed in 0.120699 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表