Strategi penilaian identifikasi ayunan

RSI SMA VOLUME PATTERN
Tanggal Pembuatan: 2025-09-09 09:24:08 Akhirnya memodifikasi: 2025-09-09 09:24:08
menyalin: 0 Jumlah klik: 275
2
fokus pada
319
Pengikut

Strategi penilaian identifikasi ayunan Strategi penilaian identifikasi ayunan

Ini bukan strategi berayun biasa, tetapi sistem sniper presisi dengan skor AI

Di mana masalah dengan strategi swing tradisional? terlalu banyak sinyal, kualitas yang tidak konsisten, dan sering terjadi penembusan palsu. Strategi ini langsung mengatasi masalah:Setiap sinyal memiliki nilai kualitas 1-5 dan hanya diperdagangkan sinyal berkualitas tinggi di atas 4 poin

Logika intinya sederhana dan kasar: identifikasi Higher Low (yang lebih tinggi) dan Lower High (yang lebih rendah), lalu beri nilai pada sinyal dalam empat dimensi.Hanya membutuhkan waktu 4 menit untuk membuka gudang dan langsung menyaring 80% dari sinyal sampah

Di mana sistem penilaian 5 dimensi lebih baik dari satu indikator?

1 poin dasarKonfirmasi keberadaan bentuk berayun: Konfirmasi pengiriman + 1 poinJumlah transaksi lebih dari 20 siklus adalah 1,2 kali nilai rata-rata, menunjukkan dukungan dana RSI posisi + 1 poinRSI berada di kisaran 30-70, menghindari sinyal palsu untuk overbought dan oversold. Entitas garis K + 1 poinTercatat lebih dari 60 persen dari jumlah entitas yang terdaftar, memastikan tidak ada bentuk ragu-ragu seperti bintang salib. Kecepatan tren + 1 poinHarga, MA20 dan MA50 berlawanan arah

Hasilnya: 5 poin penuh sinyal paling banyak menang, 4 poin lebih dari sinyal dapat diperdagangkan, 3 poin di bawah langsung diabaikan

Desain Stop Loss: 10 siklus maksimum, bukan ATR yang disetel secara acak

Logika stop loss sangat jelas:

  • Stop loss plus = 10 garis K terendah
  • Stop loss = 10 garis K tertinggi

Mengapa 10 siklus?Karena sifat strategi berayun adalah menangkap pembalikan jangka pendek, 10 siklus tidak hanya memberi harga cukup ruang untuk bernafas, tetapi juga tidak membuat jarak stop loss terlalu besar. Lebih sesuai dengan struktur pasar daripada kelipatan ATR tetap.

Sinyal kegagalan adalah peluang perdagangan

Strategi ini juga mengidentifikasi “goyang-goyang yang gagal”:

  • Higher Low gagal: Terbentuknya titik terendah yang lebih tinggi dan kemudian jatuh
  • Kegagalan Lower High: Terbentuknya Puncak Lebih Rendah Lalu Terobosan

Kegagalan ini seringkali mengindikasikan percepatan tren, dan merupakan waktu yang tepat untuk melakukan perdagangan terbalik.

Sinyal berturut-turut = konfirmasi tren

Ketika dua garis K berturut-turut muncul di arah yang sama, tanda diamond akan muncul. Ini biasanya berarti:

  • Menonton Lebih Lanjut: Tren Naik
  • Perbandingan harga saham di Indonesia: Menurun

Keuntungan dari sinyal berturut-turut biasanya 15-20% lebih tinggi daripada sinyal tunggal

Skenario yang berlaku: Terlalu banyak getaran/ Pasar kosong

Lingkungan terbaik

  • Pasar dengan tren yang jelas namun sering berbalik
  • Fluktuasi rata-rata (tidak terlalu tenang atau terlalu marah)
  • Varietas yang relatif stabil

Hindari penggunaan skenario

  • Badai sepihak melanda (sinyal berayun sering terjatuh)
  • Disk horizontal dengan tingkat fluktuasi yang sangat rendah (sinyal jarang dan kualitas buruk)
  • Varietas minoritas dengan penjualan yang sangat tidak stabil

