Sumber dimuat naik... memuat...

Pengiktirafan Multi-Pattern dan Strategi Dagangan SR

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

img

Ringkasan

Ini adalah sistem strategi dagangan yang komprehensif yang menggabungkan banyak pengiktirafan corak analisis teknikal dengan tahap sokongan dan rintangan. Strategi ini terutamanya berfungsi dengan mengenal pasti corak bawah berganda (bawah Adam dan Hawa), mengintegrasikan tahap retracement Fibonacci, dan menggunakan garis sokongan dan rintangan untuk keputusan dagangan. Kekuatan terasnya terletak pada pengesahan penunjuk teknikal berbilang dimensi, yang meningkatkan kebolehpercayaan isyarat dagangan sambil menggunakan tahap sokongan dan rintangan sebagai rujukan penting untuk kawalan risiko.

Prinsip Strategi

Strategi ini menggunakan mekanisme pengesahan tiga kali untuk keputusan perdagangan: Pertama, ia mengenal pasti corak bawah berganda melalui algoritma tertentu, termasuk Adam bottom yang lebih tajam dan Eve bottom yang lebih bulat; Kedua, ia menggunakan tahap retracement Fibonacci (0.618 dan 1.618) untuk menentukan zon sasaran; Akhirnya, ia mengesahkan isyarat perdagangan melalui pengesahan tahap sokongan dan rintangan. Isyarat perdagangan dihasilkan hanya apabila pengiktirafan corak, tahap Fibonacci, dan syarat tahap sokongan / rintangan dipenuhi secara serentak. Khususnya, isyarat panjang diaktifkan apabila tahap sokongan / rintangan berada di atas lanjutan 1.618 Fibonacci, sementara isyarat pendek diaktifkan apabila tahap sokongan / rintangan berada di bawah perpanjangan 0.618 Fibonacci.

Kelebihan Strategi

  1. Mekanisme pengesahan berbilang sangat meningkatkan kebolehpercayaan isyarat dagangan
  2. Algoritma pengenalan corak dengan tepat menangkap titik perubahan pasaran
  3. Tahap Fibonacci memberikan zon sasaran yang tepat
  4. Pengesahan tahap sokongan/pemberantasan meningkatkan keselamatan dagangan
  5. Parameter yang sangat boleh diselaraskan dengan keadaan pasaran yang berbeza
  6. Tahap automatik yang tinggi mengurangkan bias penilaian subjektif

Risiko Strategi

  1. Pengiktirafan corak mungkin mempunyai latensi, mempengaruhi masa kemasukan
  2. Isyarat palsu mungkin berlaku di pasaran yang sangat tidak menentu
  3. Keberkesanan tahap sokongan / rintangan dipengaruhi oleh keadaan pasaran
  4. Tetapan parameter yang tidak betul boleh membawa kepada overtrading
  5. Menghendaki tempoh pemerhatian yang lebih lama, berpotensi kehilangan peluang cepat

Arahan Pengoptimuman Strategi

  1. Memperkenalkan penunjuk turun naik untuk menapis keadaan pasaran
  2. Tambah penapis trend untuk meningkatkan ketepatan pengenalan corak
  3. Mengoptimumkan kaedah pengiraan tahap sokongan / rintangan
  4. Sertakan penunjuk jumlah sebagai pengesahan
  5. Membangunkan mekanisme stop-loss dan mengambil keuntungan yang lebih fleksibel
  6. Melaksanakan algoritma pembelajaran mesin untuk meningkatkan ketepatan pengenalan corak

Ringkasan

Strategi ini membina sistem perdagangan yang agak lengkap dengan menggunakan pelbagai kaedah analisis teknikal termasuk pengenalan corak, tahap Fibonacci, dan garis sokongan / rintangan. Kekuatannya terletak pada kebolehpercayaan yang tinggi yang disediakan oleh pelbagai mekanisme pengesahan, sementara penyesuaiannya membolehkan penyesuaian dengan keadaan pasaran yang berbeza. Walaupun terdapat beberapa risiko yang melekat, melalui pengoptimuman dan peningkatan berterusan, strategi menunjukkan janji untuk prestasi yang stabil dalam perdagangan sebenar. Dengan menggabungkan penunjuk teknikal tambahan dan algoritma pengoptimuman, terdapat ruang yang signifikan untuk peningkatan prestasi.


/*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 lanjut