十年前最佳交易系统解密——R-Breaker

avatar
· 阅读量 2,491

该系统的名声一以贯之:

连续15年荣登《Futures Truth Magazine》Top10赚钱策略。

策略的基本原理

根据前一个交易日的收盘价、最高价和最低价数据通过一定方式计算出六个价位,从大到小依次为:突破买入价、观察卖出价、反转卖出价、反转买入、观察买入价、突破卖出价。以此来形成当前交易日盘中交易的触发条件。

第一步

将昨日的三个重要价位收盘价、最高价、最低价分别设为刘备、关羽和张飞的身高。

把三个价格加一起处以三,得到平均身高。

high = klines.high.iloc[-2] # 前一日的最高价,高贵冷艳·关羽
low = klines.low.iloc[-2] # 前一日的最低价,文化偏低·张飞
close = klines.close.iloc[-2] # 前一日的收盘价,收官之战·刘备
pivot = (high + low + close) / 3 # 枢轴点,平均身高

第二步

基于上面算出来的四个值,组合出六个不同的价位
b_break = high + 2 * (pivot - low) # 第一组 突破买入价 全场最高
s_setup = pivot + (high - low) # 第二组 观察卖出价 多单叛变条件1
s_enter = 2 * pivot - low # 第二组 反转卖出价 多单叛变条件2
b_enter = 2 * pivot - high # 第三组 反转买入价 空单叛变条件2
b_setup = pivot - (high - low) # 第三组 观察买入价 空单叛变条件1
s_break = low - 2 * (high - pivot) # 第一组 突破卖出价 全场最低

六个价位又分为三组:

第一组、无脑莽:当价格打穿全场最高或者全场最低时,顺势追突破!

第二组、多头叛变:手中持有多单,先触及叛变条件1,后触及叛变条件2后,反手开空。

第三组、空头叛变:手中持有空单,先触及叛变条件1,后触及叛变条件2后,反手开多。

第三步

开撸!规则:

品种沥青,测试沥青近两个月走势,级别日线。

每次开仓手数:3。

#!/usr/bin/env python
#  -*- coding: utf-8 -*-
__author__ = 'limin'

'''
R-Breaker策略(隔夜留仓) (难度:初级)
'''

from datetime import date
from tqsdk import TqApi, TargetPosTask,TqSim,TqBacktest

SYMBOL = "SHFE.bu2006"  # 合约代码
STOP_LOSS_PRICE = 10  # 止损点(价格)


def get_index_line(klines):
    '''计算指标线'''
    high = klines.high.iloc[-2]  # 前一日的最高价
    low = klines.low.iloc[-2]  # 前一日的最低价
    close = klines.close.iloc[-2]  # 前一日的收盘价
    pivot = (high + low + close) / 3  # 枢轴点

    b_break = high + 2 * (pivot - low)  # 突破买入价
    s_setup = pivot + (high - low)  # 观察卖出价
    s_enter = 2 * pivot - low  # 反转卖出价
    b_enter = 2 * pivot - high  # 反转买入价
    b_setup = pivot - (high - low)  # 观察买入价
    s_break = low - 2 * (high - pivot)  # 突破卖出价

    print("已计算新标志线, 枢轴点: %f, 突破买入价: %f, 观察卖出价: %f, 反转卖出价: %f, 反转买入价: %f, 观察买入价: %f, 突破卖出价: %f"
          % (pivot, b_break, s_setup, s_enter, b_enter, b_setup, s_break))
    return pivot, b_break, s_setup, s_enter, b_enter, b_setup, s_break


api = TqApi(TqSim(init_balance=100000),web_gui=":9875",backtest=TqBacktest(start_dt=date(2020, 3, 1), end_dt=date(2020,5, 8)))
quote = api.get_quote(SYMBOL)
klines = api.get_kline_serial(SYMBOL, 24 * 60 * 60)  # 86400: 使用日线
position = api.get_position(SYMBOL)
target_pos = TargetPosTask(api, SYMBOL)
target_pos_value = position.volume_long - position.volume_short  # 目标净持仓数
open_position_price = position.open_price_long if target_pos_value > 0 else position.open_price_short  # 开仓价
pivot, b_break, s_setup, s_enter, b_enter, b_setup, s_break = get_index_line(klines)  # 七条标准线

while True:
    target_pos.set_target_volume(target_pos_value)
    api.wait_update()
    if api.is_changing(klines.iloc[-1], "datetime"):  # 产生新k线,则重新计算7条指标线
        pivot, b_break, s_setup, s_enter, b_enter, b_setup, s_break = get_index_line(klines)

    '''交易规则'''
    if api.is_changing(quote, "last_price"):
        print("最新价: ", quote.last_price)

        # 开仓价与当前行情价之差大于止损点则止损
        if (target_pos_value > 0 and open_position_price - quote.last_price >= STOP_LOSS_PRICE) or \
                (target_pos_value < 0 and quote.last_price - open_position_price >= STOP_LOSS_PRICE):
            target_pos_value = 0  # 平仓

        # 反转:
        if target_pos_value > 0:  # 多头持仓
            if quote.highest > s_setup and quote.last_price < s_enter:
                # 多头持仓,当日内最高价超过观察卖出价后,
                # 盘中价格出现回落,且进一步跌破反转卖出价构成的支撑线时,
                # 采取反转策略,即在该点位反手做空
                print("多头持仓,当日内最高价超过观察卖出价后跌破反转卖出价: 反手做空")
                target_pos_value = -3  # 做空
                open_position_price = quote.last_price
        elif target_pos_value < 0:  # 空头持仓
            if quote.lowest < b_setup and quote.last_price > b_enter:
                # 空头持仓,当日内最低价低于观察买入价后,
                # 盘中价格出现反弹,且进一步超过反转买入价构成的阻力线时,
                # 采取反转策略,即在该点位反手做多
                print("空头持仓,当日最低价低于观察买入价后超过反转买入价: 反手做多")
                target_pos_value = 3  # 做多
                open_position_price = quote.last_price

        # 突破:
        elif target_pos_value == 0:  # 空仓条件
            if quote.last_price > b_break:
                # 在空仓的情况下,如果盘中价格超过突破买入价,
                # 则采取趋势策略,即在该点位开仓做多
                print("空仓,盘中价格超过突破买入价: 开仓做多")
                target_pos_value = 3  # 做多
                open_position_price = quote.last_price
            elif quote.last_price < s_break:
                # 在空仓的情况下,如果盘中价格跌破突破卖出价,
                # 则采取趋势策略,即在该点位开仓做空
                print("空仓,盘中价格跌破突破卖出价: 开仓做空")
                target_pos_value = -3  # 做空
                open_position_price = quote.last_price

收益情况:

十年前最佳交易系统解密——R-Breaker
两个月收益约21%,海星!
十年前最佳交易系统解密——R-Breaker
资金曲线

这个策略给我的印象就是包容并蓄,兼顾了顺势和逆势,个人觉得颇有一些启发性。

风险提示:本文所述仅代表作者个人观点,不代表 Followme 的官方立场。Followme 不对内容的准确性、完整性或可靠性作出任何保证,对于基于该内容所采取的任何行为,不承担任何责任,除非另有书面明确说明。

喜欢的话,赞赏支持一下
回复 1

暂无评论,立马抢沙发

  • tradingContest