{"id":22693643,"url":"https://github.com/jadepeng/pytrader","last_synced_at":"2025-04-05T14:04:26.479Z","repository":{"id":37426451,"uuid":"426865345","full_name":"jadepeng/pytrader","owner":"jadepeng","description":"一款支持东方财富A股 自动交易的量化交易框架，支持简单回测","archived":false,"fork":false,"pushed_at":"2023-10-24T07:49:28.000Z","size":14798,"stargazers_count":356,"open_issues_count":4,"forks_count":121,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-03-29T13:05:24.944Z","etag":null,"topics":["quotation","trader"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jadepeng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-11T04:04:42.000Z","updated_at":"2025-03-29T06:00:57.000Z","dependencies_parsed_at":"2025-01-01T11:05:49.131Z","dependency_job_id":null,"html_url":"https://github.com/jadepeng/pytrader","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jadepeng%2Fpytrader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jadepeng%2Fpytrader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jadepeng%2Fpytrader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jadepeng%2Fpytrader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jadepeng","download_url":"https://codeload.github.com/jadepeng/pytrader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247345850,"owners_count":20924102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["quotation","trader"],"created_at":"2024-12-10T02:12:09.998Z","updated_at":"2025-04-05T14:04:26.463Z","avatar_url":"https://github.com/jadepeng.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pytrader\n\n基于 [easytrader](https://github.com/shidenggui/easytrader) 和 [easyquotation](https://github.com/shidenggui/easyquotation) 的量化交易框架\n\n支持东方财富自动交易\n\n## 安装\n\n    pip3 install -r requirements.txt\n\n- 手动安装`talib`依赖, [talib](https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib)\n\n## web 系统\n\n新增web，可以设置关注的股票，显示T操作价格\n\n![关注的股票](doc/watch_stock.png)\n\n## 策略文件\n\n在strategies目录，可以参考已有的编写。\n\n策略需要继承StrategyTemplate类，实现int和onbar等函数。\n\ninit 设置关注的股票，行情引擎就会推动股票行情。\n \n```python\n\n    def init(self):\n        for stock_code in self.watch_stocks:\n            self.quotation_engine.watch(stock_code)\n\n\n```\n\n行情数据到来时，触发on_bar函数：\n\n```python\n\n\ndef on_bar(self, context: Context, data: Dict[str, DataFrame]):\n    pass\n\n```\n\n- Context 是一个工具类，可以获取其他bar或者计算cci、rsi等指标\n- data是推动的行情字典，可以用股票代码获取DataFrame类型的行情数据\n\n\n## 在线交易\n\n参见 tradertest.py ，会加载所有策略，稍微改动下也能支持制定策略\n\n```python\n\nimport easyquant\nfrom easyquant import DefaultLogHandler\n\nprint('测试 DEMO')\n\n# 东财\nbroker = 'eastmoney'\n\n# 自己准备\n# {\n#     \"user\": \"\",\n#     \"password\": \"\"# }\nneed_data = 'account.json'\n\nlog_type = 'file'\n\nlog_handler = DefaultLogHandler(name='测试', log_type=log_type, filepath='logs.log')\n\nm = easyquant.MainEngine(broker,\n                         need_data,\n                         quotation='online',\n                         # 1分钟K线\n                         bar_type=\"1m\",\n                         log_handler=log_handler)\nm.is_watch_strategy = True  # 策略文件出现改动时,自动重载,不建议在生产环境下使用\nm.load_strategy()\nm.start()\n\n```\n\n## 回测\n\n参考backtest.py，设置回测的时间和策略，注意使用quotation需要为tushare或者jqdata，可以自己申请\n\n```python\nimport easyquotation\n\nimport easyquant\nfrom easyquant import  DefaultLogHandler, PushBaseEngine\nfrom easyquant.log_handler.default_handler import MockLogHandler\nfrom strategies.CCI import Strategy\n\nprint('backtest 回测 测试 ')\n\nbroker = 'mock'\nneed_data = 'account.json'\n\n#\nmock_start_dt = \"2020-01-01\"\nmock_end_dt= \"2021-11-11\"\n\n\nm = easyquant.MainEngine(broker, need_data,\n                         quotation='tushare',\n                         # quotation='jqdata',\n                         bar_type=\"1d\")\n\nlog_handler = MockLogHandler(context=m.context)\n\n# 选择策略\nstrategy = Strategy(user=m.user, log_handler=log_handler, main_engine=m)\n\nm.start_mock(mock_start_dt, mock_end_dt, strategy)\n\nprint('mock end')\n\nprint(m.user.get_balance())\n\nfor deal in m.user.get_current_deal():\n    print(deal.deal_time, deal.bs_type, deal.deal_price, deal.deal_amount)\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjadepeng%2Fpytrader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjadepeng%2Fpytrader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjadepeng%2Fpytrader/lists"}