获取合约代码前两位方法?
// 获取合约代码前两位 symbolCode = SubStr(ContractCode,0,2); // 设置品种持仓倍数(根据交割月规则) LotMultiple = 1; // 默认值 if(symbolCode == "RB" || symbolCode == "WR" || symbolCode == "HC") LotMultiple = 30; // 螺纹钢/线材/热卷 else if(symbolCode == "CU" || symbolCode == "AL" || symbolCode == "ZN" || symbolCode == "PB") LotMultiple = 5; // 铜/铝/锌/铅 else if(symbolCode == "FU") LotMultiple = 0; // 燃料油禁止持仓。ContractCode。TB中没有这函数?如何改谢谢?请大神帮助,谢谢。
试试这个DEMOString StrSource(\"MO2405-P-5100\");String TempStr(\"\");String TempSymbol(\"\");String TempTime(\"\");Integer i;If (FindFirstOf(StrSource, \"P\") >= 0)Print(\"PutOption\");ElsePrint(\"CallOption\");i = FindFirstOf(StrSource, \"-\");StrSource = Left(StrSource, i);Print(StrSource);TempStr = Mid(StrSource, 1, 1);If(TempStr >= \"0\" && TempStr <= \"9\"){TempSymbol = Left(StrSource, 1);Print(\"Symbol: \" + TempSymbol);TempTime = Right(StrSource, Len(StrSource) - 1);Print(\"Time: \" + TempTime);}Else{TempSymbol = Left(StrSource, 2);Print(\"Symbol: \" + TempSymbol);TempTime = Right(StrSource, Len(StrSource) - 2);Print(\"Time: \" + TempTime);}
回复:If(TempStr >= \"0\" && TempStr <= \"9\"){TempSymbol = Left(StrSource, 1);Print(\"Symbol: \" + TempSymbol);TempTime = Right(StrSource, Len(StrSource) - 1);Print(\"Time: \" + TempTime);}Else{TempSymbol = Left(StrSource, 2);Print(\"Symbol: \" + TempSymbol);TempTime = Right(StrSource, Len(StrSource) - 2);Print(\"Time: \" + TempTime);}大概意思就是类似的主要是取第二个字符判断是否数字如果是数字品种代码就取一位如果不是数字品种代码就是两位
StringSplit 可以对symbol字符串自己切割
回复:请帮把上面代码改一下。因我不会改
回复:你这上面的不会是AI写的吧
回复:https://tbq3.tbquant.net/helper?product_id=991&keyword=1122&content_id=377&selectedkey=1244&type=article 我更建议用left
回复:感觉最近都是DeepSeek用户🤣
回复:是的,但它对我这个不太懂写代码的人是很好的帮助,它写的经慢调式,有时能实现自己的想法。
回复:这个AI写的不能说很差吧,但也就是毫无关系的样子
回复:Vars
String firstTwoLetters(""); // 存储提取的前两位字母
Events
OnInit()
{
// 初始化事件,可以在此设置数据源和其他初始化操作
}
OnBar(ArrayRef<Integer> indexs)
{
firstTwoLetters = Left(Symbol(), 2);
Print("提取的前两位字母: " + firstTwoLetters);
}让AI写了一下
回复:symbolPrefix =Left(Symbol(), 2); Print("提取的前两位字母: " + symbolPrefix); // 设置品种持仓倍数(根据图片中的手写笔记规则) LotMultiple = 1; // 默认值 if(symbolPrefix == "RB") LotMultiple = 30; // 螺纹钢 else if(symbolPrefix == "CU") LotMultiple = 5; // 铜 else if(symbolPrefix == "FU") LotMultiple = 0; // 燃料油禁止持仓。据你的帮助通过了编译。谢谢了
回复:有的合约代码只有一个字母也许你现在都是两个字母用不到尽量考虑通用算法