Pengenalan pola ganda dan strategi perdagangan persentil SR

SR BP TP FIBO ATR SMA
Tanggal Pembuatan: 2024-12-05 16:30:14 Akhirnya memodifikasi: 2024-12-05 16:30:14
menyalin: 0 Jumlah klik: 400
1
fokus pada
1617
Pengikut

Pengenalan pola ganda dan strategi perdagangan persentil SR

Ringkasan

Ini adalah sistem strategi yang menggabungkan identifikasi bentuk analisis multi-teknik dan dukungan terhadap tingkat resistensi. Strategi ini terutama digunakan untuk membuat keputusan perdagangan dengan mengidentifikasi bentuk dasar ganda (bottom form of Adam and Eve), menggabungkan tingkat Fibonacci retracement dan garis resistensi dukungan. Inti dari strategi ini adalah meningkatkan keandalan sinyal perdagangan melalui verifikasi indikator teknis multi-dimensi, sambil menggunakan level dukungan untuk resistensi sebagai referensi penting untuk pengendalian risiko.

Prinsip Strategi

Strategi ini menggunakan mekanisme triple-verifikasi untuk membuat keputusan perdagangan: pertama, dengan mengidentifikasi bentuk dua dasar dengan algoritma tertentu, termasuk “dasar Adam” yang lebih tajam dan “dasar Hawa” yang lebih bulat; kedua, dengan menggunakan tingkat penyesuaian Fibonacci ((0.618 dan 1.618) untuk menentukan area target; dan terakhir, dengan mengkonfirmasi perdagangan dengan verifikasi tingkat resistensi penyangga.

Keunggulan Strategis

  1. Multi-Verifikasi Mekanisme Meningkatkan Keandalan Sinyal Transaksi
  2. Algoritma Morphology Capture Market Turning Points dengan Akurat
  3. Tergabung dengan tingkat Fibonacci untuk memberikan target area yang tepat
  4. Verifikasi level dukungan resistensi meningkatkan keamanan transaksi
  5. Parameter strategi sangat dapat disesuaikan dan dapat beradaptasi dengan lingkungan pasar yang berbeda
  6. Tingkat otomatisasi yang tinggi, mengurangi bias dalam penilaian subjektif

Risiko Strategis

  1. Identifikasi bentuk mungkin terlambat, mempengaruhi waktu masuk
  2. Dalam pasar yang sangat bergejolak, sinyal palsu mungkin muncul.
  3. Efektivitas level dukungan resistensi dipengaruhi oleh kondisi pasar
  4. Setting parameter yang tidak tepat dapat menyebabkan overtrading
  5. Ini membutuhkan siklus pengamatan yang lebih panjang, dan mungkin kehilangan beberapa kesempatan cepat.

Arah optimasi strategi

  1. Memperkenalkan indikator volatilitas untuk memfilter kondisi pasar
  2. Menambahkan filter tren untuk meningkatkan akurasi pengenalan bentuk
  3. Metode perhitungan untuk mengoptimalkan tingkat resistensi dukungan
  4. Menambahkan indikator volume transaksi sebagai konfirmasi tambahan
  5. Mengembangkan mekanisme stop loss yang lebih fleksibel
  6. Menggunakan algoritma pembelajaran mesin untuk meningkatkan akurasi pengenalan bentuk

Meringkaskan

Strategi ini membangun sistem perdagangan yang relatif sempurna dengan menggunakan metode analisis multi-teknik seperti pengenalan bentuk, tingkat Fibonacci, dan garis resistensi pendukung. Keunggulan strategi ini adalah bahwa mekanisme verifikasi ganda memberikan keandalan yang tinggi, dan fleksibilitasnya juga memungkinkan untuk beradaptasi dengan lingkungan pasar yang berbeda. Meskipun ada beberapa risiko yang melekat, strategi ini diharapkan untuk mendapatkan kinerja yang stabil dalam perdagangan nyata dengan pengoptimalan dan perbaikan berkelanjutan.

Kode 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)