Renamed BTCChina to BTCC after exchange rebrand.

This commit is contained in:
Adrian Gallagher
2015-10-09 23:07:59 +11:00
parent 7e69d2ccf1
commit 4297f8e9bd
6 changed files with 146 additions and 146 deletions

View File

@@ -10,7 +10,7 @@ A cryptocurrency trading bot supporting multiple exchanges written in Golang.
| ANXPRO | Yes | No | NA |
| Bitfinex | Yes | Yes | NA |
| Bitstamp | Yes | Yes | NA |
| BTCChina | Yes | Yes | No |
| BTCC | Yes | Yes | No |
| BTCE | Yes | NA | NA |
| BTCMarkets | Yes | NA | NA |
| Coinbase | Yes | Yes | No|

View File

@@ -11,34 +11,34 @@ import (
)
const (
BTCCHINA_API_URL = "https://api.btcchina.com/"
BTCCHINA_API_AUTHENTICATED_METHOD = "api_trade_v1.php"
BTCCHINA_API_VER = "2.0.1.3"
BTCCHINA_ORDER_BUY = "buyOrder2"
BTCCHINA_ORDER_SELL = "sellOrder2"
BTCCHINA_ORDER_CANCEL = "cancelOrder"
BTCCHINA_ICEBERG_BUY = "buyIcebergOrder"
BTCCHINA_ICEBERG_SELL = "sellIcebergOrder"
BTCCHINA_ICEBERG_ORDER = "getIcebergOrder"
BTCCHINA_ICEBERG_ORDERS = "getIcebergOrders"
BTCCHINA_ICEBERG_CANCEL = "cancelIcebergOrder"
BTCCHINA_ACCOUNT_INFO = "getAccountInfo"
BTCCHINA_DEPOSITS = "getDeposits"
BTCCHINA_MARKETDEPTH = "getMarketDepth2"
BTCCHINA_ORDER = "getOrder"
BTCCHINA_ORDERS = "getOrders"
BTCCHINA_TRANSACTIONS = "getTransactions"
BTCCHINA_WITHDRAWAL = "getWithdrawal"
BTCCHINA_WITHDRAWALS = "getWithdrawals"
BTCCHINA_WITHDRAWAL_REQUEST = "requestWithdrawal"
BTCCHINA_STOPORDER_BUY = "buyStopOrder"
BTCCHINA_STOPORDER_SELL = "sellStopOrder"
BTCCHINA_STOPORDER_CANCEL = "cancelStopOrder"
BTCCHINA_STOPORDER = "getStopOrder"
BTCCHINA_STOPORDERS = "getStopOrders"
BTCC_API_URL = "https://api.btcc.com/"
BTCC_API_AUTHENTICATED_METHOD = "api_trade_v1.php"
BTCC_API_VER = "2.0.1.3"
BTCC_ORDER_BUY = "buyOrder2"
BTCC_ORDER_SELL = "sellOrder2"
BTCC_ORDER_CANCEL = "cancelOrder"
BTCC_ICEBERG_BUY = "buyIcebergOrder"
BTCC_ICEBERG_SELL = "sellIcebergOrder"
BTCC_ICEBERG_ORDER = "getIcebergOrder"
BTCC_ICEBERG_ORDERS = "getIcebergOrders"
BTCC_ICEBERG_CANCEL = "cancelIcebergOrder"
BTCC_ACCOUNT_INFO = "getAccountInfo"
BTCC_DEPOSITS = "getDeposits"
BTCC_MARKETDEPTH = "getMarketDepth2"
BTCC_ORDER = "getOrder"
BTCC_ORDERS = "getOrders"
BTCC_TRANSACTIONS = "getTransactions"
BTCC_WITHDRAWAL = "getWithdrawal"
BTCC_WITHDRAWALS = "getWithdrawals"
BTCC_WITHDRAWAL_REQUEST = "requestWithdrawal"
BTCC_STOPORDER_BUY = "buyStopOrder"
BTCC_STOPORDER_SELL = "sellStopOrder"
BTCC_STOPORDER_CANCEL = "cancelStopOrder"
BTCC_STOPORDER = "getStopOrder"
BTCC_STOPORDERS = "getStopOrders"
)
type BTCChina struct {
type BTCC struct {
Name string
Enabled bool
Verbose bool
@@ -52,7 +52,7 @@ type BTCChina struct {
EnabledPairs []string
}
type BTCChinaTicker struct {
type BTCCTicker struct {
High float64 `json:",string"`
Low float64 `json:",string"`
Buy float64 `json:",string"`
@@ -65,7 +65,7 @@ type BTCChinaTicker struct {
Open float64 `json:",string"`
}
type BTCChinaProfile struct {
type BTCCProfile struct {
Username string
TradePasswordEnabled bool `json:"trade_password_enabled,bool"`
OTPEnabled bool `json:"otp_enabled,bool"`
@@ -81,7 +81,7 @@ type BTCChinaProfile struct {
APIKeyPermission int64 `json:"api_key_permission"`
}
type BTCChinaCurrencyGeneric struct {
type BTCCCurrencyGeneric struct {
Currency string
Symbol string
Amount string
@@ -89,7 +89,7 @@ type BTCChinaCurrencyGeneric struct {
AmountDecimal float64 `json:"amount_decimal"`
}
type BTCChinaOrder struct {
type BTCCOrder struct {
ID int64
Type string
Price float64
@@ -98,16 +98,16 @@ type BTCChinaOrder struct {
AmountOrig float64 `json:"amount_original"`
Date int64
Status string
Detail BTCChinaOrderDetail
Detail BTCCOrderDetail
}
type BTCChinaOrderDetail struct {
type BTCCOrderDetail struct {
Dateline int64
Price float64
Amount float64
}
type BTCChinaWithdrawal struct {
type BTCCWithdrawal struct {
ID int64
Address string
Currency string
@@ -117,7 +117,7 @@ type BTCChinaWithdrawal struct {
Status string
}
type BTCChinaDeposit struct {
type BTCCDeposit struct {
ID int64
Address string
Currency string
@@ -126,17 +126,17 @@ type BTCChinaDeposit struct {
Status string
}
type BTCChinaBidAsk struct {
type BTCCBidAsk struct {
Price float64
Amount float64
}
type BTCChinaDepth struct {
Bid []BTCChinaBidAsk
Ask []BTCChinaBidAsk
type BTCCDepth struct {
Bid []BTCCBidAsk
Ask []BTCCBidAsk
}
type BTCChinaTransaction struct {
type BTCCTransaction struct {
ID int64
Type string
BTCAmount float64 `json:"btc_amount"`
@@ -145,7 +145,7 @@ type BTCChinaTransaction struct {
Date int64
}
type BTCChinaIcebergOrder struct {
type BTCCIcebergOrder struct {
ID int64
Type string
Price float64
@@ -158,7 +158,7 @@ type BTCChinaIcebergOrder struct {
Status string
}
type BTCChinaStopOrder struct {
type BTCCStopOrder struct {
ID int64
Type string
StopPrice float64 `json:"stop_price"`
@@ -172,8 +172,8 @@ type BTCChinaStopOrder struct {
OrderID int64 `json:"order_id"`
}
func (b *BTCChina) SetDefaults() {
b.Name = "BTC China"
func (b *BTCC) SetDefaults() {
b.Name = "BTCC"
b.Enabled = true
b.Fee = 0
b.Verbose = false
@@ -181,28 +181,28 @@ func (b *BTCChina) SetDefaults() {
b.RESTPollingDelay = 10
}
func (b *BTCChina) GetName() string {
func (b *BTCC) GetName() string {
return b.Name
}
func (b *BTCChina) SetEnabled(enabled bool) {
func (b *BTCC) SetEnabled(enabled bool) {
b.Enabled = enabled
}
func (b *BTCChina) IsEnabled() bool {
func (b *BTCC) IsEnabled() bool {
return b.Enabled
}
func (b *BTCChina) SetAPIKeys(apiKey, apiSecret string) {
func (b *BTCC) SetAPIKeys(apiKey, apiSecret string) {
b.APIKey = apiKey
b.APISecret = apiSecret
}
func (b *BTCChina) GetFee() float64 {
func (b *BTCC) GetFee() float64 {
return b.Fee
}
func (b *BTCChina) Run() {
func (b *BTCC) Run() {
if b.Verbose {
log.Printf("%s Websocket: %s.", b.GetName(), IsEnabled(b.Websocket))
log.Printf("%s polling delay: %ds.\n", b.GetName(), b.RESTPollingDelay)
@@ -222,11 +222,11 @@ func (b *BTCChina) Run() {
tickerLastUSD, _ := ConvertCurrency(ticker.Last, "CNY", "USD")
tickerHighUSD, _ := ConvertCurrency(ticker.High, "CNY", "USD")
tickerLowUSD, _ := ConvertCurrency(ticker.Low, "CNY", "USD")
log.Printf("BTCChina %s: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", currency, tickerLastUSD, ticker.Last, tickerHighUSD, ticker.High, tickerLowUSD, ticker.Low, ticker.Vol)
log.Printf("BTCC %s: Last %f (%f) High %f (%f) Low %f (%f) Volume %f\n", currency, tickerLastUSD, ticker.Last, tickerHighUSD, ticker.High, tickerLowUSD, ticker.Low, ticker.Vol)
AddExchangeInfo(b.GetName(), StringToUpper(currency[0:3]), StringToUpper(currency[3:]), ticker.Last, ticker.Vol)
AddExchangeInfo(b.GetName(), StringToUpper(currency[0:3]), "USD", tickerLastUSD, ticker.Vol)
} else {
log.Printf("BTCChina %s: Last %f High %f Low %f Volume %f\n", currency, ticker.Last, ticker.High, ticker.Low, ticker.Vol)
log.Printf("BTCC %s: Last %f High %f Low %f Volume %f\n", currency, ticker.Last, ticker.High, ticker.Low, ticker.Vol)
AddExchangeInfo(b.GetName(), StringToUpper(currency[0:3]), StringToUpper(currency[3:]), ticker.Last, ticker.Vol)
}
}()
@@ -235,23 +235,23 @@ func (b *BTCChina) Run() {
}
}
func (b *BTCChina) GetTicker(symbol string) BTCChinaTicker {
func (b *BTCC) GetTicker(symbol string) BTCCTicker {
type Response struct {
Ticker BTCChinaTicker
Ticker BTCCTicker
}
resp := Response{}
req := fmt.Sprintf("%sdata/ticker?market=%s", BTCCHINA_API_URL, symbol)
req := fmt.Sprintf("%sdata/ticker?market=%s", BTCC_API_URL, symbol)
err := SendHTTPGetRequest(req, true, &resp)
if err != nil {
log.Println(err)
return BTCChinaTicker{}
return BTCCTicker{}
}
return resp.Ticker
}
func (b *BTCChina) GetTradesLast24h(symbol string) bool {
req := fmt.Sprintf("%sdata/trades?market=%s", BTCCHINA_API_URL, symbol)
func (b *BTCC) GetTradesLast24h(symbol string) bool {
req := fmt.Sprintf("%sdata/trades?market=%s", BTCC_API_URL, symbol)
err := SendHTTPGetRequest(req, true, nil)
if err != nil {
log.Println(err)
@@ -260,8 +260,8 @@ func (b *BTCChina) GetTradesLast24h(symbol string) bool {
return true
}
func (b *BTCChina) GetTradeHistory(symbol string, limit, sinceTid int64, time time.Time) bool {
req := fmt.Sprintf("%sdata/historydata?market=%s", BTCCHINA_API_URL, symbol)
func (b *BTCC) GetTradeHistory(symbol string, limit, sinceTid int64, time time.Time) bool {
req := fmt.Sprintf("%sdata/historydata?market=%s", BTCC_API_URL, symbol)
v := url.Values{}
if limit > 0 {
@@ -287,8 +287,8 @@ func (b *BTCChina) GetTradeHistory(symbol string, limit, sinceTid int64, time ti
return true
}
func (b *BTCChina) GetOrderBook(symbol string, limit int) bool {
req := fmt.Sprintf("%sdata/orderbook?market=%s&limit=%d", BTCCHINA_API_URL, symbol, limit)
func (b *BTCC) GetOrderBook(symbol string, limit int) bool {
req := fmt.Sprintf("%sdata/orderbook?market=%s&limit=%d", BTCC_API_URL, symbol, limit)
err := SendHTTPGetRequest(req, true, nil)
if err != nil {
log.Println(err)
@@ -297,21 +297,21 @@ func (b *BTCChina) GetOrderBook(symbol string, limit int) bool {
return true
}
func (b *BTCChina) GetAccountInfo(infoType string) {
func (b *BTCC) GetAccountInfo(infoType string) {
params := make([]interface{}, 0)
if len(infoType) > 0 {
params = append(params, infoType)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_ACCOUNT_INFO, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_ACCOUNT_INFO, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) PlaceOrder(buyOrder bool, price, amount float64, market string) {
func (b *BTCC) PlaceOrder(buyOrder bool, price, amount float64, market string) {
params := make([]interface{}, 0)
params = append(params, strconv.FormatFloat(price, 'f', -1, 64))
params = append(params, strconv.FormatFloat(amount, 'f', -1, 64))
@@ -320,9 +320,9 @@ func (b *BTCChina) PlaceOrder(buyOrder bool, price, amount float64, market strin
params = append(params, market)
}
req := BTCCHINA_ORDER_BUY
req := BTCC_ORDER_BUY
if !buyOrder {
req = BTCCHINA_ORDER_SELL
req = BTCC_ORDER_SELL
}
err := b.SendAuthenticatedHTTPRequest(req, params)
@@ -332,7 +332,7 @@ func (b *BTCChina) PlaceOrder(buyOrder bool, price, amount float64, market strin
}
}
func (b *BTCChina) CancelOrder(orderID int64, market string) {
func (b *BTCC) CancelOrder(orderID int64, market string) {
params := make([]interface{}, 0)
params = append(params, orderID)
@@ -340,14 +340,14 @@ func (b *BTCChina) CancelOrder(orderID int64, market string) {
params = append(params, market)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_ORDER_CANCEL, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_ORDER_CANCEL, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) GetDeposits(currency string, pending bool) {
func (b *BTCC) GetDeposits(currency string, pending bool) {
params := make([]interface{}, 0)
params = append(params, currency)
@@ -355,14 +355,14 @@ func (b *BTCChina) GetDeposits(currency string, pending bool) {
params = append(params, pending)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_DEPOSITS, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_DEPOSITS, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) GetMarketDepth(market string, limit int64) {
func (b *BTCC) GetMarketDepth(market string, limit int64) {
params := make([]interface{}, 0)
if limit > 0 {
@@ -373,14 +373,14 @@ func (b *BTCChina) GetMarketDepth(market string, limit int64) {
params = append(params, market)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_MARKETDEPTH, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_MARKETDEPTH, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) GetOrder(orderID int64, market string, detailed bool) {
func (b *BTCC) GetOrder(orderID int64, market string, detailed bool) {
params := make([]interface{}, 0)
params = append(params, orderID)
@@ -392,14 +392,14 @@ func (b *BTCChina) GetOrder(orderID int64, market string, detailed bool) {
params = append(params, detailed)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_ORDER, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_ORDER, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) GetOrders(openonly bool, market string, limit, offset, since int64, detailed bool) {
func (b *BTCC) GetOrders(openonly bool, market string, limit, offset, since int64, detailed bool) {
params := make([]interface{}, 0)
if openonly {
@@ -426,14 +426,14 @@ func (b *BTCChina) GetOrders(openonly bool, market string, limit, offset, since
params = append(params, detailed)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_ORDERS, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_ORDERS, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) GetTransactions(transType string, limit, offset, since int64, sinceType string) {
func (b *BTCC) GetTransactions(transType string, limit, offset, since int64, sinceType string) {
params := make([]interface{}, 0)
if len(transType) > 0 {
@@ -456,14 +456,14 @@ func (b *BTCChina) GetTransactions(transType string, limit, offset, since int64,
params = append(params, sinceType)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_TRANSACTIONS, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_TRANSACTIONS, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) GetWithdrawal(withdrawalID int64, currency string) {
func (b *BTCC) GetWithdrawal(withdrawalID int64, currency string) {
params := make([]interface{}, 0)
params = append(params, withdrawalID)
@@ -471,14 +471,14 @@ func (b *BTCChina) GetWithdrawal(withdrawalID int64, currency string) {
params = append(params, currency)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_WITHDRAWAL, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_WITHDRAWAL, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) GetWithdrawals(currency string, pending bool) {
func (b *BTCC) GetWithdrawals(currency string, pending bool) {
params := make([]interface{}, 0)
params = append(params, currency)
@@ -486,26 +486,26 @@ func (b *BTCChina) GetWithdrawals(currency string, pending bool) {
params = append(params, pending)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_WITHDRAWALS, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_WITHDRAWALS, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) RequestWithdrawal(currency string, amount float64) {
func (b *BTCC) RequestWithdrawal(currency string, amount float64) {
params := make([]interface{}, 0)
params = append(params, currency)
params = append(params, amount)
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_WITHDRAWAL_REQUEST, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_WITHDRAWAL_REQUEST, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) IcebergOrder(buyOrder bool, price, amount, discAmount, variance float64, market string) {
func (b *BTCC) IcebergOrder(buyOrder bool, price, amount, discAmount, variance float64, market string) {
params := make([]interface{}, 0)
params = append(params, strconv.FormatFloat(price, 'f', -1, 64))
params = append(params, strconv.FormatFloat(amount, 'f', -1, 64))
@@ -516,9 +516,9 @@ func (b *BTCChina) IcebergOrder(buyOrder bool, price, amount, discAmount, varian
params = append(params, market)
}
req := BTCCHINA_ICEBERG_BUY
req := BTCC_ICEBERG_BUY
if !buyOrder {
req = BTCCHINA_ICEBERG_SELL
req = BTCC_ICEBERG_SELL
}
err := b.SendAuthenticatedHTTPRequest(req, params)
@@ -528,7 +528,7 @@ func (b *BTCChina) IcebergOrder(buyOrder bool, price, amount, discAmount, varian
}
}
func (b *BTCChina) GetIcebergOrder(orderID int64, market string) {
func (b *BTCC) GetIcebergOrder(orderID int64, market string) {
params := make([]interface{}, 0)
params = append(params, orderID)
@@ -536,14 +536,14 @@ func (b *BTCChina) GetIcebergOrder(orderID int64, market string) {
params = append(params, market)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_ICEBERG_ORDER, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_ICEBERG_ORDER, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) GetIcebergOrders(limit, offset int64, market string) {
func (b *BTCC) GetIcebergOrders(limit, offset int64, market string) {
params := make([]interface{}, 0)
if limit > 0 {
@@ -558,14 +558,14 @@ func (b *BTCChina) GetIcebergOrders(limit, offset int64, market string) {
params = append(params, market)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_ICEBERG_ORDERS, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_ICEBERG_ORDERS, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) CancelIcebergOrder(orderID int64, market string) {
func (b *BTCC) CancelIcebergOrder(orderID int64, market string) {
params := make([]interface{}, 0)
params = append(params, orderID)
@@ -573,14 +573,14 @@ func (b *BTCChina) CancelIcebergOrder(orderID int64, market string) {
params = append(params, market)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_ICEBERG_CANCEL, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_ICEBERG_CANCEL, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) PlaceStopOrder(buyOder bool, stopPrice, price, amount, trailingAmt, trailingPct float64, market string) {
func (b *BTCC) PlaceStopOrder(buyOder bool, stopPrice, price, amount, trailingAmt, trailingPct float64, market string) {
params := make([]interface{}, 0)
if stopPrice > 0 {
@@ -602,9 +602,9 @@ func (b *BTCChina) PlaceStopOrder(buyOder bool, stopPrice, price, amount, traili
params = append(params, market)
}
req := BTCCHINA_STOPORDER_BUY
req := BTCC_STOPORDER_BUY
if !buyOder {
req = BTCCHINA_STOPORDER_SELL
req = BTCC_STOPORDER_SELL
}
err := b.SendAuthenticatedHTTPRequest(req, params)
@@ -614,7 +614,7 @@ func (b *BTCChina) PlaceStopOrder(buyOder bool, stopPrice, price, amount, traili
}
}
func (b *BTCChina) GetStopOrder(orderID int64, market string) {
func (b *BTCC) GetStopOrder(orderID int64, market string) {
params := make([]interface{}, 0)
params = append(params, orderID)
@@ -622,14 +622,14 @@ func (b *BTCChina) GetStopOrder(orderID int64, market string) {
params = append(params, market)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_STOPORDER, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_STOPORDER, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) GetStopOrders(status, orderType string, stopPrice float64, limit, offset int64, market string) {
func (b *BTCC) GetStopOrders(status, orderType string, stopPrice float64, limit, offset int64, market string) {
params := make([]interface{}, 0)
if len(status) > 0 {
@@ -656,14 +656,14 @@ func (b *BTCChina) GetStopOrders(status, orderType string, stopPrice float64, li
params = append(params, market)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_STOPORDERS, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_STOPORDERS, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) CancelStopOrder(orderID int64, market string) {
func (b *BTCC) CancelStopOrder(orderID int64, market string) {
params := make([]interface{}, 0)
params = append(params, orderID)
@@ -671,14 +671,14 @@ func (b *BTCChina) CancelStopOrder(orderID int64, market string) {
params = append(params, market)
}
err := b.SendAuthenticatedHTTPRequest(BTCCHINA_STOPORDER_CANCEL, params)
err := b.SendAuthenticatedHTTPRequest(BTCC_STOPORDER_CANCEL, params)
if err != nil {
log.Println(err)
}
}
func (b *BTCChina) SendAuthenticatedHTTPRequest(method string, params []interface{}) (err error) {
func (b *BTCC) SendAuthenticatedHTTPRequest(method string, params []interface{}) (err error) {
nonce := strconv.FormatInt(time.Now().UnixNano(), 10)[0:16]
encoded := fmt.Sprintf("tonce=%s&accesskey=%s&requestmethod=post&id=%d&method=%s&params=", nonce, b.APIKey, 1, method)
@@ -726,7 +726,7 @@ func (b *BTCChina) SendAuthenticatedHTTPRequest(method string, params []interfac
postData["method"] = method
postData["params"] = params
postData["id"] = 1
apiURL := BTCCHINA_API_URL + BTCCHINA_API_AUTHENTICATED_METHOD
apiURL := BTCC_API_URL + BTCC_API_AUTHENTICATED_METHOD
data, err := JSONEncode(postData)
if err != nil {

View File

@@ -7,22 +7,22 @@ import (
)
const (
BTCCHINA_SOCKETIO_ADDRESS = "https://websocket.btcchina.com"
BTCC_SOCKETIO_ADDRESS = "https://websocket.btcc.com"
)
type BTCChinaWebsocketOrder struct {
type BTCCWebsocketOrder struct {
Price float64 `json:"price"`
TotalAmount float64 `json:"totalamount"`
Type string `json:"type"`
}
type BTCChinaWebsocketGroupOrder struct {
Asks []BTCChinaWebsocketOrder `json:"ask"`
Bids []BTCChinaWebsocketOrder `json:"bid"`
Market string `json:"market"`
type BTCCWebsocketGroupOrder struct {
Asks []BTCCWebsocketOrder `json:"ask"`
Bids []BTCCWebsocketOrder `json:"bid"`
Market string `json:"market"`
}
type BTCChinaWebsocketTrade struct {
type BTCCWebsocketTrade struct {
Amount float64 `json:"amount,string"`
Date float64 `json:"date"`
Market string `json:"market"`
@@ -31,7 +31,7 @@ type BTCChinaWebsocketTrade struct {
Type string `json:"type"`
}
type BTCChinaWebsocketTicker struct {
type BTCCWebsocketTicker struct {
Buy float64 `json:"buy"`
Date float64 `json:"date"`
High float64 `json:"high"`
@@ -45,9 +45,9 @@ type BTCChinaWebsocketTicker struct {
Vwap float64 `json:"vwap"`
}
var BTCChinaSocket *socketio.SocketIO
var BTCCSocket *socketio.SocketIO
func (b *BTCChina) OnConnect(output chan socketio.Message) {
func (b *BTCC) OnConnect(output chan socketio.Message) {
if b.Verbose {
log.Printf("%s Connected to Websocket.", b.GetName())
}
@@ -65,31 +65,31 @@ func (b *BTCChina) OnConnect(output chan socketio.Message) {
if b.Verbose {
log.Printf("%s Websocket subscribing to channel: %s.", b.GetName(), channel)
}
output <- socketio.CreateMessageEvent("subscribe", channel, b.OnMessage, BTCChinaSocket.Version)
output <- socketio.CreateMessageEvent("subscribe", channel, b.OnMessage, BTCCSocket.Version)
}
}
}
func (b *BTCChina) OnDisconnect(output chan socketio.Message) {
func (b *BTCC) OnDisconnect(output chan socketio.Message) {
log.Printf("%s Disconnected from websocket server.. Reconnecting.\n", b.GetName())
b.WebsocketClient()
}
func (b *BTCChina) OnError() {
func (b *BTCC) OnError() {
log.Printf("%s Error with Websocket connection.. Reconnecting.\n", b.GetName())
b.WebsocketClient()
}
func (b *BTCChina) OnMessage(message []byte, output chan socketio.Message) {
func (b *BTCC) OnMessage(message []byte, output chan socketio.Message) {
if b.Verbose {
log.Printf("%s Websocket message received which isn't handled by default.\n", b.GetName())
log.Println(string(message))
}
}
func (b *BTCChina) OnTicker(message []byte, output chan socketio.Message) {
func (b *BTCC) OnTicker(message []byte, output chan socketio.Message) {
type Response struct {
Ticker BTCChinaWebsocketTicker `json:"ticker"`
Ticker BTCCWebsocketTicker `json:"ticker"`
}
var resp Response
err := JSONDecode(message, &resp)
@@ -100,9 +100,9 @@ func (b *BTCChina) OnTicker(message []byte, output chan socketio.Message) {
}
}
func (b *BTCChina) OnGroupOrder(message []byte, output chan socketio.Message) {
func (b *BTCC) OnGroupOrder(message []byte, output chan socketio.Message) {
type Response struct {
GroupOrder BTCChinaWebsocketGroupOrder `json:"grouporder"`
GroupOrder BTCCWebsocketGroupOrder `json:"grouporder"`
}
var resp Response
err := JSONDecode(message, &resp)
@@ -113,8 +113,8 @@ func (b *BTCChina) OnGroupOrder(message []byte, output chan socketio.Message) {
}
}
func (b *BTCChina) OnTrade(message []byte, output chan socketio.Message) {
trade := BTCChinaWebsocketTrade{}
func (b *BTCC) OnTrade(message []byte, output chan socketio.Message) {
trade := BTCCWebsocketTrade{}
err := JSONDecode(message, &trade)
if err != nil {
@@ -123,13 +123,13 @@ func (b *BTCChina) OnTrade(message []byte, output chan socketio.Message) {
}
}
func (b *BTCChina) WebsocketClient() {
func (b *BTCC) WebsocketClient() {
events := make(map[string]func(message []byte, output chan socketio.Message))
events["grouporder"] = b.OnGroupOrder
events["ticker"] = b.OnTicker
events["trade"] = b.OnTrade
BTCChinaSocket = &socketio.SocketIO{
BTCCSocket = &socketio.SocketIO{
Version: 1,
OnConnect: b.OnConnect,
OnEvent: events,
@@ -139,7 +139,7 @@ func (b *BTCChina) WebsocketClient() {
}
for b.Enabled && b.Websocket {
err := socketio.ConnectToSocket(BTCCHINA_SOCKETIO_ADDRESS, BTCChinaSocket)
err := socketio.ConnectToSocket(BTCC_SOCKETIO_ADDRESS, BTCCSocket)
if err != nil {
log.Printf("%s Unable to connect to Websocket. Err: %s\n", err)
continue

View File

@@ -55,7 +55,7 @@
"BaseCurrencies": "USD"
},
{
"Name": "BTC China",
"Name": "BTCC",
"Enabled": true,
"Verbose": false,
"Websocket": false,

View File

@@ -132,8 +132,8 @@ func (e *Event) CheckCondition() bool {
}
} else if bot.exchange.lakebtc.GetName() == e.Exchange {
lastPrice = bot.exchange.lakebtc.GetTicker().CNY.Last
} else if bot.exchange.btcchina.GetName() == e.Exchange {
lastPrice = bot.exchange.btcchina.GetTicker("btccny").Last
} else if bot.exchange.btcc.GetName() == e.Exchange {
lastPrice = bot.exchange.btcc.GetTicker("btccny").Last
} else if bot.exchange.huobi.GetName() == e.Exchange {
lastPrice = bot.exchange.huobi.GetTicker("btc").Last
} else if bot.exchange.itbit.GetName() == e.Exchange {
@@ -252,8 +252,8 @@ func CheckEvents() {
func IsValidExchange(Exchange string) bool {
if bot.exchange.bitfinex.GetName() == Exchange && bot.exchange.bitfinex.IsEnabled() ||
bot.exchange.bitstamp.GetName() == Exchange && bot.exchange.bitstamp.IsEnabled() ||
bot.exchange.btcchina.GetName() == Exchange && bot.exchange.btcchina.IsEnabled() ||
bot.exchange.btce.GetName() == Exchange && bot.exchange.btcchina.IsEnabled() ||
bot.exchange.btcc.GetName() == Exchange && bot.exchange.btcc.IsEnabled() ||
bot.exchange.btce.GetName() == Exchange && bot.exchange.btcc.IsEnabled() ||
bot.exchange.btcmarkets.GetName() == Exchange && bot.exchange.btcmarkets.IsEnabled() ||
bot.exchange.coinbase.GetName() == Exchange && bot.exchange.coinbase.IsEnabled() ||
bot.exchange.cryptsy.GetName() == Exchange && bot.exchange.cryptsy.IsEnabled() ||

26
main.go
View File

@@ -12,7 +12,7 @@ import (
type Exchange struct {
anx ANX
btcchina BTCChina
btcc BTCC
bitstamp Bitstamp
bitfinex Bitfinex
btce BTCE
@@ -74,7 +74,7 @@ func main() {
bot.exchange.anx.SetDefaults()
bot.exchange.kraken.SetDefaults()
bot.exchange.btcchina.SetDefaults()
bot.exchange.btcc.SetDefaults()
bot.exchange.bitstamp.SetDefaults()
bot.exchange.bitfinex.SetDefaults()
bot.exchange.btce.SetDefaults()
@@ -118,19 +118,19 @@ func main() {
bot.exchange.anx.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
go bot.exchange.anx.Run()
}
} else if bot.exchange.btcchina.GetName() == exch.Name {
} else if bot.exchange.btcc.GetName() == exch.Name {
if !exch.Enabled {
bot.exchange.btcchina.SetEnabled(false)
bot.exchange.btcc.SetEnabled(false)
} else {
bot.exchange.btcchina.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
bot.exchange.btcchina.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.btcchina.RESTPollingDelay = exch.RESTPollingDelay
bot.exchange.btcchina.Verbose = exch.Verbose
bot.exchange.btcchina.Websocket = exch.Websocket
bot.exchange.btcchina.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
bot.exchange.btcchina.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
bot.exchange.btcchina.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
go bot.exchange.btcchina.Run()
bot.exchange.btcc.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
bot.exchange.btcc.SetAPIKeys(exch.APIKey, exch.APISecret)
bot.exchange.btcc.RESTPollingDelay = exch.RESTPollingDelay
bot.exchange.btcc.Verbose = exch.Verbose
bot.exchange.btcc.Websocket = exch.Websocket
bot.exchange.btcc.BaseCurrencies = SplitStrings(exch.BaseCurrencies, ",")
bot.exchange.btcc.AvailablePairs = SplitStrings(exch.AvailablePairs, ",")
bot.exchange.btcc.EnabledPairs = SplitStrings(exch.EnabledPairs, ",")
go bot.exchange.btcc.Run()
}
} else if bot.exchange.bitstamp.GetName() == exch.Name {
if !exch.Enabled {