Kaedah perdagangan geometri: kod pasaran bulatan segitiga berlian

EMA RSI PATTERN
Tarikh penciptaan: 2025-09-26 08:59:35 Akhirnya diubah suai: 2025-09-26 08:59:35
Salin: 0 Bilangan klik: 180
2
fokus pada
319
Pengikut

Kaedah perdagangan geometri: kod pasaran bulatan segitiga berlian Kaedah perdagangan geometri: kod pasaran bulatan segitiga berlian

Jadi, apakah keajaiban yang dimainkan oleh strategi ini?

Tahukah anda? Pasaran sebenarnya seperti taman permainan grafik geometri yang besar! Strategi ini menyederhanakan pergerakan harga yang rumit menjadi tiga bentuk yang comel: berlian berlian mewakili isyarat pembalikan, segitiga berlian mewakili trend berterusan, lingkaran berlian mewakili penapis getaran. Ia seperti memakai “kacamata geometri” kepada pasaran, dan melihat niat sebenar harga dalam sekejap!

Logik teras strategi ini sangat mudah: EMA membentuk jalur awan untuk menilai trend besar, dan kemudian, berdasarkan kedudukan harga berbanding dengan jalur awan, “label” yang berbeza diletakkan pada titik tinggi dan rendah yang berbeza. Penembusan di bawah jalur awan adalah isyarat pembalikan berlian, di atas jalur awan adalah isyarat lanjutan segitiga, dan isyarat yang tidak cukup dipisahkan oleh EMA ditapis sebagai “bunyi” oleh bulatan.

Tiga Sistem Isyarat Terpecahkan

Papan isyarat intanIa adalah seperti mencari permata di dasar lembah atau melihat lampu amaran di puncak gunung.

Papan isyarat segitiga: Pembantu yang membantu trend berterusan! Harga muncul di atas awan yang lebih rendah, atau di bawah awan yang lebih rendah. Berfikir tentang berselancar di atas ombak, kadar kejayaan secara semula jadi lebih tinggi.

Penapis bulatan: reka bentuk ini terlalu berhati-hati! semua isyarat ditandakan sebagai “bunyi gegaran” apabila EMA pemisahan adalah kurang daripada setinggan. Ia adalah seperti meletakkan “fungsi anti-gempar” kepada strategi untuk mengelakkan sering membuka kedudukan di pasaran berpanjangan.

Rekaan Pengendalian Angin: Sederhana, kasar, dan berkesan

Logik hentian menggunakan titik-titik penting pada tahap awal: hentian berbilang kepala diletakkan pada titik rendah sebelumnya, hentian kepala kosong diletakkan pada titik tinggi sebelumnya. Keuntungan dari kaedah ini adalah asas teknikal yang jelas dan tidak akan dihapuskan oleh “penembusan palsu” kerana tetapan acak.

Mekanisme keluar RSI juga bijak: kedudukan multi-head ditutup apabila RSI kembali dari 70 ke atas, kedudukan kosong ditutup apabila RSI bangkit dari 30 ke bawah. Ini dapat mengunci keuntungan dan mengelakkan risiko terus memegang kedudukan di kawasan overbought dan oversold yang melampau.

Aplikasi Perang: Siapa yang sesuai untuk strategi ini?

Skenario yang paling sesuai: Mengikuti trend dan bertukar perdagangan dalam jangka masa sederhana dan pendek, terutamanya dalam persekitaran pasaran yang tidak menentu. Strategi ini akan menyesuaikan saiz kedudukan secara automatik: isyarat berbalik dengan 50% pengujian kedudukan, isyarat lanjutan dengan 100% susulan kedudukan.

Panduan untuk mengelakkan lubangWalaupun terdapat mekanisme penapisan bulatan, isyarat akan menjadi jarang berlaku jika pasaran berada dalam kedudukan mendatar jangka panjang. Selain itu, strategi ini lebih bergantung kepada analisis teknikal, dan berita asas yang penting mungkin membuat bentuk geometri “tidak berfungsi”.

Ingat, strategi terbaik bukanlah yang paling rumit, tetapi yang paling sesuai dengan gaya dagangan anda!

