Chiến lược giao dịch định lượng Triple Strike dựa trên nhiều mô hình K-line

TLS ECS K-LINE MA PATTERN Trend momentum
Ngày tạo: 2025-02-21 11:00:33 sửa đổi lần cuối: 2025-02-27 17:12:20
sao chép: 1 Số nhấp chuột: 382
2
tập trung vào
319
Người theo dõi

Chiến lược giao dịch định lượng Triple Strike dựa trên nhiều mô hình K-line Chiến lược giao dịch định lượng Triple Strike dựa trên nhiều mô hình K-line

Tổng quan

Đây là một chiến lược giao dịch định lượng dựa trên hình thức Three Line Strike và Engulfing Pattern. Chiến lược này nắm bắt các điểm thay đổi xu hướng thị trường bằng cách xác định ba hình thức K-line liên tiếp, kết hợp với nhiều chỉ số kỹ thuật để đưa ra quyết định giao dịch. Chiến lược này thiết kế hệ thống nhận dạng tín hiệu và cơ chế kiểm soát rủi ro hoàn chỉnh và cung cấp các thiết lập tham số có thể tùy chỉnh cao.

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

Lập luận cốt lõi của chiến lược dựa trên hai hình dạng K-line chính:

  1. Hình thức tấn công ba: Xác định xu hướng đảo ngược bằng cách nhận ra ba đường K đồng chiều liên tiếp. Hình thức đi lên bao gồm ba đường K đỏ liên tiếp giảm và một đường K tiêu thụ xanh lớn hơn; Hình thức đi xuống bao gồm ba đường K xanh liên tiếp tăng và một đường K tiêu thụ đỏ lớn hơn.
  2. Hình thức nuốt: Một đường K nuốt lớn riêng lẻ cũng được sử dụng như một tín hiệu phụ. Chiến lược để xác định hình thức nuốt bằng cách tính toán đường K hiện tại so với kích thước thực thể của đường K trước đó.

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

  1. Nhận dạng tín hiệu chính xác: Chiến lược sử dụng phương pháp tính toán toán học nghiêm ngặt để đánh giá hình dạng đường K, đảm bảo chất lượng tín hiệu thông qua lọc đa điều kiện.
  2. Kiểm soát rủi ro: thiết lập các tham số rủi ro như vốn đầu tư, tỷ lệ nắm giữ và cấm nhập cảnh lặp lại.
  3. Độ cao có thể tùy chỉnh: cung cấp các thiết lập tham số phong phú, có thể được tối ưu hóa theo các đặc điểm thị trường và nhu cầu giao dịch khác nhau.
  4. Hỗ trợ hình ảnh: Cung cấp các thông tin đánh dấu và gợi ý đồ họa rõ ràng, dễ dàng phân tích và giám sát.

Rủi ro chiến lược

  1. Tùy thuộc vào môi trường thị trường: Có thể có quá nhiều tín hiệu giả trong thị trường biến động.
  2. Ảnh hưởng điểm trượt: Điểm vào của đường K lớn có thể bị ảnh hưởng bởi điểm trượt lớn hơn.
  3. Rủi ro bị trì hoãn: nhận dạng hình dạng cần nhiều dòng K để hoàn thành, có thể bỏ lỡ thời gian nhập cảnh tốt nhất.

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

  1. Tiếp theo là giới thiệu các chỉ số giao thông: kết hợp sự thay đổi giao thông để lọc chất lượng tín hiệu.
  2. Thiết lập dừng tối ưu: Đổi vị trí dừng dựa trên ATR hoặc tỷ lệ dao động.
  3. Thêm bộ lọc xu hướng: Thêm hệ thống thống định mức xu hướng tổng thể.
  4. Tăng cường cơ chế rút lui: Thiết kế các điều kiện lợi nhuận linh hoạt hơn.

Tóm tắt

Chiến lược này nắm bắt được các bước ngoặt quan trọng của thị trường thông qua phương pháp phân tích kỹ thuật có hệ thống, có nền tảng lý thuyết và giá trị thực tế mạnh mẽ. Bằng cách tối ưu hóa tham số và kiểm soát rủi ro, nó có thể là một phần quan trọng của một hệ thống giao dịch vững chắc. Thiết kế mô đun của chiến lược cũng cung cấp nền tảng tốt cho việc tối ưu hóa hơn nữa.

Overview

This is a quantitative trading strategy based on Three Line Strike and Engulfing patterns. The strategy captures market turning points by identifying breakthrough reversal candlesticks following three consecutive candles, combining multiple technical indicators for trading decisions. It features a complete signal detection system and risk control mechanism, with highly customizable parameter settings.

Strategy Principle

