
Strategi ini ialah sistem perdagangan kuantitatif berdasarkan analisis teknikal carta candlestick, yang terutamanya mengenal pasti peluang dagangan yang berpotensi dengan menganalisis jumlah panjang bayang-bayang atas dan bawah batang lilin. Teras strategi adalah untuk membandingkan jumlah panjang bayang-bayang yang dikira dalam masa nyata dengan purata bergerak terlaras mengimbangi, dan menjana isyarat panjang apabila panjang bayang-bayang menembusi purata bergerak. Strategi ini menyepadukan berbilang jenis purata bergerak, termasuk purata bergerak mudah (SMA), purata bergerak eksponen (EMA), purata bergerak berwajaran (WMA) dan purata bergerak berwajaran volum (VWMA), menyediakan pedagang dengan Menyediakan ruang pemilihan parameter yang fleksibel.
Logik teras strategi merangkumi langkah utama berikut:
Strategi ini menganalisis penunjuk teknikal klasik panjang bayangan lilin dan menggabungkannya dengan kaedah perdagangan kuantitatif moden untuk membina sistem perdagangan dengan logik yang jelas dan praktikal yang kukuh. Kelebihan teras strategi terletak pada fleksibiliti parameter dan kawalan risiko yang lengkap, tetapi ia juga mempunyai batasan seperti pergantungan yang kuat pada persekitaran pasaran dan sensitiviti parameter. Dengan memperkenalkan penunjuk berbilang dimensi dan mengoptimumkan pengurusan kedudukan, strategi masih mempunyai banyak ruang untuk penambahbaikan. Secara keseluruhan, ini adalah strategi perdagangan kuantitatif dengan asas yang kukuh dan logik yang munasabah, yang sesuai untuk pembangunan dan pengoptimuman selanjutnya.
/*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)")