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

동적 취득 및 중지 손실 두 번째 이동 평균 크로스오버 거래 전략

저자:차오장, 날짜: 2024-06-21 14:02:56
태그:SMATPSL

img

전반적인 설명

이 전략은 단순한 이동 평균 (SMA) 크로스오버를 기반으로 한 자동화 거래 시스템으로, 동적 인 수익 및 스톱 로스 메커니즘과 결합됩니다. 이 전략은 크로스오버를 통해 구매 및 판매 신호를 생성하기 위해 서로 다른 기간의 두 개의 SMA를 사용합니다. 또한 전략은 위험을 제어하고 수익을 잠금하기 위해 퍼센트 기반의 수익 및 스톱 로스 수준을 설정합니다.

전략 원칙

  1. 두 개의 SMA를 사용합니다. 단기 (50주기) 와 장기 (100주기).
  2. 단기 SMA가 장기 SMA를 넘을 때 구매 신호를 생성합니다. 단기 SMA가 장기 SMA를 넘을 때 판매 신호를 생성합니다.
  3. 현재 가격과 각 거래 입시에 대해 미리 설정된 비율을 기반으로 수익 및 스톱-러스 수준을 계산합니다.
  4. 자동으로 포지션을 닫습니다. 가격이 수익을 취하거나 손실을 멈추는 수준에 도달하면요.
  5. 마크는 차트에서 구매 및 판매 신호를 표시하고, 수익 및 스톱-러스 레벨 라인을 표시합니다.

전략적 장점

  1. 이해하기 쉽다: 이중 이동 평균 크로스오버는 이해하기 쉽고 구현하기 쉬운 고전적인 기술 분석 방법이다.
  2. 트렌드 추적: 중장기 트렌드를 파악할 수 있으며, 시장의 중요한 움직임에 이익을 얻을 수 있습니다.
  3. 리스크 관리: 이윤을 취하고 손실을 멈추는 수준을 동적으로 설정함으로써 각 거래에 대한 위험을 효과적으로 제어합니다.
  4. 자동화: 인간 개입과 감정적 영향을 줄이는 프로그램에서 완전히 실행됩니다.
  5. 시각화: 차트에서 거래 신호와 주요 가격 수준을 명확하게 표시하여 분석 및 백테스팅을 용이하게합니다.

전략 위험

  1. 유동시장에는 적합하지 않습니다. 유동시장에서 빈번한 잘못된 신호를 생성하여 연속적인 손실을 초래할 수 있습니다.
  2. 지연: SMA는 본질적으로 지연을 가지고 있으며 최적의 입구 지점을 놓치고 또는 출구를 지연시킬 수 있습니다.
  3. 일정한 비율의 위험: 일정한 비율의 이익 취득 및 스톱 손실을 사용하는 것은 모든 시장 조건에 적합하지 않을 수 있습니다.
  4. 추가 확인 지표의 부족: 이동 평균 크로스오버에만 의존하면 다른 중요한 시장 정보를 무시할 수 있습니다.
  5. 거래 비용을 무시합니다. 빈번한 거래는 상당한 거래 비용을 발생시켜 최종 수익에 영향을 줄 수 있습니다.

전략 최적화 방향

  1. 필터 도입: 잘못된 신호를 줄이기 위해 볼륨, 변동성 또는 다른 기술적 지표를 필터 조건으로 추가합니다.
  2. SMA 기간의 동적 조정: 다른 시장 환경에 적응하기 위해 시장 변동성에 따라 SMA 길이를 자동으로 조정합니다.
  3. 영업이익 및 스톱 로스 최적화: 시장 변동에 더 잘 적응하기 위해 동적 인 영업이익 및 스톱 로스 수준을 설정하기 위해 ATR (평균 진정한 범위) 를 사용하는 것을 고려하십시오.
  4. 트렌드 확인을 강화: 거래 신호의 신뢰성을 향상시키기 위해 MACD 또는 ADX와 같은 다른 트렌드 지표를 통합하십시오.
  5. 포지션 크기를 구현: 계정 크기와 시장 변동성에 따라 각 거래의 크기를 동적으로 조정합니다.
  6. 시간 필터링: 높은 변동성 또는 낮은 유동성 기간을 피하기 위해 거래 시간 창 제한을 추가합니다.
  7. 마감 통제: 연속 손실이 일정 수준에 도달하면 거래를 중단하기 위해 최대 마감 제한을 추가합니다.

