Chiến lược dừng lỗ nhiều lần và chốt lời nhiều lần theo xu hướng sóng


Ngày tạo: 2023-12-01 18:09:12 sửa đổi lần cuối: 2023-12-01 18:09:12
sao chép: 0 Số nhấp chuột: 814
1
tập trung vào
1619
Người theo dõi

Chiến lược dừng lỗ nhiều lần và chốt lời nhiều lần theo xu hướng sóng

Tổng quan

Chiến lược này là chiến lược xu hướng sóng nguyên thủy của LazyBear, bổ sung một lệnh dừng thứ hai, nhiều giá dừng và bộ lọc EMA khung thời gian cao. Nó sử dụng các chỉ số xu hướng sóng để tạo tín hiệu giao dịch, sau đó kết hợp với bộ lọc EMA và quản lý dừng lỗ để thực hiện giao dịch theo dõi xu hướng tự động.

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

Chỉ số trung tâm của chiến lược là chỉ số xu hướng sóng (WaveTrend), bao gồm ba phần:

  1. AP: Giá trung bình = ((giá cao + giá thấp + giá đóng cửa) / 3

  2. ESA: AP n1 EMA

  3. CI: ((AP-ESA) / (EMA n1 của 0.015 x AP-ESA)

  4. TCI: EMA n2 của CI, tức là đường xu hướng sóng 1 ((WT1))

  5. WT2: SMA 4 chu kỳ của WT1

Khi WT1 đâm vào WT2 tạo ra nếp nhăn vàng, làm nhiều hơn; khi WT1 đâm vào WT2 tạo ra nếp nhăn chết, bằng phẳng.

Ngoài ra, chiến lược cũng giới thiệu khung thời gian cao EMA làm bộ lọc, chỉ làm nhiều khi giá cao hơn EMA và trống khi giá thấp hơn EMA, để lọc ra một số tín hiệu giả.

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

  1. Sử dụng chỉ số xu hướng sóng để tự động theo dõi xu hướng, tránh sai lầm của con người
  2. Tăng lỗ dừng thứ hai, kiểm soát hiệu quả lỗ đơn
  3. Nhiều giá dừng, tối đa hóa lợi nhuận
  4. Bộ lọc EMA, lọc tín hiệu giả, tăng tỷ lệ thắng

Chiến lược rủi ro và tối ưu hóa

  1. Không thể lọc được, có thể gây thiệt hại
  2. Thiết lập tham số không đúng có thể dẫn đến giao dịch quá thường xuyên
  3. Có thể thử nghiệm các tổ hợp tham số khác nhau, tối ưu hóa tham số
  4. Có thể xem xét sự thay đổi xu hướng kết hợp với các chỉ số khác

Tóm tắt

Chiến lược tổng hợp xem xét nhiều chiều như theo dõi xu hướng, kiểm soát rủi ro, tối đa hóa lợi nhuận, tự động nắm bắt xu hướng thông qua chỉ số xu hướng sóng, kết hợp với bộ lọc EMA để tăng hiệu quả giao dịch, kiểm soát rủi ro trong khi nắm bắt xu hướng, là một chiến lược theo dõi xu hướng hiệu quả và ổn định. Bằng cách tối ưu hóa tham số hơn nữa và tăng phán đoán đảo ngược, có thể mở rộng hơn nữa tính phù hợp của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © undacovacobra

//@version=4
strategy("WaveTrend Strategy [LazyBear] with Secondary Stop Loss", overlay=true)

// Input parameters
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
useEmaFilter = input(false, "Use EMA Filter")
emaLength = input(50, "EMA Length")
emaTimeFrame = input("60", "EMA Time Frame")
tradeMode = input("Both", "Trade Mode", options=["Long Only", "Short Only", "Both"])
useSecondarySL = input(false, "Use Secondary Stop Loss")
slPercentage = input(5.0, "Stop Loss Percentage (%)")

// WaveTrend Indicator Calculations
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
wt1 = tci
wt2 = sma(wt1, 4)

// EMA Calculation with Selected Time Frame
getEma(timeFrame) =>
    security(syminfo.tickerid, timeFrame, ema(close, emaLength))

emaFilter = getEma(emaTimeFrame)

// Secondary Stop Loss Calculation
longStopPrice = strategy.position_avg_price * (1 - slPercentage / 100)
shortStopPrice = strategy.position_avg_price * (1 + slPercentage / 100)

// Long Entry and Exit Conditions with EMA Filter and Trade Mode
longEntry = crossover(wt1, wt2) and wt2 < osLevel1 and (not useEmaFilter or close > emaFilter) and (tradeMode == "Long Only" or tradeMode == "Both")
if (longEntry)
    strategy.entry("Long", strategy.long)
longExit = crossunder(wt1, wt2) and wt2 > obLevel1
if (longExit)
    strategy.close("Long")
if (useSecondarySL and strategy.position_size > 0 and low < longStopPrice)
    strategy.close("Long", comment="SL Hit")

// Short Entry and Exit Conditions with EMA Filter and Trade Mode
shortEntry = crossunder(wt1, wt2) and wt2 > obLevel1 and (not useEmaFilter or close < emaFilter) and (tradeMode == "Short Only" or tradeMode == "Both")
if (shortEntry)
    strategy.entry("Short", strategy.short)
shortExit = crossover(wt1, wt2) and wt2 < osLevel1
if (shortExit)
    strategy.close("Short")
if (useSecondarySL and strategy.position_size < 0 and high > shortStopPrice)
    strategy.close("Short", comment="SL Hit")

// Plotting
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_cross)
plot(osLevel2, color=color.green, style=plot.style_cross)
plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_cross)
plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80)
plot(emaFilter, color=color.blue)