{"id":21034397,"url":"https://github.com/zpoint/nettrade","last_synced_at":"2025-10-07T08:32:28.337Z","repository":{"id":57445701,"uuid":"173269889","full_name":"zpoint/NetTrade","owner":"zpoint","description":"ETF拯救世界提到过的闲钱网格策略探索","archived":false,"fork":false,"pushed_at":"2019-07-01T14:43:40.000Z","size":34,"stargazers_count":38,"open_issues_count":0,"forks_count":17,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-12T23:22:52.463Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zpoint.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-01T09:04:21.000Z","updated_at":"2024-12-29T17:48:05.000Z","dependencies_parsed_at":"2022-09-26T17:30:51.665Z","dependency_job_id":null,"html_url":"https://github.com/zpoint/NetTrade","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/zpoint%2FNetTrade","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpoint%2FNetTrade/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpoint%2FNetTrade/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zpoint%2FNetTrade/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zpoint","download_url":"https://codeload.github.com/zpoint/NetTrade/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235607145,"owners_count":19017302,"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":[],"created_at":"2024-11-19T13:03:59.627Z","updated_at":"2025-10-07T08:32:22.980Z","avatar_url":"https://github.com/zpoint.png","language":"Python","readme":"# NetTrade\n网格交易策略辅助记录脚本\n本脚本只是本人个人针对 ETF拯救世界 在以下地方提到过的闲钱网格的探索测试以及记录，完全是本人的个人行为\n\n策略来源:\n* [闲散资金的策略-微博问答 2017-03-22](https://weibo.com/ttwenda/p/show?id=2310684088171439759396)\n* [网格说明-雪球 2015年9月2日](https://xueqiu.com/4776750571/55799950)\n* [有没有博友愿意为大家做道题？ 2013年8月23日](https://www.chinaetfs.net/?p=895)\n* [网格操作记录 2012年6月25日](https://www.chinaetfs.net/?p=757)\n\n数据来源:\n* [集思录分享](https://www.jisilu.cn/question/55996)\n* [螺丝钉分享](https://xueqiu.com/1997857856/62838103)\n\n计算方法:\n* [估值计算方法](http://fund.eastmoney.com/news/1594,20170322722385868.html)\n\n\n### 注意\n* 你可以理解成 E大 提出了算法，本人用自己的理解把算法实现了一遍，同样的算法不同的实现，可能存在不同的边界判定，运行效率，甚至出现逻辑错误，本人尽最大努力追求易用性和 bug-free\n* 测试时用每日收盘净值净值测试，数据源来自上面的集思录分享，假设最多每日只能操作一次\n* 网格策略只适合波动市，单边下跌或者单边上涨不适用，如下第一网时不留足安全边际，很可能非常长一段时间收不回网(下的位置不够低，导致几年都回不到这个位置)\n* 本项目还在开发中，具体进度视本人时间安排而定\n\n### 功能\n* 自定义网格策略\n* 用历史数据进行策略收益计算\n* 对自定义网格策略下一次入网，出网价格，当前收益率等值计算，程序自动保存至 **excel**，可也手动编辑 **excel** 修改记录后程序读入\n\n### 策略概述\n\n* 条件A: 低于历史估值均值 20% (每个人计算估值的方法应该是不太一样的，作为小韭菜也没有获取数据的来源，你可以对接自己的数据来源, 这里作为测试先写死一个净值开始)\n* 条件B: 还没想好\n\n#### 策略A\n1. 第一网: 达到条件(A或B或者其他，自己定)， 入 1 网\n2. 幅度\n   * a: 3%\n   * b: 5%\n3. 下跌: 每达到最近次交易价格的幅度, 每网金额增加 20%，入一网\n4. 上涨: 每达到最近次交易价格的幅度, 每网金额减小 20%,  出网\n   * 5a: 将低于当前价格买入的份额全部出掉\n   * 5b: 买入份额/买入次数 得到一个平均每次买入份数，出掉低于当前价格的买入次数 * 平均每次买入份数\n\n#### 策略B\nn = 入网次数-出网次数 (n = 0)\n1. 第一网:  达到条件, 入 1 网 (n = 1)\n2. 幅度\n   * a: 3%\n   * b: 5%\n3. 下跌: 每达到最近次交易价格的幅度, 买入 money 金额，money = max((floor(n / 3) + 1) * 每网钱数, 你能接受的一网的最大买入的钱数), 总买入次数 += floor(money / 每网初始价格)\n4. 上涨: 每达到最近次交易价格的幅度, 出网\n   * 5a: 将低于当前价格买入的份额全部出掉\n   * 5b: 买入份额/买入次数 得到一个平均每次买入份数，出掉低于当前价格的买入次数 * 平均每次买入份数\n\n#### 怎么玩?\n\n##### 环境/安装\n\n\t# python \u003e= 3.5.2\n    pip3 install NetTrade\n\n##### 进行网格记录\n\n    from NetTrade.Notes.RealNotes import RealNotes\n    from NetTrade.Strategy.NetstrategyA import NetstrategyA\n\n    if __name__ == \"__main__\":\n        # 以华宝油气为例， 传入华宝油气代码，第一次调用 buy, 会在当前目录下生成同名 xlsx 文件，用于记录和下次读取计算\n        # 目前只实现了策略A基本版\n        # range_percent: 选填，网格幅度，默认 3%\n        # growth_rate: 选填，每下一网增加金额，默认 20%, 这里传的是 30%\n        r = RealNotes(\"sz162411\", NetstrategyA, range_percent=0.03, growth_rate=0.3)\n        # 写入购买记录，净值为 0.505, 份额为4000份\n        r.buy(0.505, 4000)\n        r.calc_next_val() # 计算并打印下次需要购买和卖出的份额与净值\n        # 下次买入价格: 0.49    \t买入份额: 5400    \t买入金额: 2646.0\n        # 下次卖出价格: 0.521   \t卖出份额: 4000.0  \t卖出金额: 2084.0\n\n        # 写入购买记录，净值为 0.49, 份额为 5400\n        # r.buy(0.49, 5400)\n        # 写入购买记录，净值为 0.475, 份额为 7300\n        # r.buy(0.475, 7300)\n        # 写入卖出记录，净值为 0.521，份额为 4000\n        # r.sell(0.521, 4000)\n        # 计算下一网的买入和卖出的净值和份额，并打印\n        # r.calc_next_val()\n        # 计算网格操作至今各种数据\n        r.pr_status()\n\n\n##### 测试策略历史收益\n\n    from NetTrade.HistoryNotes.HistoryNotes import HistoryNotes\n    from NetTrade.Strategy.NetstrategyA import NetstrategyA\n\n    if __name__ == \"__main__\":\n        # 目前只实现了策略A： NetstrategyA\n        # 目前只有来自集思录的数据源分享: jsl\n        # 测试代码华宝油气: sz162411\n        # 开始入第一网的净值: 0.6\n        # 第一网的价格为 2000 (会根据100的整数倍调整)\n        # 2017 表示从2017年开始(闭区间)\n        # 2019 表示到2019奶奶结束(闭区间)\n        # range_percent 下跌/上涨幅度 这里是 3%\n        # growth_rate 每下一网价格上涨幅度 这里是 30%\n        HistoryNotes(NetstrategyA, \"jsl\", \"sz162411\", 0.6, 2000, 2017, 2019, range_percent=0.03, growth_rate=0.3)\n\n\n##### 单日过大跌幅/涨幅记录\n\n\tfrom NetTrade.Notes.RealNotes import RealNotes\n\tfrom NetTrade.Strategy.NetstrategyA import NetstrategyA\n\n    def note():\n        r = RealNotes(\"sz162411\", NetstrategyA, range_percent=0.03, growth_rate=0.3)\n        r.buy(0.505, 4000)\n        r.buy(0.49, 5400)\n        r.buy(0.475, 7300)\n        r.calc_curr_val(0.505)\n        # 当前净值涨幅过大: 需要加大卖出，价格: 0.505   \t卖出份额: 12700.0 \t卖出金额: 6413.5\n        r.sell(0.505, 12700)\n        r.calc_curr_val(0.455)\n        # 当前净值跌幅过大，需要加大买入, 价格: 0.455   \t买入份额: 11100   \t买入金额: 5050.5 \n        # r.calc_next_val()\n\n        # r.pr_status()\n        # r.calc_curr_val(0.505)\n\n\n    if __name__ == \"__main__\":\n        note()\n\n\n\n\n##### 自定义策略\n* 待开发\n\n\n#### 输出示例\n\n    r.calc_next_val()\n\t# 下次买入价格: 0.461   \t买入份额: 9800    \t买入金额: 4517.8  \n\t# 下次卖出价格: 0.49    \t卖出份额: 7300.0  \t卖出金额: 3577.0\n\n    r.pr_status()\n    # 操作历史:\n    # 净值        \t份额        \t金额        \t操作        \t日期                  \t当前动用过本金        \t当前收益率     \n    # 0.505     \t4000.0    \t2020.0    \t买入        \t2019-03-06 16:39:09 \t2020.0              \t0.00%     \n    # 0.49      \t5400.0    \t2646.0    \t买入        \t2019-03-06 16:39:09 \t4666.0              \t-1.29%    \n    # 0.475     \t7300.0    \t3467.5    \t买入        \t2019-03-06 16:39:09 \t8133.5              \t-2.47%    \n    # 0.505     \t12700.0   \t6413.5    \t卖出        \t2019-03-06 16:40:33 \t8133.5              \t3.69%     \n    # \n    # 当前投入的钱数 (还未卖出的钱数的和):                   2020.0\n    # 当前持有份额:                                       4000.0\n    # 投入部分当前市值:                                    2020.0\n    # 总的使用过的本金(当前投入的本金 + 卖出的本金):          8133.5\n    # 总的当前的资产(投入部分当前市值 + 卖出部分获得的金额):   8433.5\n    # 当前总收益:                                         300.00  \n    # 当前收益率:                                         3.69% \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzpoint%2Fnettrade","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzpoint%2Fnettrade","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzpoint%2Fnettrade/lists"}