1 Star 0 Fork 40

wujimmy / goctp

forked from 海风 / goctp 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
main.go 2.70 KB
一键复制 编辑 原始数据 按行查看 历史
package main
import (
"encoding/json"
"fmt"
"strings"
"time"
"gitee.com/wujimmy/goctp"
ctp "gitee.com/wujimmy/goctp/lnx"
// ctp "gitee.com/wujimmy/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 {}
}
Go
1
https://gitee.com/wujimmy/goctp.git
git@gitee.com:wujimmy/goctp.git
wujimmy
goctp
goctp
v0.3.4

搜索帮助