该策略是基于5分钟ETHUSDT交易对设计的测试性策略。当价格出现大于5美元的跳空下跌时,做多;当已做多时,在1%和2%的价格水平设两个反向做空止损,同时在另一个价格水平建一个追踪做多的限价单。做空后的操作与做多类似,在0.99%和1.02%设两个反向止损的做多单,同时建一个追踪的做空限价单。
该策略的核心逻辑是在特定波段出现价格跳空或反转时,判断可能形成新的趋势方向。当价格下跌超过5美元时,判断价格可能反转上涨形成多头;当已做多时,在1%和2%的价格水平建两个小额反向做空单,既用于止损又用于判断是否形成新的空头方向。同理,当价格出现某种程度的上涨时,判断可能形成空头;已做空时在0.99%和1.02%建两个小额做多单,用于止损和判断多头方向。
这样通过建立多个反向小单,可以比一次性全部止损更好地判断价格走势和止损。同时反向小单还具有追踪止损的功能,根据价格波动自动止损或获利。
该策略最大的优势是识别价格跳空波段所形成的潜在新趋势,并通过多个小额反向单兼具资金管理、止损和判断新趋势的功能,从而在大幅波动中把握机会。此外在多个价格水平同时建立追踪止损单,可以更灵活有效地止损和获利。
由于该策略依赖较短时间内的价格走势判断,因此可能会有一定的假信号风险。此外多元的订单设置会使交易系统的订单压力增大,可能会导致滑点等问题。同时在大幅波动中,止损单会频繁触发带来额外的手续费损失。
该策略可以优化的方向包括调整判定多空信号的参数如跳空幅度、反转幅度等,优化止损和反向单的数量和价格水平设定,实现动态跟踪等方式。此外也可以考虑引入更多因素判断潜在多空方向的变化,如交易量、移动平均线等技术指标等。通过机器学习,实时优化止损和追踪的参数设置也是可行的。
该策略通过价格跳空和反转来判断新趋势并建立反向追踪单,具有识别新趋势、灵活止损、动态获利的优点。主要风险是假信号和高频交易带来的额外损失,可通过调整参数及引入更多信号来优化判断。总体来说,借助机器学习与动态优化,该策略有很大的发展潜力。
/*backtest start: 2023-02-22 00:00:00 end: 2024-02-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("pokupka perevorot 5min tf", overlay=true) // Activation block (executed only once) if (close - open) < -5 strategy.entry("Long", strategy.long) // Checking chart state block (executed continuously) if strategy.position_size > 0 // If long position is open strategy.entry("Short1", strategy.short, qty=2, limit=close * 1.01) strategy.entry("Short2", strategy.short, qty=2, limit=close * 1.01) strategy.entry("LongLimit", strategy.long, qty=1, limit=close * 0.98) // Execution block (executed continuously) if close * 1.01 <= strategy.position_avg_price // If price has increased by 1%, indicating a short position strategy.close("Long") if close * 0.98 >= strategy.position_avg_price // If price has decreased by 2%, indicating two long positions strategy.close("Short1") strategy.close("Short2") // Checking chart state block (executed continuously) if strategy.position_size < 0 // If short position is open strategy.entry("Long1", strategy.long, qty=2, limit=close * 0.99) strategy.entry("Long2", strategy.long, qty=2, limit=close * 0.99) strategy.entry("ShortLimit", strategy.short, qty=1, limit=close * 1.02) // Execution block (executed continuously) if close * 0.99 >= strategy.position_avg_price // If price has decreased by 1%, indicating a long position strategy.close("Short") if close * 1.02 <= strategy.position_avg_price // If price has increased by 2%, indicating two short positions strategy.close("Long1") strategy.close("Long2")