TRAMA 더블 이동 평균 교차 지능형 양적 거래 전략

SMA TRAMA
생성 날짜: 2024-11-29 15:25:13 마지막으로 수정됨: 2024-11-29 15:25:13
복사: 0 클릭수: 663
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

TRAMA 더블 이동 평균 교차 지능형 양적 거래 전략

개요

이것은 TRAMA ((Triangular Moving Average) 와 간단한 이동 평균 ((SMA) 을 기반으로 한 지능형 에너지 거래 전략이다. 이 전략은 두 가지 평행선 시스템을 결합하여 거래 신호를 생성하고 위험을 제어하기 위해 스톱 스톱 메커니즘을 설정한다. 이 전략은 4주기 및 28주기의 SMA 교차와 TRAMA 지수를 사용하여 거래 신호를 확인하고, 여러 신호를 확인하여 거래의 정확성을 향상시킨다.

전략 원칙

전략은 거래 신호를 생성하기 위해 두 가지 핵심 구성 요소를 사용합니다. 첫째는 4주기 및 28주기 SMA를 기반으로 한 교차 시스템입니다. 단기 평균이 장기 평균을 상향으로 통과하면 다중 신호가 발생하고, 하향으로 통과하면 공백 신호가 발생합니다. 두 번째로, 전략은 TRAMA 지표를 보조 확인 시스템으로 도입합니다.

전략적 이점

  1. 이중 신호 확인 메커니즘은 거래의 신뢰성을 크게 향상시킵니다.
  2. 트라마 지표는 시장 추세 변화를 더 빠르게 포착할 수 있습니다.
  3. 명확한 리스크 제어 장치가 있으며, 손해 차단으로 자금을 보호합니다.
  4. 전략 논리는 명확하고 이해하기 쉬우며 유지 관리하기 쉽습니다.
  5. 동시에 2방향으로 거래할 수 있고 수익을 올릴 수 있습니다.

전략적 위험

  1. 불안한 시장에서 과도한 거래 신호가 발생할 수 있습니다.
  2. 고정 스톱 스톱 손실 비율은 모든 시장 환경에 적합하지 않을 수 있습니다.
  3. 단기 평균선은 가격 소음에 민감할 수 있다.
  4. 시장의 급격한 변동에 따른 미끄러짐 위험
  5. 전략적 성과에 대한 거래 비용의 영향을 고려해야 합니다.

전략 최적화 방향

  1. 변동율에 적응하는 스피드 스톱 손실 메커니즘을 도입
  2. 시장 환경 필터를 추가하여 다른 시장 조건에 따라 전략 매개 변수를 조정합니다.
  3. 트라마 변수를 최적화하기 위한 선택 방법, 적응주기를 사용하는 것을 고려할 수 있다
  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)