
Strategi ini adalah sistem perdagangan pintar yang menggabungkan persilangan garisan rata dan pengenalan bentuk garisan K dalam analisis teknikal. Strategi ini menangkap titik-titik perubahan tren pasaran dengan tepat dengan menganalisis hubungan antara garisan K dan entiti, digabungkan dengan isyarat persilangan garisan dua rata. Sistem ini tidak hanya memperhatikan pergerakan harga, tetapi juga menyesuaikan parameter perdagangan secara dinamik dengan mengira gelombang rata-rata, meningkatkan kesesuaian strategi.
Strategi ini mempunyai dua bahagian utama:
Modul pengiktirafan bentuk K-Line mengiktiraf isyarat pembalikan yang berpotensi dengan mengira perbandingan perbandingan antara garis bayangan atas dan bawah dengan entiti. Sistem menetapkan parameter perkalian garis bayangan yang boleh disesuaikan (wickMultiplier) dan parameter peratusan entiti (bodyPercentage) untuk mengoptimumkan kualiti isyarat. Apabila garis K menunjukkan garis bayangan panjang yang memenuhi syarat atau garis bayangan panjang yang memenuhi syarat, sistem akan mengeluarkan isyarat melakukan lebih atau kosong.
Sistem persilangan dua rata-rata menggunakan purata bergerak sederhana (SMA) 14 dan 28 kitaran sebagai penunjuk trend. Apabila rata-rata jangka pendek melintasi rata-rata jangka panjang ke atas, sistem menghasilkan isyarat ganda; apabila rata-rata jangka pendek melintasi rata-rata jangka panjang ke bawah, sistem menghasilkan isyarat kosong.
Strategi ini membina kerangka keputusan perdagangan yang agak lengkap dengan menggabungkan pengenalan bentuk K-line dan sistem persilangan linear. Kelebihan strategi ini adalah mekanisme penyaringan isyarat yang ketat dan kemampuan penyesuaian parameter yang fleksibel, tetapi juga perlu memperhatikan pengoptimuman parameter dan kesesuaian dengan keadaan pasaran. Dengan pengoptimuman dan penyempurnaan yang berterusan, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam 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)