该策略基于5分钟开盘价的涨跌幅进行交易决策,使用两阶跨度突破设定不同的触发条件,旨在在震荡趋势中捕捉较大的价格变动。
策略基于每天2时整5分钟K线的开盘价计算当下5分钟K线的涨跌幅百分比,当涨跌幅超过设定的第一阶跨度时,做出相应的买入或卖出决策。同时设置止损位和止盈位退出仓位。
如果止损被触发,当涨跌幅继续扩大并超过第二阶跨度的触发条件时,会撤销之前的订单,使用第二阶跨度下新的买入或卖出指令,并继续跟踪止损和止盈。
通过两阶跨度的设定,可以在震荡行情中过滤掉部分噪音,只在较大幅度的价格变动时进行交易。同时第二阶跨度的激活可以减少止损过于频繁被触发的情况。
对策:
该策略通过两阶跨度突破来捕捉价格跳动,在震荡行情中有效过滤噪音。策略Concept简单清晰,通过参数优化可以得到较好的效果。下一步可以考虑与趋势判断指标结合,在趋势行情中发挥策略优势。总体来说,策略思路新颖,有效利用突破原理,在优化调整后可获得不错的效果。
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Auto Entry Bot", overlay=true)
// Define input for the stop loss and take profit levels
stopLossPips = input.int(200, title="Stop Loss Pips", minval=1)
takeProfitPips = input.int(400, title="Take Profit Pips", minval=1)
// Calculate the percentage change from the 5-minute opening candle at 2:00 AM
var float openPrice = na
if (hour == 2 and minute == 0)
openPrice := open
percentageChange = (close - openPrice) / openPrice * 100
// Track the cumulative percentage change
var float cumulativeChange = 0
// Define input for the percentage change trigger
triggerPercentage1 = input.float(0.25, title="Percentage Change Trigger (%)", minval=0.01, step=0.01)
triggerPercentage2 = input.float(0.35, title="Additional Trigger Percentage (%)", minval=0.01, step=0.01)
// Check for price change trigger
if (percentageChange >= triggerPercentage1)
// Sell signal
strategy.entry("Sell", strategy.short)
strategy.exit("ExitSell", loss=stopLossPips, profit=takeProfitPips)
cumulativeChange := 0 // Reset cumulative change after a trade
if (percentageChange <= -triggerPercentage1)
// Buy signal
strategy.entry("Buy", strategy.long)
strategy.exit("ExitBuy", loss=stopLossPips, profit=takeProfitPips)
cumulativeChange := 0 // Reset cumulative change after a trade
// If the price keeps hitting stop loss, activate the second trigger
if (strategy.position_size < 0 and percentageChange <= -triggerPercentage2)
strategy.cancel("Sell") // Cancel previous sell order
strategy.entry("Sell2", strategy.short)
strategy.exit("ExitSell2", loss=stopLossPips, profit=takeProfitPips)
cumulativeChange := 0 // Reset cumulative change after a trade
if (strategy.position_size > 0 and percentageChange >= triggerPercentage2)
strategy.cancel("Buy") // Cancel previous buy order
strategy.entry("Buy2", strategy.long)
strategy.exit("ExitBuy2", loss=stopLossPips, profit=takeProfitPips)
cumulativeChange := 0 // Reset cumulative change after a trade