商品期货量化用表 -- 合约代码

Author: 小小梦, Created: 2018-02-22 13:57:40, Updated: 2021-09-24 14:54:04

合约代码

合约代码 一手保证金 (程序粗略计算) 商品名称 备注
c1805 884.5 玉米1805
cs1805 1033 玉米淀粉1805
RM805 1170.5 菜粕5月
TA805 1351.5 PTA5月
m1805 1418 豆粕1805
FG805 1481 玻璃5月
b1805 1653 豆二1805
v1805 1686.25 聚氯乙烯1805
SF805 1793.5 硅铁5月
a1805 1807.5 黄大豆1号1805
SM805 1918 锰硅5月
MA805 2060.1000000000004 甲醇5月
bu1805 2072 bu1805 沥青
rb1805 2302.2 rb1805 螺纹钢
hc1805 2319 hc1805 卷轧板
WH805 2605 强麦5月
p1805 2666 棕榈油1805
pp1805 2749.5 聚丙烯1805
l1805 2866.5 聚乙烯1805
y1805 2951 豆油1805
SR805 3034.5 白砂糖805
ZC805 3048 煤5月
jd1805 3049.6 鸡蛋1805
LR805 3087 晚籼5月
OI805 3343 菜油5月
i1805 3489.5000000000005 铁矿石1805
al1805 3620 al1805
CF805 3773.75 棉花5月
jm1805 3858 焦煤1805 焦煤
ag1805 4447.2 ag1805
pb1805 4762.5 pb1805
sn1805 6960 sn1805
ni1805 7172 ni1805
zn1805 7494 zn1805
j1805 10405 冶金焦炭1805
ru1805 11368 ru1805 橡胶
cu1805 21044 cu1805

套利合约代码

网上摘录:

报价方式:“套利代码” + “A合约 &B合约” 套利指令价格= A合约价格 – B合约价格(A合约价格小于B合约时为负bai数) 大商所用 “SP”表示跨期套利交易,若指令买进“SP m1809&m1901”即代表买进“m1809”合约同时卖出“m1901”合约,买卖数量相等;若卖出“SP m1809&m1901”即代表卖出“m1809”合约同时买进“m1901”合约,买卖数量相等。 用“SPC”表示跨品种套利交易,若指令买进“SPC y1809&p1809”即代表买进“y1809”合约同时卖出“p1809”合约,买卖数量相等;若卖出“SPC y1809&p1809”即代表卖出“y1809”合约同时买进“p1809”合约,买卖数量相等。 例如,交易者申报指令为“买进2手SP m1809&m1901,限价-100元”,意味着前一合约价必须低于后一合约价100元时才能成交。下列最终成交回报都符合要求:前一合约买进成交2手,成交价3715元,后一合约卖出成交2手,成交价3815元,差价为-100元。 同理,郑商所用“SPD”表示跨期套利交易,若指令买进“SPD CF809&CF901”即代表买进“CF809”合约同时卖出“CF901”合约,买卖数量相等;若卖出“SPD CF809&CF901”即代表卖出“CF809”合约同时买进“CF901”合约,买卖数量相等。 用“IPS”表示跨品种套利交易,若指令买进“IPS SF809&SM809”即代表买进“SF809”合约同时卖出“SM809”合约,买卖数量相等;若卖出“IPS SF809&SM809”即代表卖出“SF809”合约同时买进“SM809”合约,买卖数量相等。

通过接口查询

其它只知道 产品名字的,可以用以下代码查询,例如 红枣,不知道他的代码是多少,但是知道叫“红枣”这个名字。

function main(){
    var productsForFind = null
    while(true){
        if(exchange.IO("status")){         
            LogStatus(_D(), "已经连接CTP !")     
            exchange.IO("products").forEach(function(product) {
                Log(product)
                if (product.ProductName == "红枣") {    // 这里设置 要查的 名字。
                    Log(product, "#FF0000")
                    productsForFind = product
                }
            })
            break
        } else {
            LogStatus(_D(), "未连接CTP !")
        }
        Sleep(1000)
    }
    
    Log(productsForFind, "##FF0000")
}

查询结果:

{
	"ProductClass": 49,
	"VolumeMultiple": 5,
	"PriceTick": 5,
	"MaxLimitOrderVolume": 1000,
	"MaxMarketOrderVolume": 200,
	"MinLimitOrderVolume": 1,
	"CloseDealType": 49,
	"MinMarketOrderVolume": 1,
	"ExchangeProductID": "",
	"UnderlyingMultiple": 1,
	"PositionDateType": 50,
	"TradeCurrencyID": "CNY",
	"MortgageFundUseRange": 48,
	"ProductID": "CJ",
	"ProductName": "红枣",
	"ExchangeID": "CZCE",
	"PositionType": 50
}

ProductID 属性值就是合约代码。

查询期权

function main(){
    var productsForFind = null
    while(true){
        if(exchange.IO("status")){         
            LogStatus(_D(), "已经连接CTP !")     
            var ret = exchange.IO("instruments")
            ret.forEach(function(product) {
                // Log(product)
                // 这里设置要查的名字,i铁矿石合约,或者IO合约
                if (product.InstrumentName.indexOf("i") != -1 && (product.InstrumentName.indexOf("P") != -1 || product.InstrumentName.indexOf("C") != -1)) { 
                    Log(product, "#FF0000")
                    productsForFind = product
                }
            })
            break
        } else {
            LogStatus(_D(), "未连接CTP !")
        }
        Sleep(1000)
    }
    
    Log(productsForFind, "#FF0000")
}

img


More

lwc87 我是从文华转来用FMZ的,但是没找到FMZ标准套利的代码,想麻烦问下FMZ支持标准套利吗?代码怎么查询呢?

小小梦 回测不支持套利合约,或者看下是不是时间范围选的不匹配。

lwc87 我在开盘时间通过IO函数取得了合约列表了,但是在回测时输入合约代码却显示订阅合约失败,比如合约SPD TA104&TA110,这个是什么原因呢?

小小梦 是的,这些函数接口回测不支持,因为这些数据是要实盘交易所给的,所以只能实盘的时候获取,并且只能开盘时间才能连得上期货公司服务器。常用的合约ID都在上面。

lwc87 老师,看文档要求说这个函数要在实盘中才行,这里没理解,是在开盘时间吗?还是必须在机器人里才行?我用回测想看下合约输出不了呢

小小梦 指的是套利合约么? 所有合约都可以查询出来 ``` exchange.IO("instruments"); ``` https://www.fmz.com/api#io%E5%87%BD%E6%95%B0%EF%BC%88%E5%95%86%E5%93%81%E6%9C%9F%E8%B4%A7%E6%89%A9%E5%B1%95%EF%BC%89