#!/usr/bin/env python # -*- coding: utf-8 -*- import talib import cross_order as order import time # atr周期 atr_period = 14 # 买卖时高于或低于ATR值的倍数 buy_multi_atr = 2 sell_multi_atr = 2 ''' 简单的基于ta-lib的ATR标策略示例 真实波幅(ATR average true range)主要应用于了解股价的震荡幅度和节奏,在窄幅整理行情中用于寻找突破时机。 通常情况下股价的波动幅度会保持在一定常态下,但是如果有主力资金 进出时,股价波幅往往会加剧。另外,在股价 横盘整理、 波幅减少到极点时,也往往会产生变盘行情。真实波幅(ATR)正是基于这种原理而设计的指标。 计算方法: 1.TR= ∣最高价-最低价∣和∣最高价-昨收∣ 和 ∣昨收-最低价∣ 三者中的最大值 2.真实波幅(ATR)= TR的N日简单移动平均 3.参数N设置为14日 使用方法: 如果当前价格比之前的价格高一个ATR的涨幅,买入股票 如果之前的价格比当前价格高一个ATR的涨幅,卖出股票 ''' def main(): print("任务开始时间:", time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) for symbol in order.symbol_pool: # 设置杠杆倍数 order.set_leverage(symbol=symbol, leverage='18') df = order.get_candlesticks(symbol=symbol, interval='15m', limit=str(atr_period + 1)) atr_index = talib.ATR(df['high'], df['low'], df['close'], timeperiod=atr_period) if df['close'].values[-1] > df['close'].values[-2] + atr_index.values[-1] * buy_multi_atr: order.up_cross_order(symbol=symbol, ordtype='market', message='ATR策略提示做多') print('ATR策略提示做多: ' + symbol) if df['close'].values[-1] < df['close'].values[-2] - atr_index.values[-1] * sell_multi_atr: order.down_cross_order(symbol=symbol, ordtype='market', message='ATR策略提示做空') print('ATR策略提示做空: ' + symbol) time.sleep(2) print("任务结束时间:", time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) if __name__ == '__main__': main()
上一篇