Chiến lược Leledec DEC

Tác giả:ChaoZhang, Ngày: 31-10-2023 11:47:00
Tags:

img

Tổng quan

Chiến lược Leledec xác định sự đảo ngược xu hướng bằng cách phát hiện các mô hình cạn kiệt trong chỉ số Leledec. Nó sẽ dài khi cạn kiệt Leledec lớn xuất hiện và sẽ ngắn khi cạn kiệt Leledec nhỏ xuất hiện. Chiến lược này phù hợp với giao dịch trung và dài hạn.

Chiến lược logic

Chỉ số Leledec xác định các điểm giá cực địa phương. Nó làm như vậy bằng cách phân tích mối quan hệ giữa giá đóng và mở trên một số thanh.

Logic cốt lõi của chiến lược là:

  1. Tính toán chỉ số Leledec chính (maj) bằng cách sử dụng các tham số số thanh (maj_qual) và thời gian xem lại (maj_len).

  2. Khi Leledec lớn phá vỡ trên các thanh maj_qual liên tiếp, và mức cao của thanh vượt quá mức cao nhất trong các thanh maj_len trước đó, một sự kiệt sức lớn của Leledec được xác định tạo ra một tín hiệu dài.

  3. Tính toán chỉ số Leledec nhỏ (min) bằng cách sử dụng các tham số số thanh (min_qual) và thời gian xem lại (min_len).

  4. Khi Leledec nhỏ phá vỡ dưới các thanh min_qual liên tục, và mức thấp của thanh dưới mức thấp nhất trong các thanh min_len trước đó, một sự kiệt sức giảm nhẹ của Leledec được xác định tạo ra tín hiệu ngắn.

Theo logic của chỉ số Leledec, các mô hình cạn kiệt đại diện cho các điểm cực tiềm năng và đảo ngược xu hướng, do đó các tín hiệu giao dịch.

Phân tích lợi thế

  • Chiến lược có khả năng mạnh mẽ trong việc xác định xu hướng. Leledec có thể phát hiện hiệu quả các điểm cực địa phương.

  • Tính linh hoạt trong việc thích nghi với các khung thời gian và điều kiện thị trường khác nhau thông qua điều chỉnh tham số.

  • Có thể sử dụng chính Leledec một mình hoặc kết hợp nhỏ Leledec cho các tín hiệu toàn diện hơn.

  • Độ nhạy có thể tùy chỉnh thông qua số lượng thanh và tham số thời gian xem lại.

Phân tích rủi ro

  • Khả năng tín hiệu sai, cần xác nhận bằng cách sử dụng các chỉ số khác.

  • Tối ưu hóa tham số cần thiết cho các sản phẩm và khung thời gian khác nhau. Các tham số không chính xác có thể gây ra giao dịch quá mức hoặc bỏ lỡ giao dịch.

  • Chủ yếu dựa trên các mô hình nến, có thể bỏ lỡ cơ hội trong thời gian dao động giá ngắn hạn.

  • Cần phải theo dõi các thanh tín hiệu thực sự để tìm thấy sự đảo ngược xu hướng.

Tối ưu hóa

  • Tối ưu hóa sự kết hợp các tham số để thích nghi tốt hơn.

  • Kết hợp các chỉ số khác như khối lượng, trung bình động vv để lọc tín hiệu.

  • Thực hiện dừng lỗ để kiểm soát downside trên các giao dịch đơn.

  • Kết hợp các chỉ số ngắn hạn để nắm bắt cơ hội từ các dao động nhỏ.

  • Thử nghiệm trên các sản phẩm khác nhau để tìm môi trường tối ưu.

  • Tối ưu hóa các chiến lược quản lý tiền như kích thước vị trí, rủi ro cho mỗi giao dịch v.v.

Kết luận

Chiến lược Leledec bắt được sự đảo ngược xu hướng bằng cách xác định các mô hình cực trong chỉ số Leledec. Đây là một xu hướng hiệu quả theo phương pháp. Mặc dù có lợi trong việc đánh giá xu hướng, việc tối ưu hóa hơn nữa, xác nhận tín hiệu bổ sung và quản lý rủi ro thích hợp là cần thiết cho lợi nhuận dài hạn. Nhìn chung, chiến lược Leledec cung cấp một bổ sung có giá trị cho bộ công cụ của nhà giao dịch.


/*backtest
start: 2023-09-01 00:00:00
end: 2023-09-30 23:59:59
period: 2h
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/
// © Joy_Bangla

//@version=4
strategy("A Strategy for Leledec", shorttitle ="Leledec Strategy", overlay=true, commission_value=0.075, initial_capital=10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 10)

maj = input(true, "Major Leledec Exhausion Bar ::  Show")
min=input(false, "Minor Leledec Exhausion Bar ::  Show")
leledcSrc = input(close, "Major Leledec Exhausion Bar ::  Source")
maj_qual = input(6, "Major Leledec Exhausion Bar ::  Bar count no")
maj_len = input(30, "Major Leledec Exhausion Bar ::  Highest / Lowest")
min_qual=input(5, "Minor Leledec Exhausion Bar ::  Bar count no")
min_len=input(5, "Minor Leledec Exhausion Bar ::  Bar count no")
bindexSindex = input(1, "bindexSindex")
closeVal = input(4, "Close")

lele(qual, len) =>
    bindex = 0
    sindex = 0
    bindex := nz(bindex[bindexSindex], 0)
    sindex := nz(sindex[bindexSindex], 0)
    ret = 0
    if close > close[closeVal]
        bindex := bindex + 1
        bindex
    if close < close[closeVal]
        sindex := sindex + 1
        sindex
    if bindex > qual and close < open and high >= highest(high, len)
        bindex := 0
        ret := -1
        ret
    if sindex > qual and close > open and low <= lowest(low, len)
        sindex := 0
        ret := 1
        ret
    return = ret
    return

major = lele(maj_qual, maj_len)
minor=lele(min_qual,min_len)

plotchar(maj ? major == -1 ? high : na : na, char='•', location=location.absolute, color=color.red, transp=0, size=size.large)
plotchar(maj ? major == 1 ? low : na : na, char='•', location=location.absolute, color=color.lime, transp=0, size=size.large)

plotchar(min ? (minor==1?high:na) : na, char='x', location=location.absolute, color=color.red, transp=0, size=size.small)
plotchar(min ? (minor==-1?low:na) : na, char='x', location=location.absolute, color=color.lime, transp=0, size=size.small)

leledecMajorBullish = major==1?low:na
leledecMajorBearish = major==-1?high:na

leledecMinorBullish = minor==1?low:na
leledecMinorBearish = minor==-1?high:na



buySignalBasedOnMajorLeledecOnly = major==1?low:na
sellSignalBasedOnMajorLeldecOnly = minor==-1?high:na


// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2018, title = "From Year",       type = input.integer, minval = 2017, maxval = 2030)
thruMonth = input(defval = 12,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 11)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 30)
thruYear  = input(defval = 2030, title = "Thru Year",       type = input.integer, minval = 2017, maxval = 2030)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

if (window())
    strategy.entry("buy", strategy.long, when=buySignalBasedOnMajorLeledecOnly)
    strategy.entry("sell", strategy.short, when=sellSignalBasedOnMajorLeldecOnly)
 





Thêm nữa