Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ETF拯救世界提到过的闲钱网格策略探索

License

Notifications You must be signed in to change notification settings

zpoint/NetTrade

Repository files navigation

NetTrade

网格交易策略辅助记录脚本 本脚本只是本人个人针对 ETF拯救世界 在以下地方提到过的闲钱网格的探索测试以及记录,完全是本人的个人行为

策略来源:

数据来源:

计算方法:

注意

  • 你可以理解成 E大 提出了算法,本人用自己的理解把算法实现了一遍,同样的算法不同的实现,可能存在不同的边界判定,运行效率,甚至出现逻辑错误,本人尽最大努力追求易用性和 bug-free
  • 测试时用每日收盘净值净值测试,数据源来自上面的集思录分享,假设最多每日只能操作一次
  • 网格策略只适合波动市,单边下跌或者单边上涨不适用,如下第一网时不留足安全边际,很可能非常长一段时间收不回网(下的位置不够低,导致几年都回不到这个位置)
  • 本项目还在开发中,具体进度视本人时间安排而定

功能

  • 自定义网格策略
  • 用历史数据进行策略收益计算
  • 对自定义网格策略下一次入网,出网价格,当前收益率等值计算,程序自动保存至 excel,可也手动编辑 excel 修改记录后程序读入

策略概述

  • 条件A: 低于历史估值均值 20% (每个人计算估值的方法应该是不太一样的,作为小韭菜也没有获取数据的来源,你可以对接自己的数据来源, 这里作为测试先写死一个净值开始)
  • 条件B: 还没想好

策略A

  1. 第一网: 达到条件(A或B或者其他,自己定), 入 1 网
  2. 幅度
    • a: 3%
    • b: 5%
  3. 下跌: 每达到最近次交易价格的幅度, 每网金额增加 20%,入一网
  4. 上涨: 每达到最近次交易价格的幅度, 每网金额减小 20%, 出网
    • 5a: 将低于当前价格买入的份额全部出掉
    • 5b: 买入份额/买入次数 得到一个平均每次买入份数,出掉低于当前价格的买入次数 * 平均每次买入份数

策略B

n = 入网次数-出网次数 (n = 0)

  1. 第一网: 达到条件, 入 1 网 (n = 1)
  2. 幅度
    • a: 3%
    • b: 5%
  3. 下跌: 每达到最近次交易价格的幅度, 买入 money 金额,money = max((floor(n / 3) + 1) * 每网钱数, 你能接受的一网的最大买入的钱数), 总买入次数 += floor(money / 每网初始价格)
  4. 上涨: 每达到最近次交易价格的幅度, 出网
    • 5a: 将低于当前价格买入的份额全部出掉
    • 5b: 买入份额/买入次数 得到一个平均每次买入份数,出掉低于当前价格的买入次数 * 平均每次买入份数

怎么玩?

环境/安装
# python >= 3.5.2
pip3 install NetTrade
进行网格记录
from NetTrade.Notes.RealNotes import RealNotes
from NetTrade.Strategy.NetstrategyA import NetstrategyA
if __name__ == "__main__":
 # 以华宝油气为例, 传入华宝油气代码,第一次调用 buy, 会在当前目录下生成同名 xlsx 文件,用于记录和下次读取计算
 # 目前只实现了策略A基本版
 # range_percent: 选填,网格幅度,默认 3%
 # growth_rate: 选填,每下一网增加金额,默认 20%, 这里传的是 30%
 r = RealNotes("sz162411", NetstrategyA, range_percent=0.03, growth_rate=0.3)
 # 写入购买记录,净值为 0.505, 份额为4000份
 r.buy(0.505, 4000)
 r.calc_next_val() # 计算并打印下次需要购买和卖出的份额与净值
 # 下次买入价格: 0.49 	买入份额: 5400 	买入金额: 2646.0
 # 下次卖出价格: 0.521 	卖出份额: 4000.0 	卖出金额: 2084.0
 # 写入购买记录,净值为 0.49, 份额为 5400
 # r.buy(0.49, 5400)
 # 写入购买记录,净值为 0.475, 份额为 7300
 # r.buy(0.475, 7300)
 # 写入卖出记录,净值为 0.521,份额为 4000
 # r.sell(0.521, 4000)
 # 计算下一网的买入和卖出的净值和份额,并打印
 # r.calc_next_val()
 # 计算网格操作至今各种数据
 r.pr_status()
测试策略历史收益
from NetTrade.HistoryNotes.HistoryNotes import HistoryNotes
from NetTrade.Strategy.NetstrategyA import NetstrategyA
if __name__ == "__main__":
 # 目前只实现了策略A: NetstrategyA
 # 目前只有来自集思录的数据源分享: jsl
 # 测试代码华宝油气: sz162411
 # 开始入第一网的净值: 0.6
 # 第一网的价格为 2000 (会根据100的整数倍调整)
 # 2017 表示从2017年开始(闭区间)
 # 2019 表示到2019奶奶结束(闭区间)
 # range_percent 下跌/上涨幅度 这里是 3%
 # growth_rate 每下一网价格上涨幅度 这里是 30%
 HistoryNotes(NetstrategyA, "jsl", "sz162411", 0.6, 2000, 2017, 2019, range_percent=0.03, growth_rate=0.3)
单日过大跌幅/涨幅记录
from NetTrade.Notes.RealNotes import RealNotes
from NetTrade.Strategy.NetstrategyA import NetstrategyA
def note():
 r = RealNotes("sz162411", NetstrategyA, range_percent=0.03, growth_rate=0.3)
 r.buy(0.505, 4000)
 r.buy(0.49, 5400)
 r.buy(0.475, 7300)
 r.calc_curr_val(0.505)
 # 当前净值涨幅过大: 需要加大卖出,价格: 0.505 	卖出份额: 12700.0 	卖出金额: 6413.5
 r.sell(0.505, 12700)
 r.calc_curr_val(0.455)
 # 当前净值跌幅过大,需要加大买入, 价格: 0.455 	买入份额: 11100 	买入金额: 5050.5 
 # r.calc_next_val()
 # r.pr_status()
 # r.calc_curr_val(0.505)
if __name__ == "__main__":
 note()
自定义策略
  • 待开发

输出示例

r.calc_next_val()
# 下次买入价格: 0.461 	买入份额: 9800 	买入金额: 4517.8 
# 下次卖出价格: 0.49 	卖出份额: 7300.0 	卖出金额: 3577.0
r.pr_status()
# 操作历史:
# 净值 	份额 	金额 	操作 	日期 	当前动用过本金 	当前收益率 
# 0.505 	4000.0 	2020.0 	买入 	2019年03月06日 16:39:09 	2020.0 	0.00% 
# 0.49 	5400.0 	2646.0 	买入 	2019年03月06日 16:39:09 	4666.0 	-1.29% 
# 0.475 	7300.0 	3467.5 	买入 	2019年03月06日 16:39:09 	8133.5 	-2.47% 
# 0.505 	12700.0 	6413.5 	卖出 	2019年03月06日 16:40:33 	8133.5 	3.69% 
# 
# 当前投入的钱数 (还未卖出的钱数的和): 2020.0
# 当前持有份额: 4000.0
# 投入部分当前市值: 2020.0
# 总的使用过的本金(当前投入的本金 + 卖出的本金): 8133.5
# 总的当前的资产(投入部分当前市值 + 卖出部分获得的金额): 8433.5
# 当前总收益: 300.00 
# 当前收益率: 3.69% 

About

ETF拯救世界提到过的闲钱网格策略探索

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /