Chiến lược lưới vị trí biến đổi theo xu hướng

EMA RSI MACD ATR ADX
Ngày tạo: 2024-03-29 15:23:23 sửa đổi lần cuối: 2024-03-29 15:23:23
sao chép: 0 Số nhấp chuột: 1147
1
tập trung vào
1617
Người theo dõi

Chiến lược lưới vị trí biến đổi theo xu hướng

Tổng quan

Chiến lược này là một chiến lược theo xu hướng theo lưới vị trí biến đổi, chủ yếu sử dụng EMA, RSI và hình thức nuốt để đánh giá hướng xu hướng và thời gian nhập. Chiến lược điều chỉnh vị trí dừng và dừng tùy thuộc vào kích thước thực thể của hình thức nuốt, đồng thời cho phép người dùng chọn chỉ làm nhiều, chỉ làm trống hoặc làm trống nhiều. Ngoài ra, chiến lược này cũng cung cấp MACD như một điều kiện lọc xu hướng.

Nguyên tắc chiến lược

Chiến lược này sử dụng đường EMA 200 chu kỳ để xác định hướng của xu hướng lớn, khi giá trên EMA được coi là xu hướng tăng và dưới EMA được coi là xu hướng giảm. RSI 9 chu kỳ được sử dụng để xác định động lực, RSI lớn hơn 50 được coi là động lực đa đầu mạnh mẽ và nhỏ hơn 50 được coi là động lực vô đầu mạnh mẽ.

Vị trí dừng và dừng của chiến lược được xác định dựa trên kích thước của thực thể hình thức nuốt. Vị trí dừng là hai lần so với thực thể nuốt, đồng thời thiết lập mức dừng tối thiểu là 0,3% giá nhập, để tránh quá nhỏ ngăn chặn dẫn đến dừng thường xuyên. Vị trí dừng là mức dừng nhân với tỷ lệ lỗ hổng được thiết lập trước để đảm bảo tỷ lệ lỗ hổng được cố định. Ngoài ra, chiến lược cung cấp MACD như một tùy chọn để lọc các điều kiện xu hướng, khi đường chính MACD trên đường tín hiệu cho rằng xu hướng đa đầu mạnh, ngược lại cho rằng xu hướng không đầu mạnh hơn.

Lợi thế chiến lược

  1. Theo dõi xu hướng: Chiến lược sử dụng nhiều chỉ số để đánh giá xu hướng, giúp can thiệp vào xu hướng sớm và nắm bắt xu hướng.

  2. Động thái dừng lỗ: Điều chỉnh vị trí dừng lỗ theo kích thước của thực thể hình dạng ngâm, mở rộng không gian dừng lỗ khi xu hướng mạnh, thu nhỏ phạm vi dừng lỗ khi xu hướng yếu, kiểm soát vị trí linh hoạt.

  3. Người dùng có thể tùy chỉnh các tham số như hướng giao dịch, sở thích rủi ro, để phù hợp với nhu cầu của người dùng khác nhau.

  4. Cung cấp MACD như một tùy chọn để lọc xu hướng, xác nhận thêm cường độ của xu hướng và tăng tỷ lệ thắng.

Rủi ro chiến lược

  1. Sự sai lầm trong đánh giá xu hướng: Mặc dù chiến lược sử dụng kết hợp các chỉ số đánh giá, trong một số trường hợp, có thể xảy ra sự sai lầm trong đánh giá xu hướng, dẫn đến tổn thất.

  2. Tích thước thu hẹp: Nếu các thực thể hình dạng nhỏ bị nuốt chửng, khoảng cách dừng và dừng sẽ rất gần, dẫn đến tỷ lệ lợi nhuận thua lỗ xấu đi, điều này thường xảy ra trong các trường hợp chấn động.

  3. Tối ưu hóa tham số: Đối với các tiêu chuẩn khác nhau, các tham số tối ưu có thể khác nhau rất nhiều trong các chu kỳ khác nhau, đòi hỏi người dùng phải liên tục khởi động và tối ưu hóa.

