天猫首页
当前位置: 首页 > 期货交易软件 > 一个短线日内交易策略 ——R

浏览历史

一个短线日内交易策略 ——R
prev zoom next

一个短线日内交易策略 ——R

  • 本店售价:¥5000元 ¥8000元
  • 商品货号:ECS009198
  • 商品库存: 9999
  • 上架时间:2022-09-15
  • 商品点击数:250

商品描述

商品属性

商品标签

相关商品

R-Breaker是一种短线日内交易策略 该策略已经在市场上存活了二十年之久 尤其当指数波动较大时 该策略表现越好 根据S P至2011年底的统计 R-Break也多次名列前十 由于进入榜单的交易系统业绩并不稳定 尤其是一年业绩榜单 时常会发生变化 因此模型的稳定性和一致性其实比短期排名更加关键 杂志给出了长期来看一致性最好的十大交易模型 其中就包括 R-Breaker 等模型 它们的业绩不一定总是能排进前十名的榜单 但长期以来具有较高的一致性。

策略逻辑 日内突破与反转会获得盈利

策略内容 根据前一个交易日的收盘价、最高价和最低价数据通过一定方式计算出六个价位 从大到小依次为 突破买入价、观察卖出价、反转卖出价、反转买入、观察买入价、突破卖出价。以此来形成当前交易日盘中交易的触发条件。追踪盘中价格走势 实时判断触发条件。具体条件如下 突破:在空仓条件下 如果盘中价格超过突破买入价 则采取趋势策略 即在该点位开仓做多。在空仓条件下 如果盘中价格跌破突破卖出价 则采取趋势策略 即在该点位开仓做空。反转:持多单 当日内最高价超过观察卖出价后 盘中价格出现回落 且进一步跌破反转卖出价构成的支撑线时 采取反转策略 即在该点位反手做空。持空单 当日内最低价低于观察买入价后 盘中价格出现反弹 且进一步超过反转买入价构成的阻力线时 采取反转策略 即在该点位反手做多。设定止损条件。当亏损达到设定值后 平仓。

资金管理 一次买入一手

风险控制 无

源代码

