Pengecaman corak berbilang dan strategi perdagangan persentil SR

SR BP TP FIBO ATR SMA
Tarikh penciptaan: 2024-12-05 16:30:14 Akhirnya diubah suai: 2024-12-05 16:30:14
Salin: 0 Bilangan klik: 400
1
fokus pada
1617
Pengikut

Pengecaman corak berbilang dan strategi perdagangan persentil SR

Gambaran keseluruhan

Ini adalah sistem strategi yang menggabungkan pengenalan bentuk analisis teknikal berbilang dan tahap rintangan sokongan. Strategi ini digunakan untuk membuat keputusan perdagangan dengan mengenal pasti bentuk dasar ganda (bottom form of Adam and Eve), menggabungkan tahap pemulihan Fibonacci dan garis rintangan sokongan. Inti strategi ini adalah untuk meningkatkan kebolehpercayaan isyarat perdagangan melalui pengesahan indikator teknikal berbilang dimensi, sambil menggunakan tahap rintangan sokongan sebagai rujukan penting untuk kawalan risiko.

Prinsip Strategi

Strategi ini menggunakan mekanisme triple-verifikasi untuk membuat keputusan perdagangan: pertama, dengan algoritma tertentu untuk mengenal pasti bentuk dua-bottom, termasuk “bottom Adam” yang lebih tajam dan “bottom Eve” yang lebih bulat; kedua, menggunakan tahap regangan Fibonacci ((0.618 dan 1.618) untuk menentukan kawasan sasaran; dan terakhir, dengan pengesahan tahap rintangan sokongan untuk mengesahkan perdagangan. Penciptaan isyarat perdagangan memerlukan syarat untuk mengenali bentuk, tahap Fibonacci dan tahap rintangan sokongan.

Kelebihan Strategik

  1. Sistem pengesahan berbilang meningkatkan kebolehpercayaan isyarat perdagangan
  2. Menangkap titik perubahan pasaran dengan tepat melalui algoritma pengenalan bentuk
  3. Menggabungkan tahap Fibonacci untuk menyediakan kawasan sasaran yang tepat
  4. Pengesahan tahap rintangan sokongan meningkatkan keselamatan urus niaga
  5. Parameter strategi sangat boleh dilaraskan dan boleh menyesuaikan diri dengan persekitaran pasaran yang berbeza
  6. Tingkat automasi yang tinggi, mengurangkan bias penilaian subjektif

Risiko Strategik

  1. Pengiktirafan bentuk mungkin ketinggalan zaman, mempengaruhi masa kemasukan
  2. Menerangkan kemungkinan munculnya isyarat palsu dalam pasaran yang bergolak
  3. Keberkesanan tahap rintangan sokongan dipengaruhi oleh keadaan pasaran
  4. Tetapan parameter yang tidak betul boleh menyebabkan perdagangan berlebihan
  5. Ia memerlukan kitaran pemerhatian yang lebih lama, dan mungkin kehilangan peluang yang cepat.

Arah pengoptimuman strategi

  1. Pengenalan penunjuk turun naik untuk menapis keadaan pasaran
  2. Menambah penapis trend untuk meningkatkan ketepatan pengenalan bentuk
  3. Kaedah pengiraan untuk mengoptimumkan tahap rintangan sokongan
  4. Penambahan penunjuk jumlah transaksi sebagai pengesahan tambahan
  5. Membangunkan mekanisme penangguhan kerugian yang lebih fleksibel
  6. Pengenalan algoritma pembelajaran mesin untuk meningkatkan ketepatan pengenalan bentuk

ringkaskan

Strategi ini membina sistem perdagangan yang agak sempurna dengan menggunakan pelbagai analisis teknikal seperti pengenalan bentuk, tahap Fibonacci dan garis rintangan sokongan. Kelebihan strategi ini adalah bahawa mekanisme pengesahan berganda memberikan kebolehpercayaan yang tinggi, dan kemampuan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza. Walaupun terdapat beberapa risiko yang wujud, strategi ini dijangka dapat mencapai prestasi yang stabil dalam perdagangan sebenar dengan pengoptimuman dan penyempurnaan yang berterusan.

Kod sumber strategi
/*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)