The core logic is based on two main candlestick patterns:

  1. Three Line Strike Pattern: Identifies trend reversals through three consecutive same-direction candles followed by a reversal candle. Bullish pattern consists of three consecutive red candles followed by a large green engulfing candle; bearish pattern consists of three consecutive green candles followed by a large red engulfing candle.
  2. Engulfing Pattern: Large single engulfing candles serve as auxiliary signals. The strategy identifies engulfing patterns by comparing the body size of current and previous candles.

Strategy Advantages

  1. Precise Signal Identification: Uses strict mathematical calculations to judge candlestick patterns, ensuring signal quality through multiple condition filtering.
  2. Comprehensive Risk Control: Includes risk parameters like initial capital and position sizing, with pyramiding prevention.
  3. Highly Customizable: Offers rich parameter settings for optimization according to different market characteristics and trading needs.
  4. Visual Support: Provides clear graphical markers and alert messages for analysis and monitoring.

Strategy Risks

  1. Market Environment Dependency: May generate excessive false signals in ranging markets.
  2. Slippage Impact: Entry points for large engulfing candles may be subject to significant slippage.
  3. Delay Risk: Pattern recognition requires multiple candles, potentially missing optimal entry points.

Optimization Directions

  1. Incorporate Volume Indicators: Filter signal quality by combining volume changes.
  2. Optimize Stop Loss Settings: Dynamically adjust stop loss positions based on ATR or volatility.
  3. Add Trend Filtering: Implement moving average systems to judge overall trend.
  4. Improve Exit Mechanism: Design more flexible profit-taking conditions.

Summary

The strategy captures important market turning points through systematic technical analysis, with strong theoretical foundation and practical value. Through parameter optimization and risk control refinement, it can serve as an important component of a robust trading system. The modular design also provides a good foundation for further optimization.

