mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 15:09:42 +00:00
Added OKCoin futures support.
This commit is contained in:
35
main.go
35
main.go
@@ -33,6 +33,9 @@ func main() {
|
||||
|
||||
//temp until proper asynchronous method of getting pricing/order books is coded
|
||||
for {
|
||||
|
||||
//spot
|
||||
|
||||
go func() {
|
||||
LakeBTCTickerResponse := exchange.lakebtc.GetTicker()
|
||||
log.Printf("LakeBTC USD: Last %f (%f) High %f (%f) Low %f (%f)\n", LakeBTCTickerResponse.USD.Last, LakeBTCTickerResponse.CNY.Last, LakeBTCTickerResponse.USD.High, LakeBTCTickerResponse.CNY.High, LakeBTCTickerResponse.USD.Low, LakeBTCTickerResponse.CNY.Low)
|
||||
@@ -126,6 +129,38 @@ func main() {
|
||||
log.Printf("OKCoin Intl LTC: Last %f High %f Low %f Volume %f\n", OKCoinChinaIntlLTC.Last, OKCoinChinaIntlLTC.High, OKCoinChinaIntlLTC.Low, OKCoinChinaIntlLTC.Vol)
|
||||
}()
|
||||
|
||||
// futures
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := exchange.okcoinIntl.GetFuturesTicker("btc_usd", "this_week")
|
||||
log.Printf("OKCoin BTC Futures (weekly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := exchange.okcoinIntl.GetFuturesTicker("ltc_usd", "this_week")
|
||||
log.Printf("OKCoin LTC Futures (weekly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := exchange.okcoinIntl.GetFuturesTicker("btc_usd", "next_week")
|
||||
log.Printf("OKCoin BTC Futures (biweekly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := exchange.okcoinIntl.GetFuturesTicker("ltc_usd", "next_week")
|
||||
log.Printf("OKCoin LTC Futures (biweekly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := exchange.okcoinIntl.GetFuturesTicker("btc_usd", "quarter")
|
||||
log.Printf("OKCoin BTC Futures (quarterly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
OKCoinFuturesBTC := exchange.okcoinIntl.GetFuturesTicker("ltc_usd", "quarter")
|
||||
log.Printf("OKCoin LTC Futures (quarterly): Last %f High %f Low %f Volume %f\n", OKCoinFuturesBTC.Last, OKCoinFuturesBTC.High, OKCoinFuturesBTC.Low, OKCoinFuturesBTC.Vol)
|
||||
}()
|
||||
|
||||
time.Sleep(time.Second * 15)
|
||||
cmd := exec.Command("cmd", "/c", "cls")
|
||||
cmd.Stdout = os.Stdout
|
||||
|
||||
201
okcoinhttp.go
201
okcoinhttp.go
@@ -34,6 +34,21 @@ type OKCoinTickerResponse struct {
|
||||
Date string
|
||||
Ticker OKCoinTicker
|
||||
}
|
||||
type OKCoinFuturesTicker struct {
|
||||
Last float64
|
||||
Buy float64
|
||||
Sell float64
|
||||
High float64
|
||||
Low float64
|
||||
Vol float64
|
||||
Contract_ID float64
|
||||
Unit_Amount float64
|
||||
}
|
||||
|
||||
type OKCoinFuturesTickerResponse struct {
|
||||
Date string
|
||||
Ticker OKCoinFuturesTicker
|
||||
}
|
||||
|
||||
func (o *OKCoin) SetURL(url string) {
|
||||
o.APIUrl = url
|
||||
@@ -51,6 +66,17 @@ func (o *OKCoin) GetTicker(symbol string) (OKCoinTicker) {
|
||||
return resp.Ticker
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesTicker(symbol, contractType string) (OKCoinFuturesTicker) {
|
||||
resp := OKCoinFuturesTickerResponse{}
|
||||
path := fmt.Sprintf("future_ticker.do?symbol=%s&contract_type=%s", symbol, contractType)
|
||||
err := SendHTTPRequest(o.APIUrl + path, true, &resp)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return OKCoinFuturesTicker{}
|
||||
}
|
||||
return resp.Ticker
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetOrderBook(symbol string) (bool) {
|
||||
path := "depth.do?symbol=" + symbol
|
||||
err := SendHTTPRequest(o.APIUrl + path, true, nil)
|
||||
@@ -61,6 +87,16 @@ func (o *OKCoin) GetOrderBook(symbol string) (bool) {
|
||||
return true
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesDepth(symbol, contractType string) (bool) {
|
||||
path := fmt.Sprintf("future_depth.do?symbol=%s&contract_type=%s", symbol, contractType)
|
||||
err := SendHTTPRequest(o.APIUrl + path, true, nil)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetTradeHistory(symbol string) (bool) {
|
||||
path := "trades.do?symbol=" + symbol
|
||||
err := SendHTTPRequest(o.APIUrl + path, true, nil)
|
||||
@@ -71,6 +107,54 @@ func (o *OKCoin) GetTradeHistory(symbol string) (bool) {
|
||||
return true
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesTrades(symbol, contractType string) (bool) {
|
||||
path := fmt.Sprintf("future_trades.do?symbol=%s&contract_type=%s", symbol, contractType)
|
||||
err := SendHTTPRequest(o.APIUrl + path, true, nil)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesIndex(symbol string) (bool) {
|
||||
path := "future_index.do?symbol=" + symbol
|
||||
err := SendHTTPRequest(o.APIUrl + path, true, nil)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesExchangeRate() (bool) {
|
||||
err := SendHTTPRequest(o.APIUrl + "exchange_rate.do", true, nil)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesEstimatedPrice(symbol string) (bool) {
|
||||
path := "future_estimated_price.do?symbol=" + symbol
|
||||
err := SendHTTPRequest(o.APIUrl + path, true, nil)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesTradeHistory(symbol, date string, since int64) (bool) {
|
||||
path := fmt.Sprintf("future_trades.do?symbol=%s&date%s&since=%d", symbol, date, since)
|
||||
err := SendHTTPRequest(o.APIUrl + path, true, nil)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetUserInfo() {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
@@ -81,6 +165,28 @@ func (o *OKCoin) GetUserInfo() {
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesUserInfo() {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
err := o.SendAuthenticatedHTTPRequest("future_userinfo.do", v)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesPosition(symbol, contractType string) {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
v.Set("symbol", symbol)
|
||||
v.Set("contract_type", contractType)
|
||||
err := o.SendAuthenticatedHTTPRequest("future_userinfo.do", v)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) Trade(amount, price float64, symbol, orderType string) {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
@@ -96,6 +202,24 @@ func (o *OKCoin) Trade(amount, price float64, symbol, orderType string) {
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) FuturesTrade(amount, price float64, matchPrice, leverage int64, symbol, contractType, orderType string) {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
v.Set("symbol", symbol)
|
||||
v.Set("contract_type", contractType)
|
||||
v.Set("price", strconv.FormatFloat(price, 'f', 8, 64))
|
||||
v.Set("amount", strconv.FormatFloat(amount, 'f', 8, 64))
|
||||
v.Set("type", orderType)
|
||||
v.Set("match_price", strconv.FormatInt(matchPrice, 10))
|
||||
v.Set("lever_rate", strconv.FormatInt(leverage, 10))
|
||||
|
||||
err := o.SendAuthenticatedHTTPRequest("future_trade.do", v)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) BatchTrade(orderData string, symbol, orderType string) {
|
||||
v := url.Values{} //to-do batch trade support for orders_data
|
||||
v.Set("partner", o.PartnerID)
|
||||
@@ -110,6 +234,21 @@ func (o *OKCoin) BatchTrade(orderData string, symbol, orderType string) {
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) FuturesBatchTrade(orderData, symbol, contractType string, leverage int64, orderType string) {
|
||||
v := url.Values{} //to-do batch trade support for orders_data
|
||||
v.Set("partner", o.PartnerID)
|
||||
v.Set("symbol", symbol)
|
||||
v.Set("contract_type", contractType)
|
||||
v.Set("orders_data", orderData)
|
||||
v.Set("lever_rate", strconv.FormatInt(leverage, 10))
|
||||
|
||||
err := o.SendAuthenticatedHTTPRequest("future_batch_trade.do", v)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) CancelOrder(orderID int64, symbol string) {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
@@ -123,13 +262,44 @@ func (o *OKCoin) CancelOrder(orderID int64, symbol string) {
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) CancelFuturesOrder(orderID int64, symbol, contractType string) {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
v.Set("symbol", symbol)
|
||||
v.Set("contract_type", contractType)
|
||||
v.Set("order_id", strconv.FormatInt(orderID, 10))
|
||||
|
||||
err := o.SendAuthenticatedHTTPRequest("future_cancel.do", v)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetOrderInfo(orderID int64, symbol string) {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
v.Set("orders_id", strconv.FormatInt(orderID, 10))
|
||||
v.Set("symbol", symbol)
|
||||
v.Set("order_id", strconv.FormatInt(orderID, 10))
|
||||
|
||||
err := o.SendAuthenticatedHTTPRequest("order_info.do", v)
|
||||
err := o.SendAuthenticatedHTTPRequest("orders_info.do", v)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesOrderInfo(orderID, status, currentPage, pageLength int64, symbol, contractType string) {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
v.Set("symbol", symbol)
|
||||
v.Set("contract_type", contractType)
|
||||
v.Set("status", strconv.FormatInt(status, 10))
|
||||
v.Set("order_id", strconv.FormatInt(orderID, 10))
|
||||
v.Set("current_page", strconv.FormatInt(currentPage, 10))
|
||||
v.Set("page_length", strconv.FormatInt(pageLength, 10))
|
||||
|
||||
err := o.SendAuthenticatedHTTPRequest("future_order_info.do", v)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
@@ -160,7 +330,32 @@ func (o *OKCoin) GetOrderHistory(orderID, pageLength, currentPage int64, orderTy
|
||||
v.Set("current_page", strconv.FormatInt(currentPage, 10))
|
||||
v.Set("page_length", strconv.FormatInt(pageLength, 10))
|
||||
|
||||
err := o.SendAuthenticatedHTTPRequest("orders_info.do", v)
|
||||
err := o.SendAuthenticatedHTTPRequest("order_history.do", v)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesUserInfo4Fix() {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
|
||||
err := o.SendAuthenticatedHTTPRequest("future_userinfo_4fix.do", v)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OKCoin) GetFuturesUserPosition4Fix(symbol, contractType string) {
|
||||
v := url.Values{}
|
||||
v.Set("partner", o.PartnerID)
|
||||
v.Set("symbol", symbol)
|
||||
v.Set("contract_type", contractType)
|
||||
v.Set("type", strconv.FormatInt(1, 10))
|
||||
|
||||
err := o.SendAuthenticatedHTTPRequest("future_position_4fix.do", v)
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
|
||||
Reference in New Issue
Block a user