三十六、ATR策略
#!/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()
# -*- 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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)