代码拉取完成,页面将自动刷新
同步操作将从 海风/goctp 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package main
import (
"encoding/json"
"fmt"
"strings"
"time"
"gitee.com/haifengat/goctp"
// ctp "gitee.com/haifengat/goctp/lnx"
ctp "gitee.com/haifengat/goctp/win"
)
var (
instrumentID = "rb2109"
tradeFront = "tcp://180.168.146.187:10201"
quoteFront = "tcp://180.168.146.187:10211"
loginInfo = "9999/008105/1/simnow_client_test/0000000000000000"
investorID, password, brokerID, appID, authCode string
)
var t = ctp.NewTrade()
var q = ctp.NewQuote()
func init() {
fs := strings.Split(loginInfo, "/")
brokerID, investorID, password, appID, authCode = fs[0], fs[1], fs[2], fs[3], fs[4]
}
func onTick(data *goctp.TickField) {
if bs, err := json.Marshal(data); err == nil {
println("tick:" + string(bs))
} else {
fmt.Print("ontick")
}
}
func testQuote() {
q.RegOnFrontConnected(func() {
fmt.Println("quote connected")
q.ReqLogin(investorID, password, brokerID)
})
q.RegOnRspUserLogin(func(login *goctp.RspUserLoginField, info *goctp.RspInfoField) {
fmt.Println("quote login:", info)
q.ReqSubscript(instrumentID)
})
q.RegOnTick(onTick)
fmt.Println("quote connecting " + quoteFront)
q.ReqConnect(quoteFront)
}
func testTrade() {
t.RegOnFrontConnected(func() {
fmt.Println("trade connected")
go t.ReqLogin(investorID, password, brokerID, appID, authCode)
})
t.RegOnRspUserLogin(func(login *goctp.RspUserLoginField, info *goctp.RspInfoField) {
fmt.Println(info)
fmt.Printf("trade login info: %v\n", *login)
})
t.RegOnRtnOrder(func(field *goctp.OrderField) {
// fmt.Printf("%v\n", field)
fmt.Print("orderKey:", field.OrderSysID, field.StatusMsg)
// t.Orders.Range(func(key, value interface{}) bool {
// fmt.Print("orderKey:", key, value.(goctp.OrderField).StatusMsg)
// return true
// })
})
t.RegOnErrRtnOrder(func(field *goctp.OrderField, info *goctp.RspInfoField) {
fmt.Printf("%v\n", info)
})
t.RegOnRtnInstrumentStatus(func(field *goctp.InstrumentStatus) {
fmt.Println(field)
})
t.RegOnFrontDisConnected(func(reason int) {
fmt.Printf("%v\n", reason)
})
fmt.Println("connected to trade " + tradeFront)
t.ReqConnect(tradeFront)
}
func main() {
go testQuote() // 不能同时测试交易
go testTrade()
for !t.IsLogin {
time.Sleep(10 * time.Second)
}
cnt := 0
// t.ReqOrderInsertMarket("rb2109", goctp.DirectionBuy, goctp.OffsetFlagOpen, 1)
time.Sleep(3 * time.Second)
// key := t.ReqOrderInsert("rb2105", goctp.DirectionBuy, goctp.OffsetFlagOpen, 3000, 1)
// print(key)
t.Instruments.Range(func(k, v interface{}) bool {
// fmt.Printf("%v", v)
cnt++
return true
})
print("instrument count:", cnt)
// t.RegOnRtnFromFutureToBank(func(field *goctp.TransferField) {
// fmt.Print(field)
// })
// t.ReqFutureToBank("", "", 30)
t.Release()
q.Release()
select {}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。