
Apakah Anda tahu? Pasar sebenarnya seperti taman bermain geometris yang besar! Strategi ini menyederhanakan pergerakan harga yang kompleks menjadi tiga bentuk yang lucu: berlian berlian mewakili sinyal pembalikan, segitiga berlian mewakili perpanjangan tren, lingkaran berlian mewakili penyaringan getaran.
Logika inti dari strategi ini sangat sederhana: EMA membentuk pita awan untuk menilai tren besar, dan kemudian memberi “label” yang berbeda pada berbagai titik tinggi dan rendah berdasarkan posisi harga relatif terhadap pita awan. Penembusan di bawah pita awan adalah sinyal pembalikan berlian, dan di atas pita awan adalah sinyal lanjutan segitiga, dan sinyal yang kurang terisolasi oleh EMA disaring sebagai “noise” oleh lingkaran.
Tanda-tanda berlianIni seperti menemukan permata di dasar lembah, atau melihat lampu peringatan di puncak gunung.
Sinyal segitiga: Trends Continued Trending Assistant! Aktifkan saat harga muncul di atas awan atau di bawah awan. Bayangkan berselancar di atas ombak, dan tingkat keberhasilannya akan lebih tinggi.
Filter lingkaran: Desain ini terlalu hati-hati! Ketika EMA lebih kecil dari batas yang ditetapkan, semua sinyal ditandai sebagai “kebisingan getaran”. Ini seperti menambahkan “fungsi anti-gangguan” ke dalam strategi untuk menghindari sering membuka posisi di pasar horizontal.
Stop loss logik menggunakan titik-titik kunci pra-fase: stop loss multihead diposisikan pada titik rendah pra-fase, dan stop loss kosong diposisikan pada titik tinggi pra-fase. Keuntungan dari metode ini adalah memiliki dasar teknis yang jelas, dan tidak akan dihapus oleh “penembusan palsu” karena pengaturan acak.
Mekanisme RSI yang keluar juga cerdas: posisi multi-head akan ditutup ketika RSI kembali dari 70 ke atas, dan posisi kosong akan ditutup ketika RSI kembali dari 30 ke bawah. Ini dapat mengunci keuntungan dan menghindari risiko terus memegang posisi di zona overbought dan oversold ekstrem.
Skenario yang paling cocok: Melacak tren dan membalikkan perdagangan dalam jangka pendek dan menengah, terutama dalam lingkungan pasar yang tidak terlalu volatil. Strategi ini secara otomatis menyesuaikan ukuran posisi: sinyal pembalikan diuji dengan posisi 50%, sinyal lanjutan diikuti dengan posisi 100%.
Panduan Menghindari PitMeskipun ada mekanisme penyaringan lingkaran, sinyal akan menjadi langka jika pasar berada di posisi horizontal dalam waktu yang lama. Selain itu, strategi ini lebih bergantung pada analisis teknis, dan berita fundamental yang signifikan dapat membuat bentuk geometris “tidak berfungsi”.
Ingat, strategi terbaik bukanlah yang paling rumit, tetapi yang paling sesuai dengan gaya trading Anda!
/*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}}")