Phương pháp giao dịch hình học: Mã thị trường hình thoi tam giác tròn

EMA RSI PATTERN
Ngày tạo: 2025-09-26 08:59:35 sửa đổi lần cuối: 2025-09-26 08:59:35
sao chép: 0 Số nhấp chuột: 180
2
tập trung vào
319
Người theo dõi

Phương pháp giao dịch hình học: Mã thị trường hình thoi tam giác tròn Phương pháp giao dịch hình học: Mã thị trường hình thoi tam giác tròn

Ồ, những gì ma thuật trong chiến lược này?

Bạn có biết không? Thị trường thực sự giống như một sân chơi đồ họa hình học khổng lồ! Chiến lược này đơn giản hóa sự biến động của giá thành ba hình dạng đáng yêu: kim cương đại diện cho tín hiệu đảo ngược, tam giác đại diện cho xu hướng tiếp tục, vòng tròn đại diện cho bộ lọc rung.

Lý luận cốt lõi của chiến lược này rất đơn giản: EMA hình thành một dải mây để đánh giá xu hướng lớn, sau đó dán “hộp nhãn” khác nhau cho các đột phá ở các điểm cao và thấp khác nhau tùy thuộc vào vị trí của giá so với dải mây. Những đột phá bên dưới dải mây là tín hiệu đảo ngược kim cương, những đột phá ở trên dải mây là tín hiệu tiếp tục tam giác, và những tín hiệu không đủ phân tách của EMA sẽ được lọc ra bởi vòng tròn được đánh dấu là “nhầm”

Báo chí Trung Quốc đã đưa ra một số thông tin về hệ thống tín hiệu.

Đồ kim cươngLấy cơ hội đảo ngược! Khởi động khi giá có điểm thấp cao hơn bên dưới EMA hoặc điểm cao thấp hơn bên trên EMA. Điều này giống như tìm thấy một viên đá quý ở đáy thung lũng hoặc nhìn thấy đèn cảnh báo trên đỉnh núi.

Đường tín hiệu tam giácGiá sẽ tăng lên cao hơn khi ở trên vùng mây hoặc tăng lên cao hơn khi ở dưới vùng mây. Hãy tưởng tượng rằng bạn đang lướt sóng và tiếp tục đi theo con sóng, tỷ lệ thành công sẽ cao hơn.

Bộ lọc tròn: Thiết kế này quá thân thiện! Khi EMA phân cách nhỏ hơn ngưỡng thiết lập, tất cả các tín hiệu được đánh dấu là “tiếng ồn rung”. Như là trang bị một “chức năng chống rung” cho chiến lược để tránh mở cửa hàng thường xuyên trong thị trường ngang.

Thiết kế điều khiển gió: đơn giản, thô bạo nhưng hiệu quả

Lập luận dừng lỗ sử dụng vị trí điểm quan trọng trước: dừng nhiều đầu được đặt ở điểm thấp trước, dừng đầu trống được đặt ở điểm cao trước. Lợi ích của phương pháp này là có cơ sở kỹ thuật rõ ràng, không bị xóa bởi “phát phá giả” do cài đặt ngẫu nhiên.

Cơ chế xuất phát RSI cũng rất thông minh: vị trí đầu nhiều sẽ bị đóng cửa khi RSI trở lại từ trên 70 và vị trí đầu trống sẽ bị đóng cửa khi RSI hồi phục từ dưới 30. Điều này giúp khóa lợi nhuận và tránh rủi ro tiếp tục giữ vị trí trong khu vực quá mua quá bán cực đoan.

Ứng dụng chiến đấu thực tế: Chiến lược này dành cho ai?

Nơi thích hợp nhất: Theo dõi xu hướng trong chu kỳ ngắn và trung bình và giao dịch đảo ngược, đặc biệt là hoạt động tốt trong môi trường thị trường không biến động. Chiến lược sẽ tự động điều chỉnh kích thước vị trí: tín hiệu đảo ngược với 50% vị trí thử nghiệm, tín hiệu tiếp tục với 100% vị trí theo dõi.

Hướng dẫn tránh hốMặc dù có cơ chế lọc vòng tròn, nhưng nếu thị trường nằm ngang trong thời gian dài, tín hiệu sẽ trở nên hiếm hoi. Ngoài ra, chiến lược này phụ thuộc nhiều hơn vào phân tích kỹ thuật, tin tức cơ bản quan trọng có thể làm cho hình dạng hình học “không hiệu quả”.

Hãy nhớ rằng, chiến lược tốt nhất không phải là những chiến lược phức tạp nhất, mà là những chiến lược phù hợp nhất với phong cách giao dịch của bạn!

Mã nguồn chiến lược
/*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}}")