//------------------------------------------------------------------------
// 简称: A2025_6_4
// 名称: 期权基础数据读写
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
Vars
Dic<String> dic_string("TB_CP_Options");
Array<String> str;
Array<String> str1;
String str2;
String str3;
String str4;
Array<Integer> id1;
Array<String> symbols;
Array<String> symbols1;
Array<String> symbols2;
Events
OnInit()
{
StringSplit(MainSymbol,".",str1);//获取交易所后面代码
str2=SymbolType()+"."+str1[1];
GetDicSymbols(dic_string,symbols);
GetSymbols(str2,Enum_CategoryOptions,symbols); //获取该品种所有的期权合约
GetSymbols(str2,Enum_CategoryFutures,symbols1); //获取该品种所有的期货合约
ArraySort(symbols,True); //一维数组排序,升序。
ArraySort(symbols1,True);
str3=symbols[1]; //取出第一个期权合约
str4=Mid(str3,0,6)+"."+str1[1]; //取出最近可交易期权的期货月份
GetSymbols(str4,Enum_CategoryOptions,symbols);
SubscribeBar(str4,"1m",Data0.BeginDateTime(),Data0.endDateTime(),Enum_Data_RolloverBackWard()); //订阅最近一个月的期货标的
Print("str4"+str4);
//Print("GetSymbols:"+TextArray(symbols1)); //在控制台输出期货合约品种
Print("GetSymbols:"+TextArray(symbols)); //在控制台输出期权合约品种
}
OnBar(ArrayRef<Integer> indexs)
{
}
请问一下,我已经把这些筛选出来了,有下面三个问题:1.要怎么才能订阅最近一个月的平值期权的附件几档呢,2.或者是否可以把所有的都订阅了,然后在oninit里面赛选,如果不合格的删除,3.或者怎么才能在oninit里面知道订阅过后图层的数据(比如图中我想知道rb2507的收盘价应该怎么获取)。
每天ATM甚至日内ATM都是动态的
所以你的逻辑再思考一下
1.你说你筛选出来了?那你直接对应订阅合约,订阅平值也需要自己计算
2.oninit中没有数据,onready域才开始有数据
3.非订阅的情况获取数据,可以有gettick
谢谢,已经弄好了