楼主: _wallstreetcat_
1326 1

[交易策略] AR人气指标 [推广有奖]

  • 0关注
  • 36粉丝

已卖:114份资源

讲师

9%

还不是VIP/贵宾

-

威望
0
论坛币
88 个
通用积分
41.5574
学术水平
14 点
热心指数
13 点
信用等级
13 点
经验
6402 点
帖子
257
精华
0
在线时间
235 小时
注册时间
2017-3-16
最后登录
2024-10-20

楼主
_wallstreetcat_ 企业认证  发表于 2021-12-1 18:07:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
AR(人气指标)简介人气指标通过一定时期内开盘价、最高价、以及最低价之间的关系,来分析多空力量的对比,反映市场买卖人气,分析价格波动,达到追踪价格未来动向的目的。
计算公式
AR = [N天所有(High-Open)的和/ N天所有(Open—Low)的和] * 100
其中:High=当日最高价;Low=当日最低价;Open=当日开市价N为公式中的设定参数,一般设定为26日。
气指标的基本应用法则
(1)AR值以100为中心地带,其±20之间,即AR值在80-120之间波动时,属盘整行情,市价走势比较平稳,不会出现剧烈波动。
(2)AR值走高时表示行情活跃,人气旺盛,过高则表示市价进入高价,应选择时机退出,AR值的高度没有具体标准,一般情况下,AR值上升至150以上时,市价随时可能回档下跌。
(3)AR值走低时表示人气衰退,需要充实,过低则暗示市价可能跌入低谷,可考虑伺机介入,一般AR值跌至70以下时,市价有可能随时反弹上升。
(4)从AR曲线可以看出一段时期的买卖气势,并具有先于市价到达峰或跌入谷底的功能,此策略配合MA一同使用。
MA指标简介MA:在上升行情进入稳定期,短周期、中周期、长周期移动平均线从上而下依次顺序排列,向右上方移动。
在下跌行情中,短周期、中周期、长周期移动平均线自下而上依次顺序排列,向右下方移动,称为空头 排列,预示市价将大幅下跌。
策略逻辑
根据市价慢涨快跌的特点,我们在经典的AR-MA上作一些调整:
  • 如果AR值 > 120,当MA(5)>MA(10)>MA(30),做多 。
  • 当MA(5)<MA(10)<MA(30),做空 ,并且此条件下,如果AR值 < 75,代表这波下跌动能趋于耗尽,这时候平掉空头。
  • 如果110 >= AR值 >= 90 ,代表市价走势比较平稳,不会出现剧烈波动,这时候保持空仓。

策略代码部分
  • 首先,我们选择要交易的标的,这里选择的是'RU1809.SHF',把标的本身的市场情况作为参考标准。
  • 然后,编写策略初始化部分,initialize函数只会运行一次,在第一个日期运行,因此可以把策略一些参数放在该函数定义。  在这里我们设置AR的上下阈值,以及短、中、长均线的窗口,分别为5、10、30天。
  • handle_data函数会每个周期(日/分)运行一次,可以把行情数据理解成K线,然后handle_data函数会在每个K线上依次运行,每天都进行均线值和AR值的计算。
  • 最后启动回测,编写策略回测接口。

策略源码
  1. # 1. 策略基本参数
  2. def prepare(context):
  3.     # 策略比较参考标准
  4.     benchmark = 'RU1809.SHF'
复制代码
  1. def initialize(context):
  2.    # 设置是否是结算模式
  3.     context.set_need_settle(False)
  4.     # 设置最大杠杆
  5.     context.set_max_leverage(1, 'fill_amap')
  6.     #设置参数
  7.     context.ar_period=26
  8.     #设置AR阈值、MA窗口
  9.     context.ar_upr=140
  10.     context.ar_dwn=75
  11.     context.short_period=5
  12.     context.mid_period=10
  13.     context.long_period=30
  14.    
  15. def handle_data(context, data):
  16.    
  17.     if context.trading_day_index  < context.long_period: # 在生成长期均线以后才开始真正运行
  18.         return
  19.    
  20.     today = data.current_dt.strftime('%Y-%m-%d') # 当前交易日期
  21.     instrument = context.future_symbol(context.instruments[0]) # 交易标的
  22.     curr_po=context.portfolio.positions[instrument] # 组合持仓
  23.     curr_position = curr_po.amount  # 持仓数量
  24.          
  25.     #均线计算
  26.     ma_short = data.history(instrument, 'close', context.short_period, '1d').mean()
  27.     ma_medium = data.history(instrument, 'close', context.mid_period, '1d').mean()
  28.     ma_long = data.history(instrument, 'close', context.long_period, '1d').mean()
  29.    
  30.     #计算AR值
  31.     open_prices = data.history(instrument, 'open', context.ar_period, '1d')
  32.     high_prices = data.history(instrument, 'high', context.ar_period, '1d')
  33.     low_prices = data.history(instrument, 'low', context.ar_period, '1d')
  34.     ar_value = sum(high_prices - open_prices) / sum(open_prices - low_prices) * 100

  35.     # 交易逻辑
  36.     if ar_value > context.ar_upr and ma_short > ma_medium > ma_long and data.can_trade(instrument): # 开多
  37.         order(instrument,  40)
  38.         print(today,'long')
  39.             
  40.     elif  ma_short < ma_medium < ma_long and data.can_trade(instrument):# 开空
  41.         if ar_value < context.ar_dwn and curr_position<0 and data.can_trade:
  42.             order_target(instrument, 0)
  43.             print(today,'close_sp')
  44.         else:
  45.             order(instrument,  -40)
  46.             print(today,'short')

  47.     elif 110 >= ar_value >= 90 and curr_position!=0 and data.can_trade(instrument):
  48.         order_target(instrument, 0)
  49.         print(today,'close_out')
复制代码
  1. # 3. 启动回测
  2. # 策略回测接口: https://bigquant.com/docs/module_trade.html
  3. m = M.trade.v3(
  4.     instruments= ['RU1809.SHF'],
  5.     start_date='2017-11-01',
  6.     end_date='2018-05-01',
  7.     prepare=prepare,
  8.     initialize=initialize,
  9.     handle_data=handle_data,
  10.     # 买入订单以开盘价成交
  11.     order_price_field_buy='open',
  12.     # 卖出订单以开盘价成交
  13.     order_price_field_sell='open',
  14.     capital_base=1000000,
  15.     benchmark='RU1809.SHF',
  16.     m_deps=np.random.rand()
  17. )
复制代码


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Instruments Instrument benchmark Portfolio positions

沙发
_wallstreetcat_ 企业认证  发表于 2021-12-1 19:05:49

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2025-12-24 16:29