
이 전략은 복잡한 가격 움직임을 세 가지 귀여운 모양으로 단순화합니다. 다이아몬드는 반전 신호를 나타냅니다. 다이아몬드 삼각형은 추세를 계속하고, 오이클은 흔들림 필터를 나타냅니다. 그것은 마치 시장에 “기하학 안경”을 착용하는 것과 같습니다.
이 전략의 핵심 논리는 매우 간단합니다. EMA가 클라우드 반지를 형성하고 큰 트렌드를 판단한 다음, 가격의 클라우드 반지와의 위치에 따라 다른 고저점 돌파구에 다른 “표”를 붙여줍니다. 클라우드 반지의 아래쪽의 돌파구는 다이아몬드 반전 신호이며, 클라우드 반지의 위쪽의 돌파구는 삼각형 연장 신호입니다.
다이아몬드 신호대: 반전 기회를 잡기 위해! 가격이 EMA 클라우드 영역 아래에서 더 높은 낮은 지점을 나타낼 때, 또는 클라우드 영역 위에서 더 낮은 높은 지점을 나타낼 때 촉발됩니다. 이것은 계곡 바닥에서 보석을 발견하거나 산꼭대기에서 경고등을 보는 것과 같습니다.
삼각형 신호 트렌드가 계속되는 데 도움이 됩니다. 가격이 클라우드 상단에서 더 높은 하락점이 나타나거나 클라우드 상단에서 더 낮은 하락점이 나타나면 활성화됩니다. 서핑을 상상하면 물결을 따라 계속 진행하면 성공률이 더 높습니다.
원 필터: 이 디자인은 너무 예쁘다! EMA 분리가 설정된 임계값보다 작을 때, 모든 신호는 “진동소음”으로 표시된다. 이것은 전략에 “파기 방지 기능”을 장착하는 것과 같습니다.
상쇄 논리는 전단 핵심 지점을 취한다: 다중 헤드 상쇄는 전단 낮은 지점, 빈 헤드 상쇄는 전단 높은 지점으로 설정한다. 이 방법의 장점은 명확한 기술 근거가 있으며, 임의의 설정으로 “유령 돌파”로 닦이지 않는다.
RSI 출전 메커니즘도 똑똑합니다. RSI가 70 이상으로 떨어지면 다수 포지션이 평소되고, RSI가 30 이하로 부진하면 공백 포지션이 평소됩니다. 이것은 수익을 잠금하고 극심한 오버 바이 오버 판매 지역에서 포지션을 계속 유지하는 위험을 피할 수 있습니다.
가장 적합한 장면중·단기간의 트렌드 추적 및 반전 거래, 특히 변동성이 적당한 시장 환경에서 우수합니다. 전략은 자동으로 포지션 크기를 조정합니다. 반전 신호는 50%의 포지션 테스트, 지속 신호는 100%의 포지션 추적합니다.
구덩이 피하기 위한 지침극도로 변동하는 시장에서 맹목적으로 사용하지 마십시오. 원형 필터링 메커니즘이 있지만, 시장이 오랫동안 수평으로 움직이면 신호가 희박해질 것입니다. 또한, 이 전략은 기술 분석에 더 의존하며, 중요한 기본 정보는 기하학적 모양을 “부효화”할 수 있습니다.
기억하세요, 최고의 전략은 가장 복잡한 것이 아니라 당신의 거래 스타일에 가장 적합한 것입니다!
/*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}}")