Petunjuk Risiko: Pemantauan Sejarah Tidak Sama dengan Hasil Masa Depan

Jelaskan Risiko

  1. Strategi kemungkinan kerugian berturut-turut, terutama pada periode konversi tren
  2. Sinyal lebih dari 4 menit, meskipun kualitasnya tinggi, masih memiliki tingkat kegagalan 30-40%
  3. Desain Stop Loss relatif longgar, kerugian tunggal mungkin lebih besar
  4. Performa yang berbeda dalam berbagai kondisi pasar

Saran manajemen dana: Risiko tunggal tidak lebih dari 2% dari akun, setelah 3 kerugian berturut-turut, trading suspended dan re-evaluasi kondisi pasar.

Kode Sumber Strategi
/*backtest
start: 2024-09-09 00:00:00
end: 2025-09-07 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

//@version=6
strategy("Higher Lows, Lower Highs & Failures with Signal Quality Scoring", overlay=true)

// --- Higher Low detection ---
shares = 1
minScore = 4  // Minimum score to take trades

lowPoint      = ta.lowest(low, 3)
prevLowPoint  = ta.lowest(low[3], 3)
isHigherLow   = low == lowPoint and low > prevLowPoint
bullConfirm   = isHigherLow and close > open

// --- Lower High detection ---
highPoint     = ta.highest(high, 3)
prevHighPoint = ta.highest(high[3], 3)
isLowerHigh   = high == highPoint and high < prevHighPoint
bearConfirm   = isLowerHigh and close < open

// --- Failures ---
failHigherLow = isHigherLow[1] and low < low[1]
failLowerHigh = isLowerHigh[1] and high > high[1]

// --- 2-in-a-row detection ---
bullSecond = bullConfirm and bullConfirm[1]
bearSecond = bearConfirm and bearConfirm[1]

// --- SIGNAL QUALITY SCORING (1-5 scale) ---
bullScore = if bullConfirm
    score = 1  // Base score
    
    // Factor 1: Volume confirmation
    avgVolume = ta.sma(volume, 20)
    if volume > avgVolume * 1.2
        score := score + 1
        
    // Factor 2: RSI positioning
    rsi = ta.rsi(close, 14)
    if rsi < 70 and rsi > 30
        score := score + 1
        
    // Factor 3: Candle strength
    bodySize = math.abs(close - open)
    candleRange = high - low
    bodyRatio = candleRange > 0 ? bodySize / candleRange : 0
    if bodyRatio > 0.6
        score := score + 1
        
    // Factor 4: Trend alignment
    ma20 = ta.sma(close, 20)
    ma50 = ta.sma(close, 50)
    if ma20 > ma50 and close > ma20
        score := score + 1
        
    math.max(1, math.min(5, score))
else
    na

bearScore = if bearConfirm
    score = 1  // Base score
    
    // Factor 1: Volume confirmation
    avgVolume = ta.sma(volume, 20)
    if volume > avgVolume * 1.2
        score := score + 1
        
    // Factor 2: RSI positioning
    rsi = ta.rsi(close, 14)
    if rsi > 30 and rsi < 70
        score := score + 1
        
    // Factor 3: Candle strength
    bodySize = math.abs(close - open)
    candleRange = high - low
    bodyRatio = candleRange > 0 ? bodySize / candleRange : 0
    if bodyRatio > 0.6
        score := score + 1
        
    // Factor 4: Trend alignment
    ma20 = ta.sma(close, 20)
    ma50 = ta.sma(close, 50)
    if ma20 < ma50 and close < ma20
        score := score + 1
        
    math.max(1, math.min(5, score))
else
    na

// --- Plot main signals with score-based styling ---
// Bullish signals
plotshape(bullConfirm and bullScore == 1, "Bull Score 1", shape.triangleup, location.belowbar, color.gray, size=size.tiny)
plotshape(bullConfirm and bullScore == 2, "Bull Score 2", shape.triangleup, location.belowbar, color.orange, size=size.small)
plotshape(bullConfirm and bullScore == 3, "Bull Score 3", shape.triangleup, location.belowbar, color.yellow, size=size.normal)
plotshape(bullConfirm and bullScore == 4, "Bull Score 4", shape.triangleup, location.belowbar, color.lime, size=size.normal)
plotshape(bullConfirm and bullScore == 5, "Bull Score 5", shape.triangleup, location.belowbar, color.green, size=size.large)

// Bearish signals
plotshape(bearConfirm and bearScore == 1, "Bear Score 1", shape.triangledown, location.abovebar, color.gray, size=size.tiny)
plotshape(bearConfirm and bearScore == 2, "Bear Score 2", shape.triangledown, location.abovebar, color.orange, size=size.small)
plotshape(bearConfirm and bearScore == 3, "Bear Score 3", shape.triangledown, location.abovebar, color.yellow, size=size.normal)
plotshape(bearConfirm and bearScore == 4, "Bear Score 4", shape.triangledown, location.abovebar, color.lime, size=size.normal)
plotshape(bearConfirm and bearScore == 5, "Bear Score 5", shape.triangledown, location.abovebar, color.green, size=size.large)

// --- Plot failures ---
plotshape(failHigherLow, "Failed Higher Low", shape.arrowdown, location.abovebar, color.red, size=size.small)
plotshape(failLowerHigh, "Failed Lower High", shape.arrowup, location.belowbar, color.green, size=size.small)

// --- Plot consecutive signals ---
plotshape(bullSecond, "Double Bullish Star", shape.diamond, location.bottom, color.lime, size=size.tiny)
plotshape(bearSecond, "Double Bearish Star", shape.diamond, location.top, color.red, size=size.tiny)

// --- Display score labels ---
if bullConfirm
    labelColor = bullScore == 1 ? color.gray : bullScore == 2 ? color.orange : bullScore == 3 ? color.yellow : bullScore == 4 ? color.lime : color.green
    label.new(bar_index, low - (high - low) * 0.1, "↑ " + str.tostring(bullScore), style=label.style_label_up, color=labelColor, textcolor=color.white, size=size.small)

if bearConfirm
    labelColor = bearScore == 1 ? color.gray : bearScore == 2 ? color.orange : bearScore == 3 ? color.yellow : bearScore == 4 ? color.lime : color.green
    label.new(bar_index, high + (high - low) * 0.1, "↓ " + str.tostring(bearScore), style=label.style_label_down, color=labelColor, textcolor=color.white, size=size.small)

// --- Alerts for high-quality signals only ---
alertcondition(bullConfirm and bullScore >= 4, "High Quality Bullish", "Strong Bullish Signal Detected")
alertcondition(bearConfirm and bearScore >= 4, "High Quality Bearish", "Strong Bearish Signal Detected")

// --- STRATEGY LOGIC ---
// Track previous highs and lows for stop levels
var float prevHigh = na
var float prevLow = na

// Update previous high/low when we get signals
if bullConfirm and bullScore >= minScore
    prevLow := ta.lowest(low, 10)  // Previous 10-bar low for stop
    
if bearConfirm and bearScore >= minScore
    prevHigh := ta.highest(high, 10)  // Previous 10-bar high for stop

// Entry conditions (only scores 4 or higher)
longCondition = bullConfirm and bullScore >= minScore
shortCondition = bearConfirm and bearScore >= minScore

// Execute trades
if longCondition and strategy.position_size == 0
    strategy.entry("Long", strategy.long, qty=shares)
    strategy.exit("Long Exit", "Long", stop=prevLow)
    
if shortCondition and strategy.position_size == 0
    strategy.entry("Short", strategy.short, qty=shares)
    strategy.exit("Short Exit", "Short", stop=prevHigh)

// Close opposite position if new signal occurs
if longCondition and strategy.position_size < 0
    strategy.close("Short")
    strategy.entry("Long", strategy.long, qty=shares)
    strategy.exit("Long Exit", "Long", stop=prevLow)
    
if shortCondition and strategy.position_size > 0
    strategy.close("Long")
    strategy.entry("Short", strategy.short, qty=shares)
    strategy.exit("Short Exit", "Short", stop=prevHigh)

// Plot stop levels for visualization
plot(strategy.position_size > 0 ? prevLow : na, "Long Stop", color.red, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size < 0 ? prevHigh : na, "Short Stop", color.red, linewidth=2, style=plot.style_linebr)