Strategi ini adalah sistem perdagangan kuantitatif berdasarkan analisis teknikal candlestick, terutama mengenal pasti peluang perdagangan yang berpotensi dengan menganalisis panjang keseluruhan lilin atas dan bawah lilin. Mekanisme teras membandingkan panjang lilin keseluruhan yang dikira dalam masa nyata dengan purata bergerak yang disesuaikan dengan offset, menghasilkan isyarat panjang apabila panjang lilin memecahkan purata bergerak. Strategi ini mengintegrasikan pelbagai jenis purata bergerak, termasuk Purata Bergerak Sederhana (SMA), Purata Bergerak Eksponen (EMA), Purata Bergerak Berat (WMA), dan Purata Bergerak Berimbang Volume (VWMA), menyediakan pedagang dengan pilihan pemilihan parameter yang fleksibel.
Logik teras merangkumi langkah utama berikut:
Strategi ini menggabungkan penunjuk teknikal klasik analisis lilin lilin dengan kaedah perdagangan kuantitatif moden, mewujudkan sistem perdagangan dengan logika yang jelas dan kepraktisan yang kuat. Kelebihan teras terletak pada fleksibiliti parameter dan kawalan risiko yang komprehensif, walaupun keterbatasan termasuk ketergantungan persekitaran pasaran yang kuat dan kepekaan parameter. Potensi peningkatan yang signifikan wujud melalui integrasi indikator berbilang dimensi dan pengoptimuman pengurusan kedudukan. Secara keseluruhan, ia mewakili strategi perdagangan kuantitatif yang asasnya baik dan logik yang konsisten yang sesuai untuk pembangunan dan pengoptimuman lanjut.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("Daytrading ES Wick Length Strategy", overlay=true) // Input parameters ma_length = input.int(20, title="Moving Average Length", minval=1) ma_type = input.string("VWMA", title="Type of Moving Average", options=["SMA", "EMA", "WMA", "VWMA"]) ma_offset = input.float(10, title="MA Offset (Points)", step=1) hold_periods = input.int(18, title="Holding Period (Bars)", minval=1) // Calculating upper and lower wick lengths upper_wick_length = high - math.max(close, open) lower_wick_length = math.min(close, open) - low // Total wick length (upper + lower) total_wick_length = upper_wick_length + lower_wick_length // Calculate the moving average based on the selected method ma = switch ma_type "SMA" => ta.sma(total_wick_length, ma_length) "EMA" => ta.ema(total_wick_length, ma_length) "WMA" => ta.wma(total_wick_length, ma_length) "VWMA" => ta.vwma(total_wick_length, ma_length) // Add the offset to the moving average ma_with_offset = ma + ma_offset // Entry condition: wick length exceeds MA with offset long_entry_condition = total_wick_length > ma_with_offset // Long entry if (long_entry_condition) strategy.entry("Long", strategy.long) // Automatic exit after holding period if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) >= hold_periods strategy.close("Long") // Plot the total wick length as a histogram plot(total_wick_length, color=color.blue, style=plot.style_histogram, linewidth=2, title="Total Wick Length") // Plot the moving average with offset plot(ma_with_offset, color=color.yellow, linewidth=2, title="MA of Wick Length (Offset)")