
この戦略は,トレンド確認と価格形状の分析を組み合わせた多時間枠のランダムな振動指数 (Stochastic) に基づく取引システムである.この戦略は,15分,30分および60分の3つの時間周期を使用して,ランダムな指数の交差信号とより高い高点 (Higher High) とより低い低点 (Lower Low) の形状の確認によって取引機会を識別する.同時に,この戦略は,リスクを制御し,利益をロックするために,固定されたパーセントのストップ・ロズと利益の設定を採用する.
戦略の中核となるロジックには、次の主要な部分が含まれます。
これは,多時間周期分析とトレンド確認を組み合わせた完全な取引システムである.ランダムな指標と価格の形状の組み合わせによる使用により,市場の転換点をよりうまく捉えることができる.固定的リスク管理パラメータはシンプルですが,取引の一貫性を保証します.この戦略は,波動性の高い市場には適していますが,特定の市場環境に応じてパラメータを最適化する必要があります.
/*backtest
start: 2025-01-19 00:00:00
end: 2025-02-18 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Swing Fairas Oil", overlay=true)
// Pilih Timeframe Utama & 2 Timeframe Konfirmasi
tf_main = "15"
tf_mid = "30"
tf_high = "60"
// Parameter Stochastic
length = input(15, title="Stochastic Length")
k_smooth = input(4, title="K Smoothing")
d_smooth = input(5, title="D Smoothing")
// Overbought & Oversold Levels
overbought = input(85, title="Overbought Level")
oversold = input(15, title="Oversold Level")
// Stochastic pada Timeframe Utama
k1 = ta.sma(ta.stoch(close, high, low, length), k_smooth)
d1 = ta.sma(k1, d_smooth)
// Stochastic pada Timeframe Menengah
k2 = request.security(syminfo.tickerid, tf_mid, ta.sma(ta.stoch(close, high, low, length), k_smooth))
d2 = request.security(syminfo.tickerid, tf_mid, ta.sma(k2, d_smooth))
// Stochastic pada Timeframe Tinggi
k3 = request.security(syminfo.tickerid, tf_high, ta.sma(ta.stoch(close, high, low, length), k_smooth))
d3 = request.security(syminfo.tickerid, tf_high, ta.sma(k3, d_smooth))
// **Konfirmasi Higher High & Lower Low**
hh = ta.highest(high, 5) // Highest High dalam 5 candle terakhir
ll = ta.lowest(low, 5) // Lowest Low dalam 5 candle terakhir
// **Kondisi Buy**
confirm_buy = ta.crossover(k1, d1) and k1 < oversold // Stochastic Bullish
higher_low = low > ta.lowest(low[1], 5) // Higher Low terbentuk
longCondition = confirm_buy and higher_low
// **Kondisi Sell**
confirm_sell = ta.crossunder(k1, d1) and k1 > overbought // Stochastic Bearish
lower_high = high < ta.highest(high[1], 5) // Lower High terbentuk
shortCondition = confirm_sell and lower_high
// Stop Loss & Take Profit
sl = input(3.7, title="Stop Loss (%)") / 100
tp = input(1.8, title="Take Profit (%)") / 100
longStopLoss = close * (1 - sl)
longTakeProfit = close * (1 + tp)
shortStopLoss = close * (1 + sl)
shortTakeProfit = close * (1 - tp)
// Eksekusi Order
if longCondition
strategy.entry("Buy", strategy.long)
strategy.exit("Sell TP/SL", from_entry="Buy", stop=longStopLoss, limit=longTakeProfit)
if shortCondition
strategy.entry("Sell", strategy.short)
strategy.exit("Cover TP/SL", from_entry="Sell", stop=shortStopLoss, limit=shortTakeProfit)
// Label Buy & Sell
if longCondition
label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down)
if shortCondition
label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_up)
// Label Stop Loss & Take Profit
if longCondition
label.new(bar_index, longStopLoss, "SL: " + str.tostring(longStopLoss, "#.##"), color=color.red, textcolor=color.white, size=size.small, style=label.style_label_left)
label.new(bar_index, longTakeProfit, "TP: " + str.tostring(longTakeProfit, "#.##"), color=color.green, textcolor=color.white, size=size.small, style=label.style_label_left)
if shortCondition
label.new(bar_index, shortStopLoss, "SL: " + str.tostring(shortStopLoss, "#.##"), color=color.red, textcolor=color.white, size=size.small, style=label.style_label_left)
label.new(bar_index, shortTakeProfit, "TP: " + str.tostring(shortTakeProfit, "#.##"), color=color.green, textcolor=color.white, size=size.small, style=label.style_label_left)