该策略是一个基于随机指标(Stochastic)的双重时间周期动量交易系统。它通过在不同时间周期上分析随机指标的交叉信号来识别潜在的交易机会,同时结合动量原理和趋势跟踪方法,实现更准确的市场趋势判断和交易时机把握。该策略还整合了风险管理机制,包括止盈止损设置,以实现更好的资金管理。
策略的核心逻辑基于以下几个关键要素: 1. 使用两个时间周期的随机指标:较长时间周期用于确认整体趋势方向,较短时间周期用于生成具体的交易信号。 2. 交易信号生成规则: - 做多信号:当短周期%K线从超卖区(20以下)向上穿越%D线,同时长周期处于上升趋势。 - 做空信号:当短周期%K线从超买区(80以上)向下穿越%D线,同时长周期处于下降趋势。 3. 设置了14周期作为随机指标的基准周期,3周期作为平滑因子。 4. 整合了蜡烛图形态确认机制,提高交易信号的可靠性。
这是一个结构完整、逻辑清晰的交易策略,通过双重时间周期的随机指标分析来捕捉市场机会。该策略的优势在于多重确认机制和完善的风险控制,但也需要注意假突破和参数敏感性等风险。通过持续优化和改进,该策略有望实现更好的交易效果。
/*backtest
start: 2024-12-04 00:00:00
end: 2024-12-11 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced Stochastic Strategy", overlay=true)
// Input untuk Stochastic
length = input.int(14, title="Length", minval=1)
OverBought = input(80, title="Overbought Level")
OverSold = input(20, title="Oversold Level")
smoothK = input.int(3, title="Smooth %K")
smoothD = input.int(3, title="Smooth %D")
// Input untuk Manajemen Risiko
tpPerc = input.float(2.0, title="Take Profit (%)", step=0.1)
slPerc = input.float(1.0, title="Stop Loss (%)", step=0.1)
// Hitung Stochastic
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)
// Logika Sinyal
co = ta.crossover(k, d) // %K memotong %D ke atas
cu = ta.crossunder(k, d) // %K memotong %D ke bawah
longCondition = co and k < OverSold
shortCondition = cu and k > OverBought
// Harga untuk TP dan SL
var float longTP = na
var float longSL = na
var float shortTP = na
var float shortSL = na
if (longCondition)
longTP := close * (1 + tpPerc / 100)
longSL := close * (1 - slPerc / 100)
strategy.entry("Buy", strategy.long, comment="StochLE")
strategy.exit("Sell Exit", "Buy", limit=longTP, stop=longSL)
if (shortCondition)
shortTP := close * (1 - tpPerc / 100)
shortSL := close * (1 + slPerc / 100)
strategy.entry("Sell", strategy.short, comment="StochSE")
strategy.exit("Buy Exit", "Sell", limit=shortTP, stop=shortSL)
// Plot Stochastic dan Level
hline(OverBought, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(OverSold, "Oversold", color=color.green, linestyle=hline.style_dotted)
hline(50, "Midline", color=color.gray, linestyle=hline.style_dotted)
plot(k, color=color.blue, title="%K")
plot(d, color=color.orange, title="%D")
// Tambahkan sinyal visual
plotshape(longCondition, title="Buy Signal", location=location.belowbar, style=shape.labelup, color=color.new(color.green, 0), text="BUY")
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, style=shape.labeldown, color=color.new(color.red, 0), text="SELL")