Mã nguồn chiến lược
/*backtest
start: 2024-03-09 18:40:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

// Copyright ...
// Based on the TMA Overlay by Arty, converted to a simple strategy example.
// Pine Script v5

//@version=5
strategy(title='3 Line Strike [TTF] - Strategy',
     shorttitle='3LS Strategy [TTF]',
     overlay=true,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     pyramiding=0)

// -----------------------------------------------------------------------------
//                               INPUTS
// -----------------------------------------------------------------------------

//
// ### 3 Line Strike
//
showBear3LS = input.bool(title='Show Bearish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bearish 3 Line Strike (3LS-Bear) = 3 green candles followed by a large red candle (engulfing).")
showBull3LS = input.bool(title='Show Bullish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bullish 3 Line Strike (3LS-Bull) = 3 red candles followed by a large green candle (engulfing).")
showMemeChars = input.bool(title="Plot 3 Line Strike meme symbols", defval=false, group="3 Line Strike")

//
//### Engulfing Candles
//
showBearEngulfing= input.bool(title='Show Bearish Big Candles', defval=false, group='Big Candles')
showBullEngulfing= input.bool(title='Show Bullish Big Candles', defval=false, group='Big Candles')

//
//### Alerts
//
void = input.bool(title="(Info) Alerts are based on detected signals.", defval=true)

// -----------------------------------------------------------------------------
//                          HELPER FUNCTIONS
// -----------------------------------------------------------------------------

// Function: Get the 'color' of the candle: -1 = red, 0 = doji, +1 = green
getCandleColorIndex(barIndex) =>
    int ret = na
    if (close[barIndex] > open[barIndex])
        ret := 1
    else if (close[barIndex] < open[barIndex])
        ret := -1
    else
        ret := 0
    ret

// Function: Check if the candle is engulfing (based on the body size of the candles)
isEngulfing(checkBearish) =>
    // Size of the previous candle
    sizePrevCandle = close[1] - open[1]
    // Size of the current candle
    sizeCurrentCandle = close - open
    isCurrentLargerThanPrevious = math.abs(sizeCurrentCandle) > math.abs(sizePrevCandle)
    
    // Bearish / Bullish division
    if checkBearish
        // Bearish engulfing: previous green, current larger red
        isGreenToRed = (getCandleColorIndex(0) < 0) and (getCandleColorIndex(1) > 0)
        isCurrentLargerThanPrevious and isGreenToRed
    else
        // Bullish engulfing: previous red, current larger green
        isRedToGreen = (getCandleColorIndex(0) > 0) and (getCandleColorIndex(1) < 0)
        isCurrentLargerThanPrevious and isRedToGreen

// Simplified calls for bullish/bearish engulfing
isBearishEngulfing() => isEngulfing(true)
isBullishEngulfing() => isEngulfing(false)

// Function: 3 consecutive candles of one color followed by the opposite engulfing candle
// 3 Line Strike - Bearish
is3LSBear() =>
    // Three consecutive green candles?
    is3LineSetup = (getCandleColorIndex(1) > 0) and (getCandleColorIndex(2) > 0) and (getCandleColorIndex(3) > 0)
    // Followed by Bearish engulfing
    is3LineSetup and isBearishEngulfing()

// 3 Line Strike - Bullish
is3LSBull() =>
    // Three consecutive red candles?
    is3LineSetup = (getCandleColorIndex(1) < 0) and (getCandleColorIndex(2) < 0) and (getCandleColorIndex(3) < 0)
    // Followed by Bullish engulfing
    is3LineSetup and isBullishEngulfing()

// -----------------------------------------------------------------------------
//                             SIGNALS
// -----------------------------------------------------------------------------

// ### 3 Line Strike
is3LSBearSig = is3LSBear()
is3LSBullSig = is3LSBull()

// Meme icons vs. standard shapes
plotchar(showBull3LS and showMemeChars ? is3LSBullSig : na, char="🍆", color=color.rgb(0, 255, 0, 0),
         location=location.belowbar, size=size.tiny, text='3LS-Bull', title='3 Line Strike Up (Meme Icon)', editable=false)
plotchar(showBear3LS and showMemeChars ? is3LSBearSig : na, char="🍑", color=color.rgb(255, 0, 0, 0),
         location=location.abovebar, size=size.tiny, text='3LS-Bear', title='3 Line Strike Down (Meme Icon)', editable=false)

plotshape(showBull3LS and not showMemeChars ? is3LSBullSig : na, style=shape.triangleup,
         color=color.green, location=location.belowbar, size=size.small, text='3LS-Bull', title='3 Line Strike Up')
plotshape(showBear3LS and not showMemeChars ? is3LSBearSig : na, style=shape.triangledown,
         color=color.red, location=location.abovebar, size=size.small, text='3LS-Bear', title='3 Line Strike Down')

// ### Engulfing Candles
isBullEngulfingSig = isBullishEngulfing()
isBearEngulfingSig = isBearishEngulfing()

plotshape(showBullEngulfing ? isBullEngulfingSig : na, style=shape.triangleup,
         location=location.belowbar, color=color.new(color.green,0), size=size.tiny, title='Big Candle Up')
plotshape(showBearEngulfing ? isBearEngulfingSig : na, style=shape.triangledown,
         location=location.abovebar, color=color.new(color.red,0), size=size.tiny, title='Big Candle Down')

// -----------------------------------------------------------------------------
//                               ALERTS
// -----------------------------------------------------------------------------

// 3LS - "Old" alertcondition + "New" alert() (based on what people use)
alertcondition(showBull3LS and is3LSBullSig, title='Bullish 3 Line Strike',
     message='{{exchange}}:{{ticker}} {{interval}} - Bullish 3 Line Strike')
alertcondition(showBear3LS and is3LSBearSig, title='Bearish 3 Line Strike',
     message='{{exchange}}:{{ticker}} {{interval}} - Bearish 3 Line Strike')

if (showBull3LS and is3LSBullSig)
    m = syminfo.tickerid + ' ' + timeframe.period + ' - Bullish 3 Line Strike'
    alert(message=str.tostring(m), freq=alert.freq_once_per_bar_close)

if (showBear3LS and is3LSBearSig)
    m = syminfo.tickerid + ' ' + timeframe.period + ' - Bearish 3 Line Strike'
    alert(message=str.tostring(m), freq=alert.freq_once_per_bar_close)

// Engulfing - "Old" alertcondition + "New" alert()
alertcondition(showBullEngulfing and isBullEngulfingSig, title='Bullish Engulfing',
     message='{{exchange}}:{{ticker}} {{interval}} - Bullish candle engulfing previous candle')
alertcondition(showBearEngulfing and isBearEngulfingSig, title='Bearish Engulfing',
     message='{{exchange}}:{{ticker}} {{interval}} - Bearish candle engulfing previous candle')

if (showBullEngulfing and isBullEngulfingSig)
    m = syminfo.tickerid + ' ' + timeframe.period + ' - Bullish candle engulfing previous candle'
    alert(message=str.tostring(m), freq=alert.freq_once_per_bar_close)

if (showBearEngulfing and isBearEngulfingSig)
    m = syminfo.tickerid + ' ' + timeframe.period + ' - Bearish candle engulfing previous candle'
    alert(message=str.tostring(m), freq=alert.freq_once_per_bar_close)

// -----------------------------------------------------------------------------
//                          STRATEGY ENTRY ORDERS
// -----------------------------------------------------------------------------
//
// Logic for entering trades. If display is enabled and a signal is detected, a trade will be entered.
//
// 3 Line Strike
if (showBull3LS and is3LSBullSig)
    strategy.entry("3LS_Bull", strategy.long, comment="3LS Bullish")

if (showBear3LS and is3LSBearSig)
    strategy.entry("3LS_Bear", strategy.short, comment="3LS Bearish")

// Engulfing
if (showBullEngulfing and isBullEngulfingSig)
    strategy.entry("BullEngulf", strategy.long, comment="Bullish Engulfing")

if (showBearEngulfing and isBearEngulfingSig)
    strategy.entry("BearEngulf", strategy.short, comment="Bearish Engulfing")

//
// End of script