Skip to content

Commit 13d8919

Browse files
author
Alex Liu
committed
update
1 parent ab4a6e4 commit 13d8919

File tree

17 files changed

+1851
-33
lines changed

17 files changed

+1851
-33
lines changed

examples/candle_chart/run.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111

1212
database = get_database()
1313
bars = database.load_bar_data(
14-
"IF888",
15-
Exchange.CFFEX,
14+
"BTCUSDT",
15+
Exchange.BINANCE,
1616
interval=Interval.MINUTE,
1717
start=datetime(2019, 7, 1),
1818
end=datetime(2019, 7, 17)

examples/veighna_trader/demo_script.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def run(engine: ScriptEngine):
1818
5. 股票市场扫描选股类交易策略(龙一、龙二)
1919
6. 等等~~~
2020
"""
21-
vt_symbols = ["IF1912.CFFEX", "rb2001.SHFE"]
21+
vt_symbols = ["BTCUSDT.BINANCE", "rb2001.SHFE"]
2222

2323
# 订阅行情
2424
engine.subscribe(vt_symbols)

examples/veighna_trader/run.py

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from vnpy.trader.engine import MainEngine
55
from vnpy.trader.ui import MainWindow, create_qapp
6-
6+
from vnpy_binance import BinanceGateway
77
from vnpy_ctp import CtpGateway
88
# from vnpy_ctptest import CtptestGateway
99
# from vnpy_mini import MiniGateway
@@ -24,22 +24,23 @@
2424
# from vnpy_ost import OstGateway
2525
# from vnpy_hft import GtjaGateway
2626

27-
# from vnpy_paperaccount import PaperAccountApp
27+
from vnpy_paperaccount import PaperAccountApp
2828
from vnpy_ctastrategy import CtaStrategyApp
2929
from vnpy_ctabacktester import CtaBacktesterApp
30-
# from vnpy_spreadtrading import SpreadTradingApp
31-
# from vnpy_algotrading import AlgoTradingApp
32-
# from vnpy_optionmaster import OptionMasterApp
33-
# from vnpy_portfoliostrategy import PortfolioStrategyApp
34-
# from vnpy_scripttrader import ScriptTraderApp
35-
# from vnpy_chartwizard import ChartWizardApp
30+
from vnpy_spreadtrading import SpreadTradingApp
31+
from vnpy_algotrading import AlgoTradingApp
32+
from vnpy_optionmaster import OptionMasterApp
33+
from vnpy_portfoliostrategy import PortfolioStrategyApp
34+
from vnpy_scripttrader import ScriptTraderApp
35+
from vnpy_chartwizard import ChartWizardApp
3636
# from vnpy_rpcservice import RpcServiceApp
37-
# from vnpy_excelrtd import ExcelRtdApp
37+
from vnpy_excelrtd import ExcelRtdApp
3838
from vnpy_datamanager import DataManagerApp
39-
# from vnpy_datarecorder import DataRecorderApp
40-
# from vnpy_riskmanager import RiskManagerApp
41-
# from vnpy_webtrader import WebTraderApp
42-
# from vnpy_portfoliomanager import PortfolioManagerApp
39+
40+
from vnpy_datarecorder import DataRecorderApp
41+
from vnpy_riskmanager import RiskManagerApp
42+
from vnpy_webtrader import WebTraderApp
43+
from vnpy_portfoliomanager import PortfolioManagerApp
4344

4445

4546
def main():
@@ -50,7 +51,7 @@ def main():
5051

5152
main_engine = MainEngine(event_engine)
5253

53-
main_engine.add_gateway(CtpGateway)
54+
main_engine.add_gateway(BinanceGateway)
5455
# main_engine.add_gateway(CtptestGateway)
5556
# main_engine.add_gateway(MiniGateway)
5657
# main_engine.add_gateway(FemasGateway)
@@ -72,22 +73,22 @@ def main():
7273
# main_engine.add_gateway(NhFuturesGateway)
7374
# main_engine.add_gateway(NhStockGateway)
7475

75-
# main_engine.add_app(PaperAccountApp)
76+
main_engine.add_app(PaperAccountApp)
7677
main_engine.add_app(CtaStrategyApp)
7778
main_engine.add_app(CtaBacktesterApp)
78-
# main_engine.add_app(SpreadTradingApp)
79-
# main_engine.add_app(AlgoTradingApp)
80-
# main_engine.add_app(OptionMasterApp)
81-
# main_engine.add_app(PortfolioStrategyApp)
82-
# main_engine.add_app(ScriptTraderApp)
83-
# main_engine.add_app(ChartWizardApp)
79+
main_engine.add_app(SpreadTradingApp)
80+
main_engine.add_app(AlgoTradingApp)
81+
main_engine.add_app(OptionMasterApp)
82+
main_engine.add_app(PortfolioStrategyApp)
83+
main_engine.add_app(ScriptTraderApp)
84+
main_engine.add_app(ChartWizardApp)
8485
# main_engine.add_app(RpcServiceApp)
85-
# main_engine.add_app(ExcelRtdApp)
86+
main_engine.add_app(ExcelRtdApp)
8687
main_engine.add_app(DataManagerApp)
87-
# main_engine.add_app(DataRecorderApp)
88-
# main_engine.add_app(RiskManagerApp)
89-
# main_engine.add_app(WebTraderApp)
90-
# main_engine.add_app(PortfolioManagerApp)
88+
main_engine.add_app(DataRecorderApp)
89+
main_engine.add_app(RiskManagerApp)
90+
main_engine.add_app(WebTraderApp)
91+
main_engine.add_app(PortfolioManagerApp)
9192

9293
main_window = MainWindow(main_engine, event_engine)
9394
main_window.showMaximized()

run.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# flake8: noqa
2+
from vnpy.event import EventEngine
3+
4+
from vnpy.trader.engine import MainEngine
5+
from vnpy.trader.ui import MainWindow, create_qapp
6+
from vnpy_binance import BinanceGateway
7+
from vnpy_ctp import CtpGateway
8+
# from vnpy_ctptest import CtptestGateway
9+
# from vnpy_mini import MiniGateway
10+
# from vnpy_femas import FemasGateway
11+
# from vnpy_sopt import SoptGateway
12+
# from vnpy_sec import SecGateway
13+
# from vnpy_uft import UftGateway
14+
# from vnpy_esunny import EsunnyGateway
15+
# from vnpy_xtp import XtpGateway
16+
# from vnpy_tora import ToraStockGateway
17+
# from vnpy_tora import ToraOptionGateway
18+
# from vnpy_comstar import ComstarGateway
19+
# from vnpy_ib import IbGateway
20+
# from vnpy_tap import TapGateway
21+
# from vnpy_da import DaGateway
22+
# from vnpy_rohon import RohonGateway
23+
# from vnpy_tts import TtsGateway
24+
# from vnpy_ost import OstGateway
25+
# from vnpy_hft import GtjaGateway
26+
27+
from vnpy_paperaccount import PaperAccountApp
28+
from vnpy_ctastrategy import CtaStrategyApp
29+
from vnpy_ctabacktester import CtaBacktesterApp
30+
from vnpy_spreadtrading import SpreadTradingApp
31+
from vnpy_algotrading import AlgoTradingApp
32+
from vnpy_optionmaster import OptionMasterApp
33+
from vnpy_portfoliostrategy import PortfolioStrategyApp
34+
from vnpy_scripttrader import ScriptTraderApp
35+
from vnpy_chartwizard import ChartWizardApp
36+
# from vnpy_rpcservice import RpcServiceApp
37+
from vnpy_excelrtd import ExcelRtdApp
38+
from vnpy_datamanager import DataManagerApp
39+
40+
from vnpy_datarecorder import DataRecorderApp
41+
from vnpy_riskmanager import RiskManagerApp
42+
from vnpy_webtrader import WebTraderApp
43+
from vnpy_portfoliomanager import PortfolioManagerApp
44+
45+
46+
def main():
47+
""""""
48+
qapp = create_qapp()
49+
50+
event_engine = EventEngine()
51+
52+
main_engine = MainEngine(event_engine)
53+
54+
main_engine.add_gateway(BinanceGateway,"BINANCE")
55+
main_engine.connect({"key":"value"},"BINANCE")
56+
# main_engine.subscribe("binance_gateway", "BINANCE)
57+
# main_engine.add_gateway(CtptestGateway)
58+
# main_engine.add_gateway(MiniGateway)
59+
# main_engine.add_gateway(FemasGateway)
60+
# main_engine.add_gateway(SoptGateway)
61+
# main_engine.add_gateway(SecGateway)
62+
# main_engine.add_gateway(UftGateway)
63+
# main_engine.add_gateway(EsunnyGateway)
64+
# main_engine.add_gateway(XtpGateway)
65+
# main_engine.add_gateway(ToraStockGateway)
66+
# main_engine.add_gateway(ToraOptionGateway)
67+
# main_engine.add_gateway(OesGateway)
68+
# main_engine.add_gateway(ComstarGateway)
69+
# main_engine.add_gateway(IbGateway)
70+
# main_engine.add_gateway(TapGateway)
71+
# main_engine.add_gateway(DaGateway)
72+
# main_engine.add_gateway(RohonGateway)
73+
# main_engine.add_gateway(TtsGateway)
74+
# main_engine.add_gateway(OstGateway)
75+
# main_engine.add_gateway(NhFuturesGateway)
76+
# main_engine.add_gateway(NhStockGateway)
77+
78+
# main_engine.add_app(PaperAccountApp)
79+
main_engine.add_app(CtaStrategyApp)
80+
# main_engine.add_app(CtaBacktesterApp)
81+
# main_engine.add_app(SpreadTradingApp)
82+
# main_engine.add_app(AlgoTradingApp)
83+
# main_engine.add_app(OptionMasterApp)
84+
# main_engine.add_app(PortfolioStrategyApp)
85+
# main_engine.add_app(ScriptTraderApp)
86+
# main_engine.add_app(ChartWizardApp)
87+
# main_engine.add_app(RpcServiceApp)
88+
# main_engine.add_app(ExcelRtdApp)
89+
# main_engine.add_app(DataManagerApp)
90+
# main_engine.add_app(DataRecorderApp)
91+
# main_engine.add_app(RiskManagerApp)
92+
# main_engine.add_app(WebTraderApp)
93+
# main_engine.add_app(PortfolioManagerApp)
94+
95+
main_window = MainWindow(main_engine, event_engine)
96+
main_window.showMaximized()
97+
98+
qapp.exec()
99+
100+
101+
if __name__ == "__main__":
102+
main()

test.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from binance.client import Client
2+
from vnpy.trader.object import (
3+
ContractData,
4+
Exchange,
5+
Product,
6+
)
7+
8+
api_key = "77VqyxrjpGfX0F6QSVj9BfM6RgpCTekVOGPSYHr2IqAGQ5B7xf6XV1W90w9QRKyD"
9+
api_secret = "4VJ2iJYbAqutncrtGtucFdoAPb6b5AmI8Ibe1K9R8kZvUsYySKUmxiNGctPxmsSU"
10+
server = "TESTNET"
11+
12+
client = Client(
13+
api_key=api_key,
14+
api_secret=api_secret,
15+
testnet=(server == "TESTNET")
16+
)
17+
18+
exchange_info = client.get_exchange_info()
19+
20+
print(exchange_info["symbols"])
21+
22+
for symbol_data in exchange_info["symbols"]:
23+
if symbol_data.get("status", "") != "TRADING":
24+
continue
25+
26+
symbol = symbol_data["symbol"]
27+
contract = ContractData(
28+
symbol=symbol,
29+
exchange=Exchange.BINANCE,
30+
name=symbol,
31+
product=Product.SPOT,
32+
size=1,
33+
pricetick=float(next(filter for filter in symbol_data["filters"] if filter["filterType"] == "PRICE_FILTER")["tickSize"]),
34+
min_volume=float(next(filter for filter in symbol_data["filters"] if filter["filterType"] == "LOT_SIZE")["minQty"]),
35+
gateway_name='test'
36+
)
37+
print(exchange_info["symbols"])

test1.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from binance import ThreadedWebsocketManager
2+
from binance.client import Client
3+
from binance.exceptions import BinanceAPIException
4+
5+
twm = ThreadedWebsocketManager(
6+
api_key="77VqyxrjpGfX0F6QSVj9BfM6RgpCTekVOGPSYHr2IqAGQ5B7xf6XV1W90w9QRKyD",
7+
api_secret="4VJ2iJYbAqutncrtGtucFdoAPb6b5AmI8Ibe1K9R8kZvUsYySKUmxiNGctPxmsSU",
8+
https_proxy="socks5://127.0.0.1:7890"
9+
)
10+
twm.start()
11+
12+
13+
def handle_trade_data(trade_data):
14+
print(trade_data)
15+
16+
twm.start_trade_socket(
17+
callback=handle_trade_data,
18+
symbol="BTCUSDT"
19+
)
20+
21+

vnpy/trader/constant.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class Exchange(Enum):
135135

136136
# Special Function
137137
LOCAL = "LOCAL" # For local generated data
138-
138+
BINANCE = "BINANCE" # For Binance data feed
139139

140140
class Currency(Enum):
141141
"""

vnpy/trader/locale/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66

77
translations: gettext.GNUTranslations = gettext.translation("vnpy", localedir=localedir, fallback=True)
88

9-
_ = translations.gettext
9+
# _ = translations.gettext
10+
_ = lambda message: message

vnpy/trader/ui/widget.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import csv
66
from datetime import datetime
7+
from pickle import Pickler
78
import platform
89
from enum import Enum
910
from typing import Any, Dict, List
@@ -701,7 +702,7 @@ def init_ui(self) -> None:
701702

702703
self.symbol_line: QtWidgets.QLineEdit = QtWidgets.QLineEdit()
703704
self.symbol_line.returnPressed.connect(self.set_vt_symbol)
704-
705+
self.symbol_line.setText("BTCUSDT")
705706
self.name_line: QtWidgets.QLineEdit = QtWidgets.QLineEdit()
706707
self.name_line.setReadOnly(True)
707708

@@ -888,7 +889,7 @@ def set_vt_symbol(self) -> None:
888889
symbol: str = str(self.symbol_line.text())
889890
if not symbol:
890891
return
891-
892+
892893
# Generate vt_symbol from symbol and exchange
893894
exchange_value: str = str(self.exchange_combo.currentText())
894895
vt_symbol: str = f"{symbol}.{exchange_value}"
@@ -913,6 +914,7 @@ def set_vt_symbol(self) -> None:
913914
# Update price digits
914915
self.price_digits = get_digits(contract.pricetick)
915916

917+
916918
self.clear_label_text()
917919
self.volume_line.setText("")
918920
self.price_line.setText("")

vnpy_binance/setup.cfg

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
[metadata]
2+
name = vnpy_binance
3+
version = 0.0.1
4+
url = https://www.vnpy.com
5+
license = MIT
6+
author = Alex Liu
7+
author_email = [email protected]
8+
description = Binance datafeed for VeighNa quant trading framework.
9+
long_description = file: README.md
10+
long_description_content_type = text/markdown
11+
keywords =
12+
quant
13+
quantitative
14+
investment
15+
trading
16+
algotrading
17+
classifiers =
18+
Development Status :: 5 - Production/Stable
19+
Operating System :: OS Independent
20+
Programming Language :: Python :: 3
21+
Programming Language :: Python :: 3.8
22+
Programming Language :: Python :: 3.9
23+
Programming Language :: Python :: 3.10
24+
Topic :: Office/Business :: Financial :: Investment
25+
Programming Language :: Python :: Implementation :: CPython
26+
License :: OSI Approved :: MIT License
27+
Natural Language :: Chinese (Simplified)
28+
29+
[options]
30+
packages = find:
31+
include_package_data = True
32+
zip_safe = False
33+
install_requires =
34+
python-binance

0 commit comments

Comments
 (0)