결론

이 이중 이동 평균 크로스오버 거래 전략은 자동화 거래에 뛰어드는 초보자에게 적합한 간단하면서도 효과적인 프레임워크를 제공합니다. 자본을 보호하기 위해 동적으로 수익을 창출하고 손실을 멈추는 수준을 설정함으로써 트렌드 추적 및 위험 관리의 요소를 결합합니다. 그러나 실제 거래에서 더 나은 결과를 달성하려면 추가 최적화 및 정리가 필요합니다. 필터로 더 많은 기술적 지표를 추가하고, 수익을 창출하고 손실을 멈추는 수준을 설정하는 방법을 최적화하고, 더 정교한 위치 관리 전략을 도입하는 방법을 고려하십시오. 동시에, 다양한 시장 환경과 시간 프레임에 걸쳐 철저한 백테스팅 및 검증이 필수적입니다. 지속적인 개선 및 시장 변화에 적응함으로써이 전략은 신뢰할 수있는 거래 시스템으로 변할 잠재력을 가지고 있습니다.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-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/
// © Pubgentleman

//@version=5
//@version=5
strategy("TSLA 1-Hour SMA Crossover Strategy with Buy/Sell Signals", overlay=true)

// Parameters
shortSmaLength = input.int(50, title="Short SMA Length")
longSmaLength = input.int(100, title="Long SMA Length")
takeProfitPerc = input.float(5.0, title="Take Profit Percentage", step=0.1) // 5.0% take profit
stopLossPerc = input.float(3.0, title="Stop Loss Percentage", step=0.1) // 3.0% stop loss

// Calculate SMAs
shortSma = ta.sma(close, shortSmaLength)
longSma = ta.sma(close, longSmaLength)

// Plot SMAs
plot(shortSma, color=color.blue, title="Short SMA")
plot(longSma, color=color.red, title="Long SMA")

// Entry Conditions
longCondition = ta.crossover(shortSma, longSma)
shortCondition = ta.crossunder(shortSma, longSma)

// Trade Management
var float entryPrice = na
var float takeProfitLevel = na
var float stopLossLevel = na

if (longCondition)
    entryPrice := close
    takeProfitLevel := entryPrice * (1 + takeProfitPerc / 100)
    stopLossLevel := entryPrice * (1 - stopLossPerc / 100)
    strategy.entry("Long", strategy.long)
    label.new(x=bar_index, y=low, text="Buy", style=label.style_label_up, color=color.green, textcolor=color.white)

if (shortCondition)
    entryPrice := close
    takeProfitLevel := entryPrice * (1 - takeProfitPerc / 100)
    stopLossLevel := entryPrice * (1 + stopLossPerc / 100)
    strategy.entry("Short", strategy.short)
    label.new(x=bar_index, y=high, text="Sell", style=label.style_label_down, color=color.red, textcolor=color.white)

// Exit Conditions
if (strategy.position_size > 0)
    if (close >= takeProfitLevel or close <= stopLossLevel)
        strategy.close("Long")

if (strategy.position_size < 0)
    if (close <= takeProfitLevel or close >= stopLossLevel)
        strategy.close("Short")

// Plot Take Profit and Stop Loss Levels
plot(strategy.position_size > 0 ? takeProfitLevel : na, title="Take Profit Level", color=color.green, style=plot.style_stepline)
plot(strategy.position_size > 0 ? stopLossLevel : na, title="Stop Loss Level", color=color.red, style=plot.style_stepline)
plot(strategy.position_size < 0 ? takeProfitLevel : na, title="Take Profit Level (Short)", color=color.green, style=plot.style_stepline)
plot(strategy.position_size < 0 ? stopLossLevel : na, title="Stop Loss Level (Short)", color=color.red, style=plot.style_stepline)

관련

더 많은