Strategi ini adalah sistem perdagangan pintar yang menggabungkan alat analisis teknikal klasik termasuk crossover purata bergerak dan pengenalan corak candlestick. Strategi ini mengenal pasti titik perubahan pasaran yang berpotensi dengan menganalisis hubungan antara bayang-bayang candlestick dan badan, sambil menggabungkan isyarat crossover purata bergerak berganda. Sistem ini bukan sahaja memberi tumpuan kepada trend harga tetapi juga mengira julat purata untuk menyesuaikan parameter perdagangan secara dinamik untuk peningkatan kesesuaian.
Logik teras terdiri daripada dua komponen utama:
Modul pengenalan corak candlestick mengenal pasti isyarat pembalikan yang berpotensi dengan mengira nisbah antara bayangan dan badan. Sistem ini termasuk parameter yang boleh disesuaikan untuk pengganda bayangan (wickMultiplier) dan peratusan badan (bodyPercentage) untuk mengoptimumkan kualiti isyarat. Apabila candlestick memaparkan bayangan atas atau bawah yang layak, sistem menghasilkan isyarat panjang atau pendek yang sepadan.
Sistem crossover purata bergerak berganda menggunakan purata bergerak mudah (SMA) 14 tempoh dan 28 tempoh sebagai penunjuk trend. Isyarat panjang dihasilkan apabila MA jangka pendek melintasi di atas MA jangka panjang, sementara isyarat pendek berlaku apabila MA jangka pendek melintasi di bawah MA jangka panjang.
Strategi ini membina kerangka keputusan perdagangan yang agak lengkap dengan menggabungkan pengenalan corak lilin dengan sistem persilangan purata bergerak. Kekuatannya terletak pada mekanisme penapisan isyarat yang ketat dan keupayaan penyesuaian parameter yang fleksibel, sementara perhatian mesti diberikan kepada pengoptimuman parameter dan daya adaptasi persekitaran pasaran. Melalui pengoptimuman dan penyempurnaan berterusan, strategi menunjukkan potensi untuk mengekalkan prestasi yang stabil di pelbagai keadaan pasaran.
/*backtest start: 2024-10-28 00:00:00 end: 2024-11-27 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 indicator("Wick Reversal Setup", overlay=true) // Input parameters wickMultiplier = input.float(3.5, title="Wick Multiplier", minval=0.5, maxval=20) bodyPercentage = input.float(0.25, title="Body Percentage", minval=0.1, maxval=1.0) // Calculate the average range over 50 periods avgRange = ta.sma(high - low, 50) // Define the lengths of wicks and bodies bodyLength = math.abs(close - open) upperWickLength = high - math.max(close, open) lowerWickLength = math.min(close, open) - low totalRange = high - low // Long signal conditions longSignal = (close > open and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (close < open and lowerWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (close == open and close != high and upperWickLength >= bodyLength * wickMultiplier and upperWickLength <= totalRange * bodyPercentage) or (open == high and close == high and totalRange >= avgRange) // Short signal conditions shortSignal = (close < open and (high - open) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (close > open and (high - close) >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (close == open and close != low and lowerWickLength >= bodyLength * wickMultiplier and lowerWickLength <= totalRange * bodyPercentage) or (open == low and close == low and totalRange >= avgRange) // Plot signals plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Long") plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Short") // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Sahaj_Beriwal //@version=5 strategy("My strategy", overlay=true, margin_long=100, margin_short=100) longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (longCondition) strategy.entry("L", strategy.long) shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) if (shortCondition) strategy.entry("S", strategy.short)