Kod sumber strategi
/*backtest
start: 2024-09-26 00:00:00
end: 2025-09-24 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

//@version=5
strategy("💎🔺⚫ Diamond-Triangle-Circle Strategy", overlay=true)

// === INPUTS ===
ema_fast = input.int(10, "Fast EMA Length")
ema_slow = input.int(20, "Slow EMA Length")
min_ema_separation = input.float(0.1, "Min EMA Separation %", minval=0.01, maxval=1.0)
rsi_length = input.int(14, "RSI Length")
rsi_exit_level = input.int(70, "RSI Exit Level")

// === CALCULATIONS ===
ema_fast_val = ta.ema(close, ema_fast)
ema_slow_val = ta.ema(close, ema_slow)
rsi = ta.rsi(close, rsi_length)

// EMA Cloud and separation
cloud_bull = ema_fast_val > ema_slow_val
ema_separation_pct = math.abs(ema_fast_val - ema_slow_val) / close * 100
chop_filter = ema_separation_pct >= min_ema_separation

// Price position relative to cloud
price_above_cloud = close > math.max(ema_fast_val, ema_slow_val)
price_below_cloud = close < math.min(ema_fast_val, ema_slow_val)

// === HIGHER LOW DETECTION ===
lowPoint = ta.lowest(low, 3)
prevLowPoint = ta.lowest(low[3], 3)
isHigherLow = low == lowPoint and low > prevLowPoint
higherLowConfirmed = isHigherLow and close > open

// === LOWER HIGH DETECTION ===
highPoint = ta.highest(high, 3)
prevHighPoint = ta.highest(high[3], 3)
isLowerHigh = high == highPoint and high < prevHighPoint
lowerHighConfirmed = isLowerHigh and close < open

// === SIGNAL CLASSIFICATION ===
// Diamond Signal - Reversal (below cloud)
diamondBullish = higherLowConfirmed and price_below_cloud and chop_filter
diamondBearish = lowerHighConfirmed and price_above_cloud and chop_filter

// Triangle Signal - Continuation (above cloud)
triangleBullish = higherLowConfirmed and price_above_cloud and chop_filter
triangleBearish = lowerHighConfirmed and price_below_cloud and chop_filter

// Circle Signal - Chop (filtered out - display only)
chopBullish = higherLowConfirmed and not chop_filter
chopBearish = lowerHighConfirmed and not chop_filter

// === RSI EXIT LOGIC ===
rsi_was_above_70 = rsi[1] >= rsi_exit_level and rsi < rsi[1]
rsi_was_below_30 = rsi[1] <= (100 - rsi_exit_level) and rsi > rsi[1]

// === STOP LOSS LOGIC ===
var float long_stop = na
var float short_stop = na

if diamondBullish or triangleBullish
    long_stop := prevLowPoint
    
if diamondBearish or triangleBearish  
    short_stop := prevHighPoint

// === STRATEGY EXECUTION ===
// Long Entries
if diamondBullish
    strategy.entry("Diamond Long", strategy.long, qty=50, comment="💎 Reversal")
    
if triangleBullish
    strategy.entry("Triangle Long", strategy.long, qty=100, comment="🔺 Continuation")

// Short Entries    
if diamondBearish
    strategy.entry("Diamond Short", strategy.short, qty=50, comment="💎 Reversal")
    
if triangleBearish
    strategy.entry("Triangle Short", strategy.short, qty=100, comment="🔺 Continuation")

// === EXITS ===
// Long Exits
if strategy.position_size > 0
    if close <= long_stop
        strategy.close_all(comment="Stop Loss")
    else if rsi_was_above_70
        strategy.close_all(comment="RSI Exit")

// Short Exits        
if strategy.position_size < 0
    if close >= short_stop
        strategy.close_all(comment="Stop Loss")  
    else if rsi_was_below_30
        strategy.close_all(comment="RSI Exit")

// === VISUAL ELEMENTS ===
// EMA Cloud
ema1 = plot(ema_fast_val, "Fast EMA", color.new(color.blue, 60), linewidth=1)
ema2 = plot(ema_slow_val, "Slow EMA", color.new(color.blue, 60), linewidth=1)
fill(ema1, ema2, color=cloud_bull ? color.new(color.green, 85) : color.new(color.red, 85), title="EMA Cloud")

// Signal Shapes
plotshape(diamondBullish, "Diamond Long", shape.diamond, location.belowbar, 
         color.new(color.lime, 0), size=size.small, text="💎")
plotshape(diamondBearish, "Diamond Short", shape.diamond, location.abovebar,
         color.new(color.red, 0), size=size.small, text="💎")

plotshape(triangleBullish, "Triangle Long", shape.triangleup, location.belowbar, 
         color.new(color.green, 20), size=size.small, text="🔺")
plotshape(triangleBearish, "Triangle Short", shape.triangledown, location.abovebar,
         color.new(color.orange, 20), size=size.small, text="🔺")

plotshape(chopBullish, "Chop Long", shape.circle, location.belowbar, 
         color.new(color.gray, 50), size=size.tiny, text="⚫")
plotshape(chopBearish, "Chop Short", shape.circle, location.abovebar,
         color.new(color.gray, 50), size=size.tiny, text="⚫")

// Stop Loss Lines
plot(strategy.position_size > 0 ? long_stop : na, "Long Stop", color.red, linewidth=2)
plot(strategy.position_size < 0 ? short_stop : na, "Short Stop", color.red, linewidth=2)

// Background coloring for market conditions
bgcolor(not chop_filter ? color.new(color.yellow, 95) : na, title="Chop Zone")


// === ALERTS ===
alertcondition(diamondBullish, title="Diamond Long Signal", message="💎 REVERSAL LONG - {{ticker}} at {{close}}")
alertcondition(diamondBearish, title="Diamond Short Signal", message="💎 REVERSAL SHORT - {{ticker}} at {{close}}")
alertcondition(triangleBullish, title="Triangle Long Signal", message="🔺 CONTINUATION LONG - {{ticker}} at {{close}}")
alertcondition(triangleBearish, title="Triangle Short Signal", message="🔺 CONTINUATION SHORT - {{ticker}} at {{close}}")
alertcondition(strategy.position_size == 0 and strategy.position_size[1] != 0, title="Position Closed", message="💰 POSITION CLOSED - {{ticker}} at {{close}}")