获取合约代码前两位方法?

// 获取合约代码前两位

       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中没有这函数?如何改谢谢?请大神帮助,谢谢。

有获取指定合约的最新价格的方法吗
关于快速找到前一日指定周期的方法
请问怎么获取历史数据中bar所在的合约代码?
请问如何获取某品种持仓量最大的合约代码?
获取主力合约
获取所有合约的问题
获取品种当前的所有合约数据
连续合约上获取主力合约实时持仓
主力合约的tick数据获取
获取合约属性失败

试试这个DEMO

String StrSource(\"MO2405-P-5100\");

String TempStr(\"\");

String TempSymbol(\"\");

String TempTime(\"\");

Integer i;

If (FindFirstOf(StrSource, \"P\") >= 0)

Print(\"PutOption\");

Else

Print(\"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;  // 燃料油禁止持仓。据你的帮助通过了编译。谢谢了

有的合约

代码只有一个字母

也许你现在都是两个字母用不到

尽量考虑通用算法