
Strategi ini adalah sistem perdagangan cerdas yang menggabungkan garis lurus klasik dan identifikasi bentuk garis K dalam analisis teknis. Strategi ini menangkap titik-titik perubahan tren pasar dengan tepat dengan menganalisis hubungan antara garis atas dan bawah garis K dengan entitas, digabungkan dengan sinyal silang dua garis lurus. Sistem ini tidak hanya memperhatikan pergerakan harga, tetapi juga menyesuaikan parameter perdagangan secara dinamis dengan menghitung gelombang rata-rata, meningkatkan kemampuan strategi.
Logika inti dari strategi ini dibagi menjadi dua bagian utama:
Modul pengenalan bentuk garis K mengidentifikasi sinyal terbalik potensial dengan menghitung hubungan proporsional garis atas dan bawah dengan entitas. Sistem menetapkan parameter perkalian garis yang dapat disesuaikan (wickMultiplier) dan parameter persentase entitas (bodyPercentage) untuk mengoptimalkan kualitas sinyal. Ketika garis K muncul garis atas atau bawah yang memenuhi syarat, sistem akan mengirimkan sinyal melakukan lebih atau kosong.
Sistem crossover dua rata-rata menggunakan rata-rata bergerak sederhana (SMA) 14 periode dan 28 periode sebagai indikator tren. Ketika rata-rata jangka pendek melintasi rata-rata jangka panjang ke atas, sistem menghasilkan sinyal ganda; Ketika rata-rata jangka pendek melintasi rata-rata jangka panjang ke bawah, sistem menghasilkan sinyal kosong.
Strategi ini dengan menggabungkan pengenalan bentuk K-line dan sistem persilangan linier, membangun kerangka keputusan perdagangan yang relatif lengkap. Keunggulan strategi ini adalah mekanisme penyaringan sinyal yang ketat dan kemampuan pengaturan parameter yang fleksibel, tetapi juga perlu memperhatikan optimasi parameter dan masalah adaptasi dengan lingkungan pasar. Dengan terus-menerus mengoptimalkan dan memperbaiki, strategi ini diharapkan dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar.
/*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)