Merge pull request #386 from find-happiness/master

Merge remote-tracking branch 'origin/dev'
This commit is contained in:
vn.py 2017-07-08 21:34:04 +08:00 committed by GitHub
commit 065808a0b0
4 changed files with 68 additions and 21 deletions

View File

@ -12,9 +12,11 @@ from vnpy.trader.uiQt import qApp
from vnpy.trader.uiMainWindow import MainWindow from vnpy.trader.uiMainWindow import MainWindow
# 加载底层接口 # 加载底层接口
from vnpy.trader.gateway import (ctpGateway, femasGateway, xspeedGateway, # from vnpy.trader.gateway import (ctpGateway, femasGateway, xspeedGateway,
sgitGateway, oandaGateway, ibGateway, # sgitGateway, oandaGateway, ibGateway,
shzdGateway, huobiGateway, okcoinGateway) # shzdGateway, huobiGateway, okcoinGateway)
from vnpy.trader.gateway import ( huobiGateway, okcoinGateway)
# 加载上层应用 # 加载上层应用
from vnpy.trader.app import (riskManager, ctaStrategy, spreadTrading) from vnpy.trader.app import (riskManager, ctaStrategy, spreadTrading)
@ -30,13 +32,13 @@ def main():
me = MainEngine(ee) me = MainEngine(ee)
# 添加交易接口 # 添加交易接口
me.addGateway(ctpGateway) # me.addGateway(ctpGateway)
me.addGateway(femasGateway) # me.addGateway(femasGateway)
me.addGateway(xspeedGateway) # me.addGateway(xspeedGateway)
me.addGateway(sgitGateway) # me.addGateway(sgitGateway)
me.addGateway(oandaGateway) # me.addGateway(oandaGateway)
me.addGateway(ibGateway) # me.addGateway(ibGateway)
me.addGateway(shzdGateway) # me.addGateway(shzdGateway)
me.addGateway(huobiGateway) me.addGateway(huobiGateway)
me.addGateway(okcoinGateway) me.addGateway(okcoinGateway)

View File

@ -20,6 +20,7 @@ CURRENCY_USD = 'usd'
# 电子货币代码 # 电子货币代码
SYMBOL_BTC = 'btc' SYMBOL_BTC = 'btc'
SYMBOL_LTC = 'ltc' SYMBOL_LTC = 'ltc'
SYMBOL_ETH = 'eth'
# 行情深度 # 行情深度
DEPTH_20 = 20 DEPTH_20 = 20
@ -42,6 +43,7 @@ INTERVAL_1W = 'week'
# 交易代码,需要后缀货币名才能完整 # 交易代码,需要后缀货币名才能完整
TRADING_SYMBOL_BTC = 'btc_' TRADING_SYMBOL_BTC = 'btc_'
TRADING_SYMBOL_LTC = 'ltc_' TRADING_SYMBOL_LTC = 'ltc_'
TRADING_SYMBOL_ETH = 'eth_'
# 委托类型 # 委托类型
TYPE_BUY = 'buy' TYPE_BUY = 'buy'

View File

@ -0,0 +1,18 @@
{
"working": true,
"tick":
[
],
"bar":
[
["BTC_CNY_SPOT", "OKCOIN"],
["LTC_CNY_SPOT", "OKCOIN"],
["ETH_CNY_SPOT", "OKCOIN"]
],
"active":
{
}
}

View File

