리소스 로딩... 로딩...

TRAMA 이중 이동 평균 크로스오버 지능형 양적 거래 전략

저자:차오장, 날짜: 2024-11-29 15:25:13
태그:SMATRAMA

img

전반적인 설명

이 전략은 트라마 (삼각형 이동 평균) 와 단순 이동 평균 (SMA) 을 기반으로 하는 지능형 양적 거래 전략이다. 이 전략은 거래 신호를 생성하기 위한 두 이동 평균 시스템을 결합하고 위험 통제를 위해 스톱 로스/테이크 노프프 메커니즘을 구현한다. 트라마 지표와 함께 4 기간 및 28 기간 SMA 크로스오버를 사용하여 거래 신호를 확인하여 여러 신호 확인을 통해 정확도를 향상시킨다.

전략 원칙

이 전략은 트레이딩 신호를 생성하기 위해 두 가지 핵심 구성 요소를 사용합니다. 첫째는 4 기간 및 28 기간 SMA를 기반으로 한 크로스오버 시스템으로, 단기 MA가 장기 MA를 넘어서면 긴 신호를 생성하고, 아래로 넘어가면 짧은 신호를 생성합니다. 둘째, 전략은 TRAMA 지표를 보조 확인 시스템으로 통합합니다. TRAMA는 더 빠른 응답 시간과 더 적은 지연으로 향상된 이동 평균입니다. 가격이 TRAMA를 통과 할 때 추가 거래 신호가 생성됩니다. 전략에는 또한 각각 2%와 1%로 설정된 비율 기반의 수익 취득 및 스톱 로스 메커니즘이 포함되어 있습니다.

전략적 장점

  1. 이중 신호 확인 메커니즘은 거래 신뢰성을 크게 향상시킵니다.
  2. TRAMA 지표는 시장 동향 변화의 더 빠른 포착을 가능하게 합니다.
  3. 스톱 로스 및 토익 레벨을 통한 명확한 리스크 제어 메커니즘
  4. 명확하고 유지하기 쉬운 전략 논리
  5. 긴 거래와 짧은 거래를 가능하게 하고 수익 기회를 증가시킵니다.

전략 위험

  1. 다양한 시장에서 과도한 거래 신호를 생성 할 수 있습니다.
  2. 고정된 스톱 로스 비율과 영업률은 모든 시장 조건에 적합하지 않을 수 있습니다.
  3. 단기 이동 평균은 가격 소음에 민감할 수 있습니다.
  4. 변동성 있는 시장에서의 잠재적인 미끄러짐 위험
  5. 전략 성과에 대한 거래 비용의 영향을 고려해야 합니다

전략 최적화 방향

  1. 변동성 적응 스톱 로스 및 수익 취득 메커니즘을 도입
  2. 다른 조건에서 전략 매개 변수를 조정하기 위해 시장 환경 필터를 추가합니다.
  3. TRAMA 매개 변수 선택 방법을 최적화, 적응 기간을 사용하는 것을 고려
  4. 신호 신뢰성을 향상시키기 위해 볼륨 확인 지표를 추가합니다.
  5. 약한 트렌드에 거래를 피하기 위해 트렌드 강도 필터를 추가하는 것을 고려하십시오.

요약

이 전략은 전통적인 기술 분석과 현대적인 양적 거래 개념을 결합한 전략이다. 다중 신호 확인과 엄격한 위험 통제를 통해 전략은 좋은 실용성을 보여줍니다. 최적화 할 수있는 영역이 있지만 전반적인 프레임워크 디자인은 좋은 응용 전망과 합리적입니다. 거래자는 실시간 거래 전에 철저한 역사 데이터 백테스팅과 매개 변수 최적화를 수행하는 것이 좋습니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
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/
// © ivanvallejoc

//@version=5
strategy("MANCOS2.0", overlay=true, margin_long=80, margin_short=80)

longCondition = ta.crossover(ta.sma(close, 4), ta.sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = ta.crossunder(ta.sma(close, 4), ta.sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

// Parámetros de la TRAMA
length = input(1.5, title="TRAMA Length")
src = close
filt = 2 / (length + 1)
trama = 0.0
var tramaPrev = na(trama[1]) ? close : trama[1]
trama := (src - tramaPrev) * filt + tramaPrev

// Plot de la TRAMA
plot(trama, color=color.blue, linewidth=2, title="TRAMA")

// Señales de compra y venta basadas en TRAMA
buySignal = ta.crossover(close, trama)
sellSignal = ta.crossunder(close, trama)

// Configuración de Take Profit y Stop Loss
takeProfitPerc = input(2, title="Take Profit (%)") / 100
stopLossPerc = input(1, title="Stop Loss (%)") / 100

// Precios de TP y SL
takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPerc)
stopLossPrice = strategy.position_avg_price * (1 - stopLossPerc)

// Condiciones de entrada en largo
if (buySignal)
    strategy.entry("Long", strategy.long)

// Condiciones de salida para posición larga (TP/SL)
if (strategy.position_size > 0)
    strategy.exit("TP/SL", "Long", limit=takeProfitPrice, stop=stopLossPrice)

// Entrada en corto basada en TRAMA
if (sellSignal)
    strategy.entry("Short", strategy.short)

// Precios de TP y SL para posiciones cortas
takeProfitPriceShort = strategy.position_avg_price * (1 - takeProfitPerc)
stopLossPriceShort = strategy.position_avg_price * (1 + stopLossPerc)

if (strategy.position_size < 0)
    strategy.exit("TP/SL", "Short", limit=takeProfitPriceShort, stop=stopLossPriceShort)


관련

더 많은