Sumber daya yang dimuat... Pemuatan...

Pengakuan Multi-Pattern dan Strategi Trading Tingkat SR

Penulis:ChaoZhang, Tanggal: 2024-12-05 16:30:14
Tag:SRBPTPFIBOATRSMA

img

Gambaran umum

Ini adalah sistem strategi trading yang komprehensif yang menggabungkan beberapa pengakuan pola analisis teknis dengan level support dan resistance. Strategi ini terutama bekerja dengan mengidentifikasi pola double bottom (bottom Adam dan Eve), mengintegrasikan level retracement Fibonacci, dan memanfaatkan garis support dan resistance untuk keputusan trading. Kekuatan utamanya terletak pada verifikasi indikator teknis multidimensi, yang meningkatkan keandalan sinyal trading sambil menggunakan level support dan resistance sebagai referensi penting untuk pengendalian risiko.

Prinsip Strategi

Strategi ini menggunakan mekanisme verifikasi tiga kali lipat untuk keputusan perdagangan: Pertama, ia mengidentifikasi pola dasar ganda melalui algoritma tertentu, termasuk Adam bottom yang lebih tajam dan Eve bottom yang lebih bulat; Kedua, ia menggunakan level retracement Fibonacci (0.618 dan 1.618) untuk menentukan zona target; Akhirnya, ia mengkonfirmasi sinyal perdagangan melalui verifikasi level support dan resistance. Sinyal perdagangan hanya dihasilkan ketika kondisi pengenalan pola, level Fibonacci, dan level support/resistance terpenuhi secara bersamaan. Secara khusus, sinyal panjang dipicu ketika level support/resistance berada di atas ekstensi 1.618 Fibonacci, sementara sinyal pendek dipicu ketika level support/resistance berada di bawah ekstensi 0.618 Fibonacci.

Keuntungan Strategi

  1. Mekanisme verifikasi ganda sangat meningkatkan keandalan sinyal perdagangan
  2. Algoritma pengenalan pola dengan akurat menangkap titik balik pasar
  3. Tingkat Fibonacci memberikan zona target yang tepat
  4. Verifikasi level support/resistance meningkatkan keamanan perdagangan
  5. Parameter yang sangat dapat disesuaikan dengan kondisi pasar yang berbeda
  6. Tingkat otomatisasi yang tinggi mengurangi bias penilaian subjektif

Risiko Strategi

  1. Pengakuan pola mungkin memiliki latensi, mempengaruhi waktu entri
  2. Sinyal palsu dapat terjadi di pasar yang sangat volatile
  3. Efektivitas level support/resistance dipengaruhi oleh kondisi pasar
  4. Pengaturan parameter yang tidak benar dapat menyebabkan overtrading
  5. Membutuhkan periode pengamatan yang lebih lama, berpotensi kehilangan peluang cepat

Arah Optimasi Strategi

  1. Memperkenalkan indikator volatilitas untuk memfilter kondisi pasar
  2. Tambahkan filter tren untuk meningkatkan akurasi pengenalan pola
  3. Mengoptimalkan metode perhitungan level support/resistance
  4. Sertakan indikator volume sebagai konfirmasi
  5. Mengembangkan mekanisme stop loss dan take profit yang lebih fleksibel
  6. Mengimplementasikan algoritma pembelajaran mesin untuk meningkatkan akurasi pengenalan pola

Ringkasan

Strategi ini membangun sistem perdagangan yang relatif lengkap dengan memanfaatkan secara komprehensif beberapa metode analisis teknis termasuk pengenalan pola, tingkat Fibonacci, dan garis dukungan / resistensi. Kekuatannya terletak pada keandalan tinggi yang disediakan oleh beberapa mekanisme verifikasi, sementara penyesuaiannya memungkinkan adaptasi dengan kondisi pasar yang berbeda. Meskipun ada beberapa risiko yang melekat, melalui optimasi dan perbaikan terus-menerus, strategi menunjukkan janji untuk kinerja yang stabil dalam perdagangan aktual. Dengan menggabungkan indikator teknis tambahan dan algoritma optimasi, ada ruang yang signifikan untuk peningkatan kinerja.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Double Bottom with Support/Resistance Strategy - Aynet", overlay=true)

// Inputs
lookbackPeriod = input(21, "Lookback Period")
swingLowThreshold = input(1.5, "Swing Low Threshold")
fibLevel1 = input(0.618, "Fibonacci Level 1")
fibLevel3 = input(1.618, "Fibonacci Level 2")
srPeriod = input(21, "Support/Resistance Period") 
srThreshold = input(3, "Support/Resistance Touch Points")

// Support/Resistance Function
get_sr_level(idx) =>
    var level = 0.0
    var count = 0
    
    if bar_index % srPeriod == 0
        highCount = 0
        lowCount = 0
        for i = 0 to srPeriod - 1
            if math.abs(high[i] - high) < (high * 0.001)
                highCount += 1
            if math.abs(low[i] - low) < (low * 0.001)
                lowCount += 1
                
        if highCount >= srThreshold
            level := high
            count := highCount
        if lowCount >= srThreshold
            level := low
            count := lowCount
            
    [level, count]

// Pattern Detection Functions
isSwingLow(src, left, right) =>
    isLow = true
    for i = 0 to left + right
        if src[i] < src[right]
            isLow := false
    isLow

getSpikeSharpness(index) =>
    priceRange = high[index] - low[index]
    bodyRange = math.abs(close[index] - open[index])
    sharpness = priceRange / bodyRange
    sharpness

// Pattern Variables
var float firstBottom = na
var float secondBottom = na
var bool isAdam = false
var bool isEve = false
var float level1Value = na
var float level3Value = na

// Pattern Detection
bottom = isSwingLow(low, lookbackPeriod, lookbackPeriod)
if bottom
    sharpness = getSpikeSharpness(0)
    if na(firstBottom)
        firstBottom := low
        isAdam := sharpness > swingLowThreshold
    else if low <= firstBottom * 1.02 and low >= firstBottom * 0.98
        secondBottom := low
        isEve := sharpness <= swingLowThreshold

// Calculate Fibonacci
if not na(secondBottom)
    highPoint = ta.highest(high, lookbackPeriod)
    fibDistance = highPoint - math.min(firstBottom, secondBottom)
    level1Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel1
    level3Value := math.min(firstBottom, secondBottom) + fibDistance * fibLevel3

// Get S/R Level
[srLevel, srCount] = get_sr_level(0)

// Trading Logic
longCondition = srLevel > level3Value
shortCondition = srLevel < level1Value

if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

// Reset Pattern
if high > ta.highest(high[1], lookbackPeriod)
    firstBottom := na
    secondBottom := na
    isAdam := false
    isEve := false
var table logo = table.new(position.top_right, 1, 1)
table.cell(logo, 0, 0, 'Double Bottom with Support/Resistance Strategy - Aynet', text_size=size.large, text_color=color.white)
// Plots
plot(level1Value, "0.236", color=color.rgb(245, 0, 0), style=plot.style_line)
plot(level3Value, "0.618", color=color.rgb(82, 166, 255), style=plot.style_line)
plot(srLevel, "S/R Level", color=color.white)

plotshape(bottom and not na(firstBottom) and na(secondBottom), "Adam Bottom", shape.circle, location.belowbar, color.green)
plotshape(bottom and not na(secondBottom), "Eve Bottom", shape.circle, location.belowbar, color.yellow)

Berkaitan

Lebih banyak