SMA 이동평균 시스템을 기반으로 한 추세 추종 전략


생성 날짜: 2024-02-23 12:29:51 마지막으로 수정됨: 2024-02-23 12:29:51
복사: 0 클릭수: 613
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

SMA 이동평균 시스템을 기반으로 한 추세 추종 전략

개요

이 전략은 SMA 평균선 시스템 기반의 트렌드 추적 전략으로, 주요 아이디어는 다양한 변수 길이의 SMA 평균선을 사용하여 거래 신호를 구축하고, 돌파구에서 입장을 취하며, 손해 제도의 위험을 제어하는 것입니다.

전략 원칙

이 전략은 SMA1과 SMA2이라는 두 개의 SMA 평균선을 사용한다. SMA1의 길이는 1이고, SMA2의 길이는 3이다. 이 전략은 SMA1의 길이가 1이고, SMA2의 길이가 3이다.

구체적으로, 전략은 ta.crossover와 ta.crossunder 함수를 통해 SMA 평균선의 돌파 관계를 판단하여 longCondition와 shortCondition 불 변수를 생성한다. longCondition가 사실인 경우, 구매 신호를 생성한다. shortCondition가 사실인 경우, 판매 신호를 생성한다. 전략은 신호 지점에서 입찰을 하고, 동시에 profitAccumulated와 lastTradeProfit 변수를 업데이트하여 누적 수익을 추적한다.

위험 통제를 위해, 전략은 또한 고정된 점수를 기반으로한 손실 메커니즘을 설정한다. 입시 지점에서 시작하여, 가격이 설정된 손실 지점에 도달하면, 손실 지표의 평형을 촉발한다.

전략적 이점

이 전략의 가장 큰 장점은 SMA 평균선의 트렌드 추적 기능을 활용하여 가격 경향의 변화를 효과적으로 포착하는 데 있습니다. 단일 평균선 전략에 비해, 쌍평선 전략은 평균선 사이의 교차 관계를 사용하여 트렌드 방향을 판단하여 거래 신호를 생성 할 수 있습니다. 또한, 전략은 손실을 막는 장치를 추가하여 단일 손실을 효과적으로 제어 할 수 있습니다.

위험 분석

이 전략의 주요 위험은 평균선 전략이 가짜 신호를 쉽게 생성한다는 것입니다. 가격이 흔들릴 때 SMA 평균선은 자주 교차하여 불필요한 거래 신호를 유발할 수 있습니다. 이 때, 중단 효과가 없다면 더 큰 손실이 발생할 수 있습니다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. SMA 변수를 조정하여 최적의 평균선 길이 조합을 찾습니다.

  2. 필터링 조건을 추가하여 평행선 교차점 근처에 가격 돌파 조건을 설정하여 거짓 신호를 피하십시오.

  3. 이동식 중지, 단축식 중지 등 다양한 유형의 중지 방법을 테스트 할 수 있습니다.

  4. 포지션 사이즈 컨트롤을 늘리고, 자금 사용 효율을 최적화한다.

요약하다

이 전략은 전반적으로 전형적인 트렌드 추적 전략이다. SMA 평균선의 돌파 관계를 사용하여 가격 트렌드 방향을 판단하고, 트렌드 변화 지점에서 입주를 한다. 동시에, 전략은 위험을 제어하기 위해 고정된 손실 기능을 갖추고 있다. 이 전략은 간단하고 실용적이며 이해하기 쉽지만, 여전히 실물에서 안정적으로 수익을 올리기 위해 심도 높은 테스트와 최적화가 필요합니다.

전략 소스 코드
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
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/
// © cesarpieres72

//@version=5
strategy("Estrategia SMA y Ganancias Acumuladas con Stop Loss", shorttitle="SMA_Ganancias", overlay=true)

// Definir las variables de las medias móviles
sma1_length = input(1, title="SMA 1 Longitud")
sma2_length = input(3, title="SMA 2 Longitud")

// Calcular las medias móviles
sma1 = ta.sma(close, sma1_length)
sma2 = ta.sma(close, sma2_length)

// Condiciones para las señales de compra y venta
longCondition = ta.crossover(sma1, sma2)
shortCondition = ta.crossunder(sma1, sma2)

// Acumular las ganancias
var float profitAccumulated = 0.0
var float lastTradeProfit = na

if (longCondition)
    strategy.entry("Buy", strategy.long)
    lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
    profitAccumulated := strategy.netprofit

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
    profitAccumulated := strategy.netprofit

// Mostrar las señales en el gráfico
plot(sma1, color=color.blue, title="SMA 1")
plot(sma2, color=color.red, title="SMA 2")

// Añadir stop loss
stopLossPips = input(5000, title="Stop Loss (en pips)")
stopLossPrice = strategy.position_avg_price * (1 - stopLossPips * syminfo.mintick)
strategy.exit("SL", "Buy", stop=stopLossPrice)