@ -16,6 +16,7 @@ from copy import copy
from threading import Condition from threading import Condition
from Queue import Queue from Queue import Queue
from threading import Thread from threading import Thread
from time import sleep
from vnpy.api.okcoin import vnokcoin from vnpy.api.okcoin import vnokcoin
from vnpy.trader.vtGateway import * from vnpy.trader.vtGateway import *
@ -55,16 +56,24 @@ LTC_USD_THISWEEK = 'LTC_USD_THISWEEK'
LTC_USD_NEXTWEEK = 'LTC_USD_NEXTWEEK' LTC_USD_NEXTWEEK = 'LTC_USD_NEXTWEEK'
LTC_USD_QUARTER = 'LTC_USD_QUARTER' LTC_USD_QUARTER = 'LTC_USD_QUARTER'
ETH_USD_SPOT = 'ETH_USD_SPOT'
ETH_USD_THISWEEK = 'ETH_USD_THISWEEK'
ETH_USD_NEXTWEEK = 'ETH_USD_NEXTWEEK'
ETH_USD_QUARTER = 'ETH_USD_QUARTER'
# CNY # CNY
BTC_CNY_SPOT = 'BTC_CNY_SPOT' BTC_CNY_SPOT = 'BTC_CNY_SPOT'
LTC_CNY_SPOT = 'LTC_CNY_SPOT' LTC_CNY_SPOT = 'LTC_CNY_SPOT'
ETH_CNY_SPOT = 'ETH_CNY_SPOT'
# 印射字典 # 印射字典
spotSymbolMap = {} spotSymbolMap = {}
spotSymbolMap['ltc_usd'] = LTC_USD_SPOT spotSymbolMap['ltc_usd'] = LTC_USD_SPOT
spotSymbolMap['btc_usd'] = BTC_USD_SPOT spotSymbolMap['btc_usd'] = BTC_USD_SPOT
spotSymbolMap['ETH_usd'] = ETH_USD_SPOT
spotSymbolMap['ltc_cny'] = LTC_CNY_SPOT spotSymbolMap['ltc_cny'] = LTC_CNY_SPOT
spotSymbolMap['btc_cny'] = BTC_CNY_SPOT spotSymbolMap['btc_cny'] = BTC_CNY_SPOT
spotSymbolMap['eth_cny'] = ETH_CNY_SPOT
spotSymbolMapReverse = {v: k for k, v in spotSymbolMap.items()} spotSymbolMapReverse = {v: k for k, v in spotSymbolMap.items()}
@ -76,16 +85,20 @@ channelSymbolMap = {}
# USD # USD
channelSymbolMap['ok_sub_spotusd_btc_ticker'] = BTC_USD_SPOT channelSymbolMap['ok_sub_spotusd_btc_ticker'] = BTC_USD_SPOT
channelSymbolMap['ok_sub_spotusd_ltc_ticker'] = LTC_USD_SPOT channelSymbolMap['ok_sub_spotusd_ltc_ticker'] = LTC_USD_SPOT
channelSymbolMap['ok_sub_spotusd_eth_ticker'] = ETH_USD_SPOT
channelSymbolMap['ok_sub_spotusd_btc_depth_20'] = BTC_USD_SPOT channelSymbolMap['ok_sub_spotusd_btc_depth_20'] = BTC_USD_SPOT
channelSymbolMap['ok_sub_spotusd_ltc_depth_20'] = LTC_USD_SPOT channelSymbolMap['ok_sub_spotusd_ltc_depth_20'] = LTC_USD_SPOT
channelSymbolMap['ok_sub_spotusd_eth_depth_20'] = ETH_USD_SPOT
# CNY # CNY
channelSymbolMap['ok_sub_spotcny_btc_ticker'] = BTC_CNY_SPOT channelSymbolMap['ok_sub_spotcny_btc_ticker'] = BTC_CNY_SPOT
channelSymbolMap['ok_sub_spotcny_ltc_ticker'] = LTC_CNY_SPOT channelSymbolMap['ok_sub_spotcny_ltc_ticker'] = LTC_CNY_SPOT
channelSymbolMap['ok_sub_spotcny_eth_ticker'] = ETH_CNY_SPOT
channelSymbolMap['ok_sub_spotcny_btc_depth_20'] = BTC_CNY_SPOT channelSymbolMap['ok_sub_spotcny_btc_depth_20'] = BTC_CNY_SPOT
channelSymbolMap['ok_sub_spotcny_ltc_depth_20'] = LTC_CNY_SPOT channelSymbolMap['ok_sub_spotcny_ltc_depth_20'] = LTC_CNY_SPOT
channelSymbolMap['ok_sub_spotcny_eth_depth_20'] = ETH_CNY_SPOT
@ -306,17 +319,20 @@ class Api(vnokcoin.OkCoinApi):
self.spotOrderInfo(vnokcoin.TRADING_SYMBOL_LTC, '-1') self.spotOrderInfo(vnokcoin.TRADING_SYMBOL_LTC, '-1')
self.spotOrderInfo(vnokcoin.TRADING_SYMBOL_BTC, '-1') self.spotOrderInfo(vnokcoin.TRADING_SYMBOL_BTC, '-1')
self.spotOrderInfo(vnokcoin.TRADING_SYMBOL_ETH, '-1')
# 连接后订阅现货的成交和账户数据 # 连接后订阅现货的成交和账户数据
self.subscribeSpotTrades() self.subscribeSpotTrades()
self.subscribeSpotUserInfo() self.subscribeSpotUserInfo()
self.subscribeSpotTicker(vnokcoin.SYMBOL_BTC) self.subscribeSpotTicker(vnokcoin.SYMBOL_BTC)
self.subscribeSpotTicker(vnokcoin.SYMBOL_LTC) self.subscribeSpotTicker(vnokcoin.SYMBOL_LTC)
self.subscribeSpotTicker(vnokcoin.SYMBOL_ETH)
self.subscribeSpotDepth(vnokcoin.SYMBOL_BTC, vnokcoin.DEPTH_20) self.subscribeSpotDepth(vnokcoin.SYMBOL_BTC, vnokcoin.DEPTH_20)
self.subscribeSpotDepth(vnokcoin.SYMBOL_LTC, vnokcoin.DEPTH_20) self.subscribeSpotDepth(vnokcoin.SYMBOL_LTC, vnokcoin.DEPTH_20)
self.subscribeSpotDepth(vnokcoin.SYMBOL_ETH, vnokcoin.DEPTH_20)
# 如果连接的是USD网站则订阅期货相关回报数据 # 如果连接的是USD网站则订阅期货相关回报数据
if self.currency == vnokcoin.CURRENCY_USD: if self.currency == vnokcoin.CURRENCY_USD:
self.subscribeFutureTrades() self.subscribeFutureTrades()
@ -347,10 +363,12 @@ class Api(vnokcoin.OkCoinApi):
# USD_SPOT # USD_SPOT
self.cbDict['ok_sub_spotusd_btc_ticker'] = self.onTicker self.cbDict['ok_sub_spotusd_btc_ticker'] = self.onTicker
self.cbDict['ok_sub_spotusd_ltc_ticker'] = self.onTicker self.cbDict['ok_sub_spotusd_ltc_ticker'] = self.onTicker
self.cbDict['ok_sub_spotusd_eth_ticker'] = self.onTicker
self.cbDict['ok_sub_spotusd_btc_depth_20'] = self.onDepth self.cbDict['ok_sub_spotusd_btc_depth_20'] = self.onDepth
self.cbDict['ok_sub_spotusd_ltc_depth_20'] = self.onDepth self.cbDict['ok_sub_spotusd_ltc_depth_20'] = self.onDepth
self.cbDict['ok_sub_spotusd_eth_depth_20'] = self.onDepth
self.cbDict['ok_spotusd_userinfo'] = self.onSpotUserInfo self.cbDict['ok_spotusd_userinfo'] = self.onSpotUserInfo
self.cbDict['ok_spotusd_orderinfo'] = self.onSpotOrderInfo self.cbDict['ok_spotusd_orderinfo'] = self.onSpotOrderInfo
@ -363,10 +381,12 @@ class Api(vnokcoin.OkCoinApi):
# CNY_SPOT # CNY_SPOT
self.cbDict['ok_sub_spotcny_btc_ticker'] = self.onTicker self.cbDict['ok_sub_spotcny_btc_ticker'] = self.onTicker
self.cbDict['ok_sub_spotcny_ltc_ticker'] = self.onTicker self.cbDict['ok_sub_spotcny_ltc_ticker'] = self.onTicker
self.cbDict['ok_sub_spotcny_eth_ticker'] = self.onTicker
self.cbDict['ok_sub_spotcny_btc_depth_20'] = self.onDepth self.cbDict['ok_sub_spotcny_btc_depth_20'] = self.onDepth
self.cbDict['ok_sub_spotcny_ltc_depth_20'] = self.onDepth self.cbDict['ok_sub_spotcny_ltc_depth_20'] = self.onDepth
self.cbDict['ok_sub_spotcny_eth_depth_20'] = self.onDepth
self.cbDict['ok_spotcny_userinfo'] = self.onSpotUserInfo self.cbDict['ok_spotcny_userinfo'] = self.onSpotUserInfo
self.cbDict['ok_spotcny_orderinfo'] = self.onSpotOrderInfo self.cbDict['ok_spotcny_orderinfo'] = self.onSpotOrderInfo
@ -453,7 +473,7 @@ class Api(vnokcoin.OkCoinApi):
funds = rawData['info']['funds'] funds = rawData['info']['funds']
# 持仓信息 # 持仓信息
for symbol in ['btc', 'ltc', self.currency]: for symbol in ['btc', 'ltc','eth', self.currency]:
if symbol in funds['free']: if symbol in funds['free']:
pos = VtPositionData() pos = VtPositionData()
pos.gatewayName = self.gatewayName pos.gatewayName = self.gatewayName
@ -486,7 +506,7 @@ class Api(vnokcoin.OkCoinApi):
info = rawData['info'] info = rawData['info']
# 持仓信息 # 持仓信息
for symbol in ['btc', 'ltc', self.currency]: for symbol in ['btc', 'ltc','eth', self.currency]:
if symbol in info['free']: if symbol in info['free']:
pos = VtPositionData() pos = VtPositionData()
pos.gatewayName = self.gatewayName pos.gatewayName = self.gatewayName
@ -617,7 +637,8 @@ class Api(vnokcoin.OkCoinApi):
contractList.append(self.generateSpecificContract(contract, BTC_CNY_SPOT)) contractList.append(self.generateSpecificContract(contract, BTC_CNY_SPOT))
contractList.append(self.generateSpecificContract(contract, LTC_CNY_SPOT)) contractList.append(self.generateSpecificContract(contract, LTC_CNY_SPOT))
contractList.append(self.generateSpecificContract(contract, ETH_CNY_SPOT))
return contractList return contractList
#---------------------------------------------------------------------- #----------------------------------------------------------------------
@ -634,7 +655,8 @@ class Api(vnokcoin.OkCoinApi):
contractList.append(self.generateSpecificContract(contract, BTC_USD_SPOT)) contractList.append(self.generateSpecificContract(contract, BTC_USD_SPOT))
contractList.append(self.generateSpecificContract(contract, LTC_USD_SPOT)) contractList.append(self.generateSpecificContract(contract, LTC_USD_SPOT))
contractList.append(self.generateSpecificContract(contract, ETH_USD_SPOT))
# 期货 # 期货
contract.productClass = PRODUCT_FUTURES contract.productClass = PRODUCT_FUTURES
@ -644,6 +666,9 @@ class Api(vnokcoin.OkCoinApi):
contractList.append(self.generateSpecificContract(contract, LTC_USD_THISWEEK)) contractList.append(self.generateSpecificContract(contract, LTC_USD_THISWEEK))
contractList.append(self.generateSpecificContract(contract, LTC_USD_NEXTWEEK)) contractList.append(self.generateSpecificContract(contract, LTC_USD_NEXTWEEK))
contractList.append(self.generateSpecificContract(contract, LTC_USD_QUARTER)) contractList.append(self.generateSpecificContract(contract, LTC_USD_QUARTER))
contractList.append(self.generateSpecificContract(contract, ETH_USD_THISWEEK))
contractList.append(self.generateSpecificContract(contract, ETH_USD_NEXTWEEK))
contractList.append(self.generateSpecificContract(contract, ETH_USD_QUARTER))
return contractList return contractList