Hướng tối ưu hóa chiến lược

  1. Xác định xu hướng: Bạn có thể thử giới thiệu nhiều công cụ xác nhận xu hướng như Brinband, chỉ số hướng trung bình (ADX) để cải thiện độ chính xác của xu hướng.

  2. Tối ưu hóa Stop Loss: Xem xét việc giới thiệu các chỉ số liên quan đến tỷ lệ biến động như ATR, điều chỉnh động khoảng cách Stop Loss, giảm rủi ro do quá nhỏ.

  3. Quản lý vị trí: Điều chỉnh kích thước vị trí theo xu hướng mạnh hoặc yếu, lợi nhuận tài khoản và các yếu tố khác, tăng vị trí khi có xu hướng mạnh và lợi nhuận ổn định, giảm chi phí giao dịch thường xuyên.

  4. Hợp tác đa chu kỳ, đa giống: Chứng minh tín hiệu xu hướng xuyên chu kỳ, xuyên giống, nâng cao tỷ lệ nắm bắt xu hướng, đồng thời phân tán rủi ro đơn hoặc chu kỳ.

Tóm tắt

Chiến lược này hoạt động tốt trong tình huống xu hướng, thông qua nhiều chỉ số để đánh giá chung hướng và cường độ của xu hướng, điều chỉnh động điểm dừng lỗ và vị trí, có thể nắm bắt xu hướng tốt hơn, thu được lợi nhuận vượt mức. Tuy nhiên, trong tình huống xu hướng không rõ ràng hoặc dao động thường xuyên, chiến lược này hoạt động chung. Do đó, khi sử dụng chiến lược này, cần chú ý đến việc lọc các loại xu hướng và điều chỉnh các tham số khi tình huống thay đổi. Ngoài ra, có không gian để tối ưu hóa hơn nữa về phán đoán xu hướng, điểm dừng lỗ, quản lý vị trí, đồng bộ nhiều loại đa chu kỳ.

Mã nguồn chiến lược
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
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/
// © niosupetranmartinez
//@version=5
strategy("Trend Follower Scalping Strategy", overlay=true, process_orders_on_close = true)

// Inputs
emaLen = input(200, 'EMA Length')
rsiLen = input(9, 'RSI Length')
trendDirection = input.string("Both", 'Trend Direction', options=["Long Only", "Short Only", "Both"])
risk_reward_ratio = input(2, 'Risk Reward Ratio')
useMacdFilter = input.bool(true, "Use MACD Filter")
macdTimeframe = input("5", "MACD Timeframe")

// EMA and RSI
ema200 = ta.ema(close, emaLen)
customRsi = ta.rsi(close, rsiLen)

// MACD Filter
[macdLine, signalLine, _] = request.security(syminfo.tickerid, macdTimeframe, ta.macd(close, 12, 26, 9))


// Majority Body Candle Identification Function
isMajorityBodyCandle(candleOpen, candleClose, high, low) =>
    bodySize = math.abs(candleClose - candleOpen)
    fullSize = high - low
    bodySize / fullSize > 0.6

// Engulfing Patterns
isBullishEngulfing = close > open and close[1] < open[1] and (close - open) > (open[1] - close[1]) and isMajorityBodyCandle(open, close, high, low)
isBearishEngulfing = close < open and close[1] > open[1] and (open - close) > (close[1] - open[1]) and isMajorityBodyCandle(open, close, high, low)

// Entry Conditions with MACD Filter
longCondition = close > ema200 and customRsi > 50 and isBullishEngulfing and (not useMacdFilter or macdLine > signalLine)
shortCondition = close < ema200 and customRsi < 50 and isBearishEngulfing and (not useMacdFilter or macdLine < signalLine)

// Trade Execution
var float stopLossPrice = na
var float entryPrice = na

// Long Entry
if (longCondition and (trendDirection == "Long Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(close - open)
    minimumStopLoss = entryPrice * 0.997
    calculatedStopLoss = entryPrice - (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss < minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = entryPrice - stopLossPrice
    takeProfitPrice = entryPrice + (risk_reward_ratio * risk)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice)

// Short Entry
if (shortCondition and (trendDirection == "Short Only" or trendDirection == "Both"))
    entryPrice := close
    engulfingBodySize = math.abs(open - close)
    minimumStopLoss = entryPrice * 1.003
    calculatedStopLoss = entryPrice + (engulfingBodySize * 2)
    stopLossPrice := calculatedStopLoss > minimumStopLoss ? calculatedStopLoss : minimumStopLoss
    risk = stopLossPrice - entryPrice
    takeProfitPrice = entryPrice - (risk_reward_ratio * risk)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice)

// Plotting
plot(ema200, color=color.blue, linewidth=2, title="EMA 200")