Strategi pemarkahan pengenalan ayunan

RSI SMA VOLUME PATTERN
Tarikh penciptaan: 2025-09-09 09:24:08 Akhirnya diubah suai: 2025-09-09 09:24:08
Salin: 0 Bilangan klik: 275
2
fokus pada
319
Pengikut

Strategi pemarkahan pengenalan ayunan Strategi pemarkahan pengenalan ayunan

Ini bukan strategi berayun biasa, tetapi sistem penembak tepat dengan penilaian AI

Di mana masalah dengan strategi berayun tradisional? Terdapat terlalu banyak isyarat, kualiti yang tidak sama, dan sering berlaku penembusan palsu.Setiap isyarat mempunyai penilaian kualiti 1-5 mata, hanya perdagangan isyarat berkualiti tinggi lebih dari 4 mata

Logik terasnya mudah dan kasar: mengenal pasti Higher Low (yang lebih rendah) dan Lower High (yang lebih rendah) dan kemudian memberi nilai kepada isyarat dalam empat dimensi.Hanya perlu 4 minit untuk membuka gudang dan menyaring 80% daripada isyarat sampah

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

1 mata asasPengesahan wujudnya bentuk berayun: Pengesahan pembayaran + 1 mataJumlah urus niaga melebihi 20 kitaran adalah 1.2 kali nilai purata, yang menunjukkan bahawa terdapat pengesahan dana RSI kedudukan + 1 minitRSI berada dalam julat 30-70, mengelakkan isyarat palsu untuk membeli dan menjual. Entiti K + 1 mataBentuk-bentuk yang ragu-ragu seperti bintang salib: lebih daripada 60% entiti Pergerakan + 1 mataHarga, MA20 dan MA50 bersesuaian

Hasil: 5 mata penuh isyarat kemenangan tertinggi, 4 mata lebih isyarat boleh diperdagangkan, 3 mata di bawah langsung diabaikan

Reka bentuk stop-loss: ATR maksimum 10 kitaran, bukan ATR yang boleh disetel secara rawak

Logik stop loss sangat jelas:

  • Stop loss lebih besar = 10 garis K terendah.
  • Stop loss = 10 garis K tertinggi

Kenapa 10 pusingan?Oleh kerana sifat strategi berayun adalah untuk menangkap pembalikan jangka pendek, 10 kitaran memberi ruang rehat yang mencukupi kepada harga dan tidak membiarkan jarak berhenti terlalu besar. Ia lebih sesuai dengan struktur pasaran daripada kelipatan ATR tetap.

Isyarat kegagalan adalah peluang perdagangan

Strategi ini juga mengenal pasti “pergerakan yang gagal”:

  • Kegagalan Higher Low: Terbentuknya Puncak Rendah Tinggi dan Kemerosotan
  • Kejatuhan Lower High: Terbentuknya Puncak Rendah dan Terbentuknya Puncak Tinggi

Kegagalan ini sering menjadi tanda trend meningkat dan merupakan masa yang tepat untuk berdagang terbalik.

Isyarat berterusan = trend yang disahkan

Apabila kedua-dua K line berturut-turut menunjukkan isyarat pengesahan yang sama arah, tanda berlian ditunjukkan. Ini biasanya bermakna:

  • Menonton Lebih Lanjutan: Trend Meningkat
  • Penurunan terus menerus: Trend menurun

Kemenangan isyarat berturut-turut biasanya 15-20% lebih tinggi daripada isyarat tunggal

Skenario yang boleh digunakan: Keadaan yang tidak menentu/pasaran kosong

Persekitaran terbaik

  • Pasaran dengan trend yang jelas tetapi sering berubah
  • Ketegangan sederhana (tidak terlalu tenang atau terlalu marah)
  • Varieti yang mempunyai jumlah yang stabil

Elakkan menggunakan adegan

  • Badai satu sisi melanda (sinyal berayun sering tersingkir)
  • Skrin bergelombang yang sangat rendah (sinyal jarang dan berkualiti rendah)
  • Varieti minoriti yang tidak stabil

Petua Risiko: Pemantauan Masa Lalu Tidak Bererti Pendapatan Masa Depan

Jelaskan risiko

  1. Strategi yang mungkin menyebabkan kerugian berturut-turut, terutamanya pada tempoh peralihan trend
  2. Sinyal lebih dari 4 minit, walaupun berkualiti tinggi, masih mempunyai kadar kegagalan 30-40%
  3. Reka bentuk Stop Loss agak longgar, kerugian tunggal mungkin lebih besar
  4. Perkembangan yang berbeza dalam keadaan pasaran yang berbeza

Nasihat pengurusan wang: Risiko tunggal tidak melebihi 2% akaun, penangguhan perdagangan selepas kerugian berturut-turut 3 menilai semula keadaan pasaran.

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