동적 손절매 이익 및 손절매 손실을 활용한 이중 이동 평균 교차 거래 전략

SMA TP SL
생성 날짜: 2024-06-21 14:02:56 마지막으로 수정됨: 2024-06-21 14:02:56
복사: 3 클릭수: 584
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

동적 손절매 이익 및 손절매 손실을 활용한 이중 이동 평균 교차 거래 전략

개요

이 전략은 간단한 이동 평균 ((SMA) 의 교차를 기반으로 한 자동 거래 시스템이며, 동적 정지 및 중단 메커니즘을 결합합니다. 그것은 두 개의 다른 주기적 SMA를 사용하여 구매 및 판매 신호를 생성합니다. 동시에, 전략은 위험을 제어하고 수익을 잠금하기 위해 퍼센트 기반의 정지 및 중단 수준을 설정합니다.

전략 원칙

  1. 두 개의 SMA를 사용한다: 단기 (<50주기) 과 장기 (<100주기) .
  2. 단기 SMA 상에서 장기 SMA를 밟을 때, 구매 신호를 생성한다. 단기 SMA 아래에서 장기 SMA를 밟을 때, 판매 신호를 생성한다.
  3. 매번 포지션을 개시할 때, 현재 가격과 미리 설정된 비율에 따라 스톱과 스톱로스 레벨을 계산한다.
  4. 가격이 스톱 스톱 또는 스톱 로즈 수준에 도달하면 자동으로 청산한다.
  5. 전략은 차트에 매매 신호를 표시하고, 정지선과 손실선 (stop line) 을 그려 놓습니다.

전략적 이점

  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)