# coding utf-8from __future__ import print_function, absolute_importimport pandas as pdfrom gm.api import *from datetime import datetime R-Breaker是一种短线日内交易策略根据前一个交易日的收盘价、最高价和最低价数据通过一定方式计算出六个价位 从大到小依次为 突破买入价、观察卖出价、反转卖出价、反转买入、观察买入价、突破卖出价。以此来形成当前交易日盘中交易的触发条件。追踪盘中价格走势 实时判断触发条件。具体条件如下 突破在空仓条件下 如果盘中价格超过突破买入价 则采取趋势策略 即在该点位开仓做多。在空仓条件下 如果盘中价格跌破突破卖出价 则采取趋势策略 即在该点位开仓做空。反转持多单 当日内最高价超过观察卖出价后 盘中价格出现回落 且进一步跌破反转卖出价构成的支撑线时 采取反转策略 即在该点位反手做空。持空单 当日内最低价低于观察买入价后 盘中价格出现反弹 且进一步超过反转买入价构成的阻力线时 采取反转策略 即在该点位反手做多。设定止损条件。当亏损达到设定值后 平仓。选用了SHFE的rb2010 在2019-10-1 15:00:00 到 2020-04-16 15:00:00 进行回测。注意 1 为回测方便 本策略使用了on_bar的一分钟来计算 实盘中可能需要使用on_tick。2 实盘中 如果在收盘的那一根bar或tick触发交易信号 需要自行处理 实盘可能不会成交。3 本策略使用在15点收盘时全平的方式来处理不持有隔夜单的情况 实际使用中15点是无法平仓的。 # 策略中必须有init方法def init(context): # 设置交易品种 context.symbol SHFE.rb # 设置止损点数 context.stopLossPrice 50 # 获取当时的主力合约 startDate datetime.strptime(context.backtest_start_time, %Y-%m-%d %H:%M:%S ).date() continuous_contract get_continuous_contracts(context.symbol, startDate, startDate) context.mainContract continuous_contract[0][ symbol ] # 订阅行情 subscribe(continuous_contract[0][ symbol ], frequency 60s , count 1) schedule(schedule_func algo, date_rule 1d , time_rule 8:50:00 )def algo(context): # 检查主力和约 发生变化则更换订阅 contractInfo get_continuous_contracts(context.symbol, context.now.date(), context.now.date()) if context.mainContract ! contractInfo[0][ symbol ]: context.mainContract contractInfo[0][ symbol ] subscribe(context.mainContract, frequency 60s , count 1, unsubscribe_previous True) return # 这一根bar不判断。 # 获取历史数据 data history_n(symbol context.mainContract, frequency 1d , end_time context.now, fields high,low,open,symbol,close , count 2, df True) high data.high.iloc[0] # 前一日的最高价 low data.low.iloc[0] # 前一日的最低价 close data.close.iloc[0] # 前一日的收盘价 pivot (high low close) / 3 # 枢轴点 context.bBreak high 2 * (pivot - low) # 突破买入价 context.sSetup pivot (high - low) # 观察卖出价 context.sEnter 2 * pivot - low # 反转卖出价 context.bEnter 2 * pivot - high # 反转买入价 context.bSetup pivot - (high - low) # 观察买入价 context.sBreak low - 2 * (high - pivot) # 突破卖出价 context.data datadef on_bar(context, bars): # 获取止损价 STOP_LOSS_PRICE context.stopLossPrice bBreak context.bBreak sSetup context.sSetup sEnter context.sEnter bEnter context.bEnter bSetup context.bSetup sBreak context.sBreak data context.data # 获取现有持仓 返回的是一个list的各种合约的持仓对象 详见 # https://www.myquant.cn/docs/python/python_object_trade#Position%20-%20%E6%8C%81%E4%BB%93%E5%AF%B9%E8%B1%A1 position_long context.account().position(symbol context.symbol, side PositionSide_Long) position_short context.account().position(symbol context.symbol, side PositionSide_Short) # 突破: if not position_long and not position_short: # 空仓条件 if bars[0].close bBreak: # 在空仓的情况下 如果盘中价格超过突破买入价 # 则采取趋势策略 即在该点位开仓做多 print(context.now) print( 空仓,盘中价格超过突破买入价: 开仓做多 ) order_volume(symbol context.mainContract, volume 1, side OrderSide_Buy, order_type OrderType_Market, position_effect PositionEffect_Open) # 做多 context.open_position_price bars[0].close elif bars[0].close sBreak: # 在空仓的情况下 如果盘中价格跌破突破卖出价 # 则采取趋势策略 即在该点位开仓做空 print(context.now) print( 空仓,盘中价格跌破突破卖出价: 开仓做空 ) order_volume(symbol context.mainContract, volume 1, side OrderSide_Sell, order_type OrderType_Market, position_effect PositionEffect_Open) # 做空 context.open_position_price bars[0].close #反转。 else: # 有持仓。 # 开仓价与当前行情价之差大于止损点则止损 if (position_long and context.open_position_price - bars[0].close STOP_LOSS_PRICE) or \ (position_short and bars[0].close - context.open_position_price STOP_LOSS_PRICE): print(context.now) print( 止损 ) order_close_all() # 平仓 # 反转: if position_long: # 多头持仓 if data.high.iloc[1] sSetup and bars[0].close sEnter: # 多头持仓,当日内最高价超过观察卖出价后 # 盘中价格出现回落 且进一步跌破反转卖出价构成的支撑线时 # 采取反转策略 即在该点位反手做空 print(context.now) print( 多头持仓,当日内最高价超过观察卖出价后跌破反转卖出价: 反手做空 ) order_close_all() # 平仓 order_volume(symbol context.mainContract, volume 1, side OrderSide_Sell, order_type OrderType_Market, position_effect PositionEffect_Open) # 做空 context.open_position_price bars[0].close elif position_short: # 空头持仓 if data.low.iloc[1] bSetup and bars[0].close bEnter: # 空头持仓 当日内最低价低于观察买入价后 # 盘中价格出现反弹 且进一步超过反转买入价构成的阻力线时 # 采取反转策略 即在该点位反手做多 print(context.now) print( 空头持仓,当日最低价低于观察买入价后超过反转买入价: 反手做多 ) order_close_all() # 平仓 order_volume(symbol context.mainContract, volume 1, side OrderSide_Buy, order_type OrderType_Market, position_effect PositionEffect_Open) # 做多 context.open_position_price bars[0].close # 15点收盘全部平仓。 if context.now.hour 15: print(context.now) print( close all ) order_close_all()if __name__ __main__ : run(strategy_id strategy_id , filename main.py , mode MODE_BACKTEST, token token_id , backtest_start_time 2019-10-1 15:00:00 , backtest_end_time 2020-04-16 15:00:00 )

最终回测结果

声明 本文观点仅供交流与探讨 不构成任何投资建议 否则后果自负 1 

量化密码库 关注 关注
一个短线日内交易策略 ——R-Breaker R-Breaker是一种短线日内交易策略,该策略已经在市场上存活了二十年之久,尤其当指数波动较大时,该策略表现越好,根据S amp;P至2011年底的统计,R-Break也多次名列前十,由于进入榜单的交易系统业绩并不稳定,尤其是一年业绩榜单,时常会发生变化,因此模型的稳定性和一致性其实比短期排名更加关键,杂志给出了长期来看一致性最好的十大交易模型,其中就包括 R-Breaker 等模型,它们的业绩... 复制链接

抵扣说明:

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

商品属性
[]

商品标签

购买记录(近期成交数量0)

还没有人购买过此商品
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页

用户评论(共0条评论)

  • 暂时还没有任何用户评论
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
用户名: 匿名用户
E-mail:
评价等级:
评论内容:
验证码: captcha
在线咨询