输入/搜索内容
欢迎使用优宽量化交易平台
编程语言
JavaScript
TypeScript
Python
C++
My语言(麦语言)
PINE语言
Blockly可视化
Workflow工作流
支持的协议
密钥安全性
实盘
策略库
托管者
部署托管者
一键租用托管者
手动部署托管者
托管者操作注意事项
全局指定IP地址
命令行版本托管者程序的参数
实盘数据迁移
托管者监控
交易所
策略编辑器
回测系统
策略入口函数
策略框架与API函数
模板类库
策略参数
交互控件
商品期货
期权交易
股票证券
C++策略编写说明
JavaScript策略编写说明
内置库
扩展API接口
MCP 服务
交易终端
数据探索
Alpha因子分析工具
调试工具
远程编辑
完整策略的导入与导出
多语言支持
实盘、策略分组
实盘展示
策略分享与出租
实盘消息推送
实盘报错、异常退出的常见原因
交易所特殊说明、兼容记录

指定数据源地址,例如:http://120.24.2.20:9090/data。自定义数据源服务程序使用Golang编写:

golang
package main import ( "fmt" "net/http" "encoding/json" ) func Handle (w http.ResponseWriter, r *http.Request) { // e.g. set on backtest DataSourse: http://xxx.xx.x.xx:9090/data // r.URL: /data?custom=0&depth=20&detail=true&eid=Futures_CTP&from=1719745260&period=60000&round=true&symbol=FUTURES_CNY.MA501&to=1720281600&trades=0 fmt.Println("request:", r) // response defer func() { // response data /* e.g. data { "detail": { "alias": "MA501", "baseCurrency": "FUTURES", "basePrecision": 1, "contractType": "MA501", "eid": "Futures_CTP", "info": { "CombinationType": 48, "CreateDate": 20240116, "DeliveryMonth": 1, "DeliveryYear": 1501, "EndDelivDate": 20250114, "ExchangeID": "CZCE", "ExchangeInstID": "MA501", "ExpireDate": 20250114, "InstLifePhase": 49, "InstrumentID": "MA501", "InstrumentName": "甲醇1月", "IsTrading": 1, "LongMarginRatio": 0.08, "MaxLimitOrderVolume": 1000, "MaxMarginSideAlgorithm": 48, "MaxMarketOrderVolume": 200, "MinLimitOrderVolume": 1, "MinMarketOrderVolume": 1, "OpenDate": 20240116, "OptionsType": 0, "PositionDateType": 50, "PositionType": 50, "PriceTick": 1, "ProductClass": 49, "ProductID": "MA", "ShortMarginRatio": 0.08, "StartDelivDate": 0, "StrikePrice": 0, "UnderlyingInstrID": "", "UnderlyingMultiple": 1, "VolumeMultiple": 10 }, "marginCurrency": "CNY", "marginLevel": 12, "maxNotional": 10000000, "maxQty": 1000, "minNotional": 1, "minQty": 1, "priceTick": 1, "quoteCurrency": "CNY", "quotePrecision": 0, "symbol": "MA501", "volumeTick": 1 }, "schema": ["time", "open", "high", "low", "close", "vol", "position"], "data": [ [1719795600000, 2632, 2633, 2621, 2625, 13070, 1720510], // 2024-07-01 09:00:00 [1719795660000, 2625, 2625, 2621, 2623, 4280, 1720940], // 2024-07-01 09:01:00 [1719795720000, 2623, 2626, 2622, 2622, 5320, 1722310], // 2024-07-01 09:02:00 [1719795780000, 2622, 2625, 2620, 2625, 3480, 1722160], [1719795840000, 2624, 2624, 2622, 2623, 2220, 1723150], [1719795900000, 2623, 2624, 2620, 2620, 3080, 1722840], [1719795960000, 2621, 2622, 2620, 2620, 3090, 1723850] ] } */ // /* 模拟级Tick ret := map[string]interface{}{ "detail": map[string]interface{}{ "alias": "MA501", "baseCurrency": "FUTURES", "basePrecision": 1, "contractType": "MA501", "eid": "Futures_CTP", "info": map[string]interface{}{ "CombinationType": 48, "CreateDate": 20240116, "DeliveryMonth": 1, "DeliveryYear": 1501, "EndDelivDate": 20250114, "ExchangeID": "CZCE", "ExchangeInstID": "MA501", "ExpireDate": 20250114, "InstLifePhase": 49, "InstrumentID": "MA501", "InstrumentName": "甲醇1月", "IsTrading": 1, "LongMarginRatio": 0.08, "MaxLimitOrderVolume": 1000, "MaxMarginSideAlgorithm": 48, "MaxMarketOrderVolume": 200, "MinLimitOrderVolume": 1, "MinMarketOrderVolume": 1, "OpenDate": 20240116, "OptionsType": 0, "PositionDateType": 50, "PositionType": 50, "PriceTick": 1, "ProductClass": 49, "ProductID": "MA", "ShortMarginRatio": 0.08, "StartDelivDate": 0, "StrikePrice": 0, "UnderlyingInstrID": "", "UnderlyingMultiple": 1, "VolumeMultiple": 10, }, "marginCurrency": "CNY", "marginLevel": 12, "maxNotional": 10000000, "maxQty": 1000, "minNotional": 1, "minQty": 1, "priceTick": 1, "quoteCurrency": "CNY", "quotePrecision": 0, "symbol": "MA501", "volumeTick": 1, }, "schema": []string{"time", "open", "high", "low", "close", "vol", "position"}, "data": []interface{}{ []int64{1719795600000, 2632, 2633, 2621, 2625, 13070, 1720510}, []int64{1719795660000, 2625, 2625, 2621, 2623, 4280, 1720940}, []int64{1719795720000, 2623, 2626, 2622, 2622, 5320, 1722310}, []int64{1719795780000, 2622, 2625, 2620, 2625, 3480, 1722160}, []int64{1719795840000, 2624, 2624, 2622, 2623, 2220, 1723150}, []int64{1719795900000, 2623, 2624, 2620, 2620, 3080, 1722840}, []int64{1719795960000, 2621, 2622, 2620, 2620, 3090, 1723850}, }, } // */ /* 实盘级Tick ret := map[string]interface{}{ "detail": map[string]interface{}{ "alias": "MA501", "baseCurrency": "FUTURES", "basePrecision": 1, "contractType": "MA501", "eid": "Futures_CTP", "info": map[string]interface{}{ "CombinationType": 48, "CreateDate": 20240116, "DeliveryMonth": 1, "DeliveryYear": 1501, "EndDelivDate": 20250114, "ExchangeID": "CZCE", "ExchangeInstID": "MA501", "ExpireDate": 20250114, "InstLifePhase": 49, "InstrumentID": "MA501", "InstrumentName": "甲醇1月", "IsTrading": 1, "LongMarginRatio": 0.08, "MaxLimitOrderVolume": 1000, "MaxMarginSideAlgorithm": 48, "MaxMarketOrderVolume": 200, "MinLimitOrderVolume": 1, "MinMarketOrderVolume": 1, "OpenDate": 20240116, "OptionsType": 0, "PositionDateType": 50, "PositionType": 50, "PriceTick": 1, "ProductClass": 49, "ProductID": "MA", "ShortMarginRatio": 0.08, "StartDelivDate": 0, "StrikePrice": 0, "UnderlyingInstrID": "", "UnderlyingMultiple": 1, "VolumeMultiple": 10, }, "marginCurrency": "CNY", "marginLevel": 12, "maxNotional": 10000000, "maxQty": 1000, "minNotional": 1, "minQty": 1, "priceTick": 1, "quoteCurrency": "CNY", "quotePrecision": 0, "symbol": "MA501", "volumeTick": 1, }, "schema": []string{"time", "asks", "bids", "close", "vol", "position"}, "data": []interface{}{ []interface{}{1719795601778, []interface{}{[]int64{2633, 50}}, []interface{}{[]int64{2631, 50}}, 2632, 110410, 1718490}, []interface{}{1719795602192, []interface{}{[]int64{2632, 120}}, []interface{}{[]int64{2631, 50}}, 2632, 110410, 1718490}, []interface{}{1719795603873, []interface{}{[]int64{2631, 20}}, []interface{}{[]int64{2630, 600}}, 2631, 110780, 1718790}, []interface{}{1719795604769, []interface{}{[]int64{2633, 120}}, []interface{}{[]int64{2630, 490}}, 2631, 111300, 1718860}, []interface{}{1719795605661, []interface{}{[]int64{2632, 200}}, []interface{}{[]int64{2631, 30}}, 2632, 111750, 1718880}, }, } */ b, _ := json.Marshal(ret) w.Write(b) }() } func main () { fmt.Println("listen http://localhost:9090") http.HandleFunc("/data", Handle) http.ListenAndServe(":9090", nil) }

测试策略,JavaScript示例:

javascript
/*backtest start: 2024-07-01 00:00:00 end: 2024-07-07 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_CTP","currency":"FUTURES","feeder":"http://120.24.2.20:9090/data"}] */ function main() { // 对于测试代码,我们通过判断exchange.IO("status")函数,连接成功后执行测试代码,区别于商品期货策略的一般架构 while (!exchange.IO("status")) { Sleep(1000) } // 设置合约为MA501 exchange.SetContractType("MA501") // 获取ticker数据 var ticker = exchange.GetTicker() // 获取records数据,即K线数据 var records = exchange.GetRecords() // 打印数据 Log(ticker) Log(records) }