Tác giả:ChaoZhang, Ngày: 2024-01-25 15:56:41
Tags:

img

## Chiến lược Logic

  1. Sử dụng chỉ số DMI để đánh giá hướng xu hướng
    • DMI bao gồm ba đường: +DI chỉ xu hướng tăng, -DI chỉ xu hướng giảm, ADX đánh giá sức mạnh của xu hướng
    • Khi +DI>-DI, nó là xu hướng tăng, đi dài; khi -DI>+DI, nó là xu hướng giảm, đi ngắn
  2. Sử dụng chỉ số RSI để đánh giá quá mua và quá bán
    • RSI so sánh lợi nhuận và lỗ trung bình trong một khoảng thời gian để xác định mua quá mức hoặc bán quá mức
  3. Kết hợp DMI để xác định hướng xu hướng và RSI cho quá mua / quá bán có thể nắm bắt tốt hơn nhịp điệu của thị trường
    • Khi DMI cho thấy xu hướng tăng và RSI quá bán, thời gian tốt cho dài
    • Khi DMI cho thấy xu hướng giảm và RSI mua quá mức, thời điểm tốt cho ngắn
  4. Thiết lập stop loss di chuyển để khóa lợi nhuận

  1. Kết hợp xu hướng và mua quá mức / bán quá mức tránh giao dịch thường xuyên trên thị trường giới hạn phạm vi
  2. Các chỉ số phổ biến DMI và RSI với điều chỉnh tham số dễ dàng và xác minh thực tế kỹ lưỡng
  3. Trailing stop loss khóa lợi nhuận và tránh stop loss ở một mức độ nào đó
  4. Quy tắc rõ ràng và dễ dàng, dễ thực hiện

## Phân tích rủi ro Ngoài ra còn có một số rủi ro cần lưu ý:

  1. DMI và RSI có thể dễ dàng tạo ra tín hiệu sai, gây ra tổn thất không cần thiết
  2. Cài đặt stop loss trailing không chính xác có thể dừng lỗ quá sớm hoặc quá nhiều
  3. Không thể lọc hiệu quả các thị trường whipsaw, dễ bị mắc kẹt
  4. Xu hướng sau không thể thoát ra ngay lập tức khi xu hướng đảo ngược

##Hướng dẫn tối ưu hóa Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Thêm bộ lọc biến động để tránh thị trường hỗn loạn
  2. Kết hợp các mô hình nến để tránh phá vỡ sai
  3. Thiết lập stop loss thích hợp gần hỗ trợ / kháng cự chính để giới hạn tổn thất
  4. Tăng mô hình học máy để dự đoán xu hướng
  5. Tối ưu hóa năng động các thông số DMI và RSI


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © YingYangJPN

//@version=5
strategy("DMI and RSI Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// DMI indikatörünü tanımlayalım
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(14, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
trailing_stop_loss_factor = input.float(0.50, "Trailing Stop Loss Factor", step = 0.01)

// RSI indikatörünü tanımlayalım
rsiLength = input.int(14, minval=1, title="RSI Length")
rsiSource = input(close, title="RSI Source")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")
rsiValue = ta.rsi(rsiSource, rsiLength)

// Uzun pozisyon açma koşullarını tanımlayalım
longCondition1 = rsiValue < rsiOversold // RSI oversold seviyesinin altındaysa
longCondition2 = adx > 20 // ADX 20'den büyükse
longCondition3 = minus > plus

// Kısa pozisyon açma koşullarını tanımlayalım
shortCondition1 = rsiValue > rsiOverbought // RSI overbought seviyesinin üstündeyse
shortCondition2 = adx > 20 // ADX 20'den büyükse
shortCondition3 = plus > minus

// Uzun pozisyon açalım
if longCondition1 and longCondition2 and longCondition3
    strategy.entry("Long", strategy.long)
    

// Kısa pozisyon açalım
if shortCondition1 and shortCondition2 and shortCondition3
    strategy.entry("Short", strategy.short)
    
// Trailing Stop Loss
longTrailingStopLoss = strategy.position_avg_price * (1 - trailing_stop_loss_factor / 100)
shortTrailingStopLoss = strategy.position_avg_price * (1 + trailing_stop_loss_factor / 100)
if strategy.position_size > 0 
    strategy.exit("Exit Long", "Long", stop  = longTrailingStopLoss)
if strategy.position_size < 0 
    strategy.exit("Exit Short", "Short", stop = shortTrailingStopLoss)

// DMI ve RSI indikatörlerini grafiğe çizelim
plot(adx, color=#F50057, title="ADX")
plot(plus, color=#2962FF, title="+DI")
plot(minus, color=#FF6D00, title="-DI")
plot(rsiValue, color=#9C27B0, title="RSI")
hline(rsiOverbought, title="RSI Overbought Level", color=#E91E63, linestyle=hline.style_dashed)
hline(rsiOversold, title="RSI Oversold Level", color=#4CAF50, linestyle=hline.style_dashed)



Thêm nữa