이중 트렌드 라인 브레이크오웃 골든 크로스 데스 크로스 트렌드 전략

저자:차오장, 날짜: 2024-02-22 16:01:12
태그:

img

전반적인 설명

이중 트렌드라인 브레이크오웃 골든 크로스 데스 크로스 트렌드 포워킹 전략은 트렌드 포워킹을 위한 대체 신호로 지원/저항 트렌드 라인 및 이동 평균을 모두 활용하는 양적 거래 전략이다. 이 전략은 중장기 트렌드를 추적하는 수익 목표를 위해 트렌드 지표에서 골든 크로스 및 데스 크로스 신호와 주요 지원 및 저항 수준을 통해 브레이크오웃 신호를 결합하여 다른 시간 프레임에서의 가격 수준을 고려하여 초기 트렌드 변화 중에 포지션을 오픈합니다.

전략 원칙

이 전략은 네 가지 주요 구성 요소로 구성됩니다.

  1. 지난 30일 동안 가장 낮은 수치를 나타내는 지지선
  2. 지난 30주 동안 가장 높은 수치를 나타낸 저항선
  3. 트레이드 신호를 필터링하는 경향을 확인하기 위해 사용되는 10주기 간단한 이동 평균
  4. 브레이크오웃 식별 모듈: 가격이 중요한 지지/저항 수준을 넘을 때 거래 기회를 탐지합니다.

구체적으로, 전략은 먼저 지난 30 일 및 30 주 동안 각각 가장 높은 최고와 가장 낮은 최저를 얻기 위해 보안 요청 기능을 사용하여 동적 지원 및 저항 라인을 그래프링합니다. 그 다음 10 주간의 SMA에서 황금 십자가 및 죽음의 십자가 신호를 결합하여 브레이크 기회를 필터링합니다. 가격이 30 일 지원 수준과 10 주간의 SMA를 넘을 때 긴 신호가 생성되며 가격이 30 주간의 저항 수준과 10 주간의 SMA를 넘을 때 짧은 신호가 생성됩니다.

이 전략은 중장기 및 장기간 지지/저항 수준을 모두 고려하여 더 큰 트렌드 기회를 포착 할 수 있습니다. 이동 평균 필터를 사용하면 변화하는 트렌드 중에 잘못된 신호를 효과적으로 피합니다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. 중장기 및 장기간 지원/ 저항을 활용하여 더 큰 브레이크를 포착합니다.
  2. MA 필터는 시장에서 잘못된 신호를 피함으로써 손실을 제어합니다.
  3. 지지/저항 레벨의 동적 업데이트는 새로운 트렌드 방향을 적시에 파악할 수 있습니다.
  4. 스톱 로스 및 영업 영업의 위험 관리 메커니즘은 수익을 확보하는 데 도움이 됩니다.

위험 분석

이 전략에는 몇 가지 위험 요소가 있습니다.

  1. 브레이크아웃 전략은 정확한 타이밍을 필요로 합니다.
  2. 지지/저항 수준이 떨어지면 무효 파격이 발생할 수 있어 엄청난 손실이 발생할 수 있습니다.
  3. 이동 평균의 지연 특성으로 인해 트렌드 반전에 대한 늦은 신호가 발생할 수 있습니다.
  4. 높은 마취 위험은 작은 계좌에 적합하지 않습니다.

해결책:

  1. 정교하게 정렬해 더 많은 필터를 추가해
  2. 더 큰 MA 기간을 사용하여 트렌드가 안정화 된 후에 신호가 발생하는지 확인합니다.
  3. 단일 트레이드에서 하락률을 제한하기 위해 적절한 스톱 로스 레벨을 설정합니다.

최적화 방향

추가 개선의 여지가 있습니다.

  1. ATR 같은 변동성 측정법을 적용해 더 똑똑한 스톱 로스를 만들고, 이윤을 늘려라.
  2. 기계 학습 모델을 추가하여 지원/ 저항 장애를 감지합니다.
  3. 변동률을 더 빨리 파악하기 위해 적응적인 이동평균을 사용하세요.
  4. 다른 제품들에 대한 세밀한 조정 매개 변수

결론

이중 트렌드 라인 브레이크오웃 골든 크로스 데스 크로스 트렌드 포워킹 전략은 주요 트렌드 중에 수익성있는 신호를 필터링하기 위해 중장기 지원 / 저항 및 이동 평균 지표를 효과적으로 결합하여 비교적 성숙한 양적 거래 전략으로 만들어집니다. 여전히 중지 손실 메커니즘, 적응 매개 변수 등을 통해 최적화 할 수있는 많은 공간이 있습니다. 기계 학습을 통합하면 안정성을 향상시킬 수 있습니다.


/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 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/
// © neosaid

//@version=5
strategy("Support and resistant Strategy", overlay=true)

// Function to check for breakout
f_breakoutCondition(closingPrice, highestHigh, lowestLow) =>
    closingPrice > highestHigh or closingPrice < lowestLow

// Step 1: 30 Days Trend Line (Lower Lows)
low30Days = request.security(syminfo.tickerid, "D", low)

// Step 2: 30 Weeks Upper Trend Line (Higher Highs)
high30Weeks = request.security(syminfo.tickerid, "W", high)

// Step 3: Trend Line for Lowest Low within the Last Month
var float lowestLowLastMonth = na
for i = 0 to 29
    lowestLowLastMonth := na(lowestLowLastMonth) ? low[i] : math.min(lowestLowLastMonth, low[i])

lowestLowLastMonthValue = lowestLowLastMonth[1]

// Breakout Strategy
highestHighLast3Candles = request.security(syminfo.tickerid, "D", ta.highest(close, 3))
lowestLowLast3Candles = request.security(syminfo.tickerid, "D", ta.lowest(close, 3))

// Additional conditions to filter signals
buyCondition = f_breakoutCondition(close, highestHighLast3Candles, lowestLowLast3Candles) and close > low30Days

sellCondition = f_breakoutCondition(close, highestHighLast3Candles, lowestLowLast3Candles) and close < high30Weeks

// Additional filters to reduce the number of orders
buyFilter = ta.crossover(close, ta.sma(close, 10)) // Buy only when price crosses above a 10-period SMA
sellFilter = ta.crossunder(close, ta.sma(close, 10)) // Sell only when price crosses below a 10-period SMA

buyCondition := buyCondition and buyFilter
sellCondition := sellCondition and sellFilter

// Plot Buy and Sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Strategy entries
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.entry("Sell", strategy.short, when = sellCondition)


더 많은