python 网格_Python版简单网格策略

策略广场上的Python策略不多,这里编写了一个Python版本的网格策略。策略原理十分简单,在一个价格区间内固定价格距离产生一系列的网格节点,当行情变化时,价格到达一个网格节点价格位置,就挂一个买入订单。当这个订单成交时,即按照挂单的价格加上利润差价,挂出平仓的卖单订单。捕捉在设置的价格区间内的波动。

网格策略的风险不用多说,任何网格类型的策略都是属于赌价格在某个区间震荡,一旦价格冲出网格范围,可能造成严重浮亏。所以写该策略的目的在于,提供Python策略编写思路上或者程序设计上的参考。该策略仅仅用于学习,实盘可能有很大风险。

策略思路讲解直接写在了策略代码注释上。

策略代码

策略主要设计思路是,根据自己维护的这个网格数据结构,对比GetOrders接口返回的当前挂单列表。分析挂出的订单变化(成交与否),更新网格数据结构,做出后续操作。并且挂出的订单不会撤销,直到成交,即使价格偏离也不撤销,因为数字货币市场经常有插针的情况,这些挂单也有可能接到插针的单子(如果交易所有挂单数量限制,那就要调整了)。

策略数据可视化,使用了LogStatus函数把数据实时显示在状态栏上。

构造了三个表格,第一个表格显示当前网格数据结构中每个节点的信息,第二个表格显示异常信息,第三个表格显示交易所实际挂单信息。

回测测试

策略地址

策略仅供参考学习,回测测试,有兴趣可以优化升级。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python简单网格策略是一种常见的交易策略,它基于价格波动的反复性,通过在一定的价格区间内不断买卖来获取收益。 具体实现步骤如下: 1. 设置网格交易的价格区间,比如以当前价格为基准,向上和向下各扩展一定的距离,形成一定数量的网格交易点。 2. 在每个网格交易点上设置买入和卖出的限价单,当价格达到某个网格点时,系统会自动下单进行交易。 3. 当价格向上或向下波动时,交易系统会自动在相应的网格点上进行买卖操作,并且在每次交易后重新设置买卖的限价单。 4. 在交易过程中,需要设置止盈和止损的条件,以控制风险和获取收益。 下面是一个简单Python代码示例: ```python # 导入必要的库 import time import ccxt # 设置交易所和交易对 exchange = ccxt.binance() symbol = 'BTC/USDT' # 设置网格交易的价格区间和数量 grid_num = 10 grid_range = 0.01 # 获取当前价格 ticker = exchange.fetch_ticker(symbol) last_price = ticker['last'] # 计算网格交易的价格点 grid_prices = [] for i in range(grid_num): price = last_price * (1 - grid_range + i * grid_range * 2 / (grid_num - 1)) grid_prices.append(price) # 初始化交易 buy_price = grid_prices[0] sell_price = grid_prices[-1] amount = 0.001 buy_order = exchange.create_limit_buy_order(symbol, amount, buy_price) sell_order = exchange.create_limit_sell_order(symbol, amount, sell_price) # 进入交易循环 while True: # 获取当前价格 ticker = exchange.fetch_ticker(symbol) last_price = ticker['last'] # 查找当前价格所在的网格点 grid_index = 0 for i in range(grid_num): if last_price >= grid_prices[i]: grid_index = i # 更新买卖单 if grid_index == 0: buy_price = grid_prices[0] exchange.cancel_order(buy_order['id']) buy_order = exchange.create_limit_buy_order(symbol, amount, buy_price) elif grid_index == grid_num - 1: sell_price = grid_prices[-1] exchange.cancel_order(sell_order['id']) sell_order = exchange.create_limit_sell_order(symbol, amount, sell_price) else: if buy_price != grid_prices[grid_index - 1]: buy_price = grid_prices[grid_index - 1] exchange.cancel_order(buy_order['id']) buy_order = exchange.create_limit_buy_order(symbol, amount, buy_price) if sell_price != grid_prices[grid_index]: sell_price = grid_prices[grid_index] exchange.cancel_order(sell_order['id']) sell_order = exchange.create_limit_sell_order(symbol, amount, sell_price) # 暂停一段时间 time.sleep(10) ``` 上述代码中使用了ccxt库来连接交易所,获取实时价格和下单交易。在实际使用中,需要根据不同的交易所和交易对进行相应的设置和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值