突破回调策略是一种趋势追踪策略。它的基本原理是在突破前一根K线的最高价或最低价时做多做空,设置止盈止损后 let 盈利继续运行。
该策略主要通过判断价格是否突破前一根K线的最高价或最低价来确定 Entry 时机。具体逻辑是:
如果当前K线的最高价高于前一根K线的最高价,则发出做多信号。
如果当前K线的最低价低于前一根K线的最低价,则发出做空信号。
收到做多做空信号后立即入场。入场后设置止盈为 50 个点,止损为 100 个点。
当亏损大于等于止损点数或盈利大于等于止盈点数时主动退场。
这种突破回调策略具有如下优势:
该策略也存在一些风险:
可以从以下几个方面继续优化该策略:
增加价格突破的有效性判断,避免假突破。例如可以加入指标过滤和成交量验证。
增加趋势判断机制,避免盘整市带来的套牢风险。可以加入移动平均线等趋势指标。
优化止盈止损策略,例如跟踪止损、盈利后移止损等,让利润更加最大化。
进行参数优化,找到最佳的止盈止损点数。
该突破回调策略总的来说逻辑简单、实施方便,能有效捕捉趋势开始,回撤和风险控制能力也较强。通过进一步优化可以成为一个非常实用的量化策略。
/*backtest start: 2023-01-25 00:00:00 end: 2024-01-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Breakout Strategy", shorttitle="BS", overlay=true) // Input for take profit and stop loss in pips tp_pips = input(50, title="Take Profit (in pips)") sl_pips = input(100, title="Stop Loss (in pips)") // Calculate take profit and stop loss levels in points tp_level = tp_pips * syminfo.mintick sl_level = sl_pips * syminfo.mintick // Function to check if a breakout has occurred breakout(high_or_low) => high_or_low > request.security(syminfo.tickerid, "D", high[1]) ? true : false // Buy condition buy_condition = breakout(high) strategy.entry("Buy", strategy.long, when=buy_condition) // Sell condition sell_condition = breakout(low) strategy.entry("Sell", strategy.short, when=sell_condition) // Take profit and stop loss conditions for Buy tp_buy_condition = strategy.position_avg_price + tp_level sl_buy_condition = strategy.position_avg_price - sl_level strategy.exit("Take Profit/Close Buy", from_entry="Buy", profit=tp_buy_condition, loss=sl_buy_condition) // Take profit and stop loss conditions for Sell tp_sell_condition = strategy.position_avg_price - tp_level sl_sell_condition = strategy.position_avg_price + sl_level strategy.exit("Take Profit/Close Sell", from_entry="Sell", profit=tp_sell_condition, loss=sl_sell_condition)