
Strategi ini berdasarkan kepada kaedah Wyckoff, menggabungkan indeks relatif lemah (RSI) dan purata bergerak volume (Volume MA) untuk mengenal pasti tahap pengumpulan dan pengagihan pasaran, yang menghasilkan isyarat membeli dan menjual. Strategi ini juga menggunakan mekanisme hentian dan penarikan balik yang dinamik untuk mengawal risiko dengan menetapkan nilai penarikan balik maksimum.
Strategi RSI berganda untuk menghentikan kerugian dengan menggabungkan RSI dan penunjuk kuantiti transaksi, mengenal pasti tahap pengumpulan dan pengagihan pasaran, dan menggunakan mekanisme kawalan risiko berganda untuk menghentikan kerugian. Strategi ini mempunyai kepraktisan tertentu, dengan mengambil alih pengurusan risiko sambil memahami trend pasaran. Walau bagaimanapun, prestasi strategi bergantung pada pilihan parameter penunjuk dan ciri-ciri pasaran, yang perlu meningkatkan kestabilan dan keuntungan dengan pengoptimuman dan penyesuaian yang berterusan.
/*backtest
start: 2024-05-07 00:00:00
end: 2024-06-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Wyckoff Methodology Strategy with Max Drawdown", overlay=true)
// Define input parameters
length = input(14, title="RSI Length")
overbought = input(70, title="RSI Overbought Level")
oversold = input(30, title="RSI Oversold Level")
volume_length = input(20, title="Volume MA Length")
initial_capital = input(10000, title="Initial Capital")
max_drawdown = input(500, title="Max Drawdown")
// Calculate RSI
rsi = ta.rsi(close, length)
// Calculate Volume Moving Average
vol_ma = ta.sma(volume, volume_length)
// Identify Accumulation Phase
accumulation = ta.crossover(rsi, oversold) and volume > vol_ma
// Identify Distribution Phase
distribution = ta.crossunder(rsi, overbought) and volume > vol_ma
// Plot RSI
hline(overbought, "Overbought", color=color.red)
hline(oversold, "Oversold", color=color.green)
plot(rsi, title="RSI", color=color.blue)
// Plot Volume and Volume Moving Average
plot(volume, title="Volume", color=color.orange, style=plot.style_histogram)
plot(vol_ma, title="Volume MA", color=color.purple)
// Variables to track drawdown
var float max_equity = initial_capital
var float drawdown = 0.0
// Update max equity and drawdown
current_equity = strategy.equity
if (current_equity > max_equity)
max_equity := current_equity
drawdown := max_equity - current_equity
// Generate Buy and Sell Signals
if (accumulation and drawdown < max_drawdown)
strategy.entry("Buy", strategy.long)
if (distribution and drawdown < max_drawdown)
strategy.entry("Sell", strategy.short)
// Plot Buy and Sell signals on chart
plotshape(series=accumulation, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=distribution, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")
// Close positions if drawdown exceeds max drawdown
if (drawdown >= max_drawdown)
strategy.close_all("Max Drawdown Exceeded")
// Set strategy exit conditions
strategy.close("Buy", when=distribution or drawdown >= max_drawdown)
strategy.close("Sell", when=accumulation or drawdown >= max_drawdown)
// Display drawdown on chart
plot(drawdown, title="Drawdown", color=color.red, linewidth=2, style=plot.style_stepline)