
Chiến lược này là một hệ thống giao dịch băng tần nhiều khung thời gian dựa trên chỉ số ngẫu nhiên Stochastic Oscillator. Nó xác định cơ hội giao dịch bằng cách kết hợp các tín hiệu chỉ số ngẫu nhiên của khung thời gian hiện tại và khung thời gian cao hơn và sử dụng dừng dừng động để quản lý rủi ro. Chiến lược này phù hợp với thị trường có nhiều biến động, thu lợi nhuận bằng cách nắm bắt biến động ngắn hạn của giá.
Logic cốt lõi của chiến lược này dựa trên các yếu tố chính sau:
Đây là một hệ thống giao dịch hoàn chỉnh kết hợp phân tích kỹ thuật và quản lý rủi ro. Chiến lược này có tiềm năng lợi nhuận tốt trong khi đảm bảo sự ổn định thông qua xác nhận tín hiệu và dừng lỗ động trong nhiều khung thời gian. Tuy nhiên, người dùng cần tối ưu hóa các tham số theo phong cách giao dịch và môi trường thị trường của mình và luôn luôn kiểm soát rủi ro nghiêm ngặt.
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Swing Fairas Oil", overlay=true)
// Input parameters
kLength = input(14, title="Stochastic K Length")
dLength = input(3, title="Stochastic D Length")
smoothK = input(3, title="Smooth K")
tfHigher = input.timeframe("30", title="Higher Timeframe")
takeProfit = input(1.7, title="Take Profit Multiplier")
stopLoss = input(1.7, title="Stop Loss Multiplier")
// Calculate Stochastic Oscillator for current timeframe
k = ta.sma(ta.stoch(close, high, low, kLength), smoothK)
d = ta.sma(k, dLength)
// Calculate Stochastic Oscillator for higher timeframe
kHTF = request.security(syminfo.tickerid, tfHigher, ta.sma(ta.stoch(close, high, low, kLength), smoothK))
dHTF = request.security(syminfo.tickerid, tfHigher, ta.sma(kHTF, dLength))
// Buy and sell conditions (confirmation from two timeframes)
buyCondition = ta.crossover(k, d) and k < 20 and kHTF < 20 and kHTF > dHTF
sellCondition = ta.crossunder(k, d) and k > 80 and kHTF > 80 and kHTF < dHTF
// Define Take Profit and Stop Loss levels
longStopLoss = close * (1 - stopLoss / 100)
longTakeProfit = close * (1 + takeProfit / 100)
shortStopLoss = close * (1 + stopLoss / 100)
shortTakeProfit = close * (1 - takeProfit / 100)
// Execute Trades
if buyCondition
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", limit=longTakeProfit, stop=longStopLoss)
if sellCondition
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss)
// Plot buy/sell signals on candlestick chart
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, size=size.small, title="Buy Signal")
plotshape(series=sellCondition, location=location.abovebar, color=color.red, style=shape.labeldown, size=size.small, title="Sell Signal")
// Highlight candles for buy and sell conditions
barcolor(buyCondition ? color.green : sellCondition ? color.red : na)
// Draw Take Profit and Stop Loss levels dynamically with labels
var float tpLevel = na
var float slLevel = na
if buyCondition
tpLevel := longTakeProfit
slLevel := longStopLoss
if sellCondition
tpLevel := shortTakeProfit
slLevel := shortStopLoss