이동 평균 채널 돌파 거래 전략


생성 날짜: 2024-01-29 14:31:25 마지막으로 수정됨: 2024-01-29 14:31:25
복사: 0 클릭수: 631
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동 평균 채널 돌파 거래 전략

개요

이 전략은 간단한 이동 평균의 황금 포크 도매 원칙에 기초하여 7일 평균선과 14일 평균선의 교차로 매매 결정을 내립니다. 7일 평균선이 하향에서 14일 평균선을 돌파할 때 구매 신호를 냅니다. 7일 평균선이 상향에서 14일 평균선을 돌파할 때 판매 신호를 냅니다. 이 전략은 수익을 잠금하고 위험을 제어하기 위해 중지, 중지 및 추적 중지 기능을 동시에 갖추고 있습니다.

전략 원칙

이 전략의 거래 핵심 논리는 7일 평균선과 14일 평균선의 교차 원칙에 기초한다. 7일 평균선 반응 가격의 단기 경향, 14일 평균선 반응 가격의 중기 경향. 단기 평균선이 하향에서 중기 평균선을 돌파할 때, 단기 평균선이 더 강해지는 것을 나타내고, 이는 다단위 포지션을 구축하는 좋은 시간이다. 반대로, 단기 평균선이 상향에서 하향으로 중기 평균선을 돌파할 때, 단기 경향이 약해지는 것을 나타내고, 매매를 청산하거나 공석 포지션을 구축해야 한다.

구체적으로, 이 전략은 SMA 지표를 통해 7일과 14일의 간단한 이동 평균을 계산한다. 각 K 라인이 형성된 후, 현재 7일 라인과 14일 라인의 크기의 관계를 비교한다. 7일 라인에서 14일 라인을 통과하면, 다중 신호를 발산하고, 장점에 진입한다. 7일 라인 아래 14일 라인을 통과하면, 공백 신호를 발산하고, 짧은 위치에 진입한다.

또한, 전략은 수익을 잠금하고 위험을 제어하기 위해 스톱로스, 스톱 스 및 추적 스톱을 설정합니다. 특정 매개 변수는 피드백 결과에 따라 최적화 될 수 있습니다.

전략적 이점

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 규칙은 간단하고 명확하며, 이해하기 쉽고, 초보자 학습에 적합합니다.
  2. 평선 교차 원칙이 효과적이고 승률이 높습니다.
  3. 스톱, 스, 그리고 추적 스톱이 있어 위험을 효과적으로 통제할 수 있습니다.
  4. 더 적은 매개 변수를 사용하여 테스트 및 최적화를 쉽게 할 수 있습니다.

위험과 대책

이 전략에는 몇 가지 위험도 있습니다.

  1. 동향이 전환될 때, 평행선 교차 신호는 지연되어 동향이 전환되는 데에 적시에 대응할 수 없으며, 큰 손실을 초래할 수 있다.
  2. 심각한 수평 시장에서 평행선 교차 신호가 자주 발생하여 더 많은 가짜 신호가 발생하여 전략 효과에 영향을 미칩니다.

위와 같은 위험들에 대응하기 위해 다음과 같은 대책을 고려할 수 있습니다.

  1. 다른 지표와 함께 MACD, KDJ 등과 같은 필터링 평평선 교차 신호를 사용하여 트렌드 전환점에서 잘못된 신호를 피하십시오.
  2. 단편적 손실의 영향을 줄이기 위해 단편적 손실을 늘리고 지분 기간을 단축합니다.
  3. 다양한 시장 상황에 따라 평균선 파라미터를 최적화하고, 가로수지 시장에서 평균선 주기를 적절히 늘리고, 교차 신호의 빈도를 줄인다.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 다양한 평행선 조합과 변수를 테스트하여 최적의 변수를 찾습니다.
  2. 다른 지표들을 추가하여 신호를 필터링하여 전략의 효과를 높여줍니다.
  3. 스톱, 스톱 패러미터를 최적화하고, 회수율을 낮추고, 수익률을 높여라.
  4. 다양한 품종과 거래시기에 따라 파라미터를 미세 조정한다.

요약하다

이 전략은 전반적으로 초보자 학습에 매우 적합하며, 원리는 간단하고 이해하기 쉽고 구현된다. 또한 시장 적응성이 뛰어나고, 매개 변수 조정 및 최적화로 큰 공간을 확보하여 안정적인 수익을 얻을 수 있다.

전략 소스 코드
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bensonsuntw

strategy("Strategy Template[Benson]", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

backtest_year = input(2019, type=input.integer, title='backtest_year')
backtest_month = input(01, type=input.integer, title='backtest_month', minval=1, maxval=12)
backtest_day = input(01, type=input.integer, title='backtest_day', minval=1, maxval=31)
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)
stop_loss_and_tp = input(title="Enable Stop Loss and Take Profit", type=input.bool, defval=true)
trail_stop = input(title="Enable Trail Stop", type=input.bool, defval=true)
buy_stop_loss = input(0.2, type=input.float, title='buy_stop_loss')
sell_stop_loss = input(0.1, type=input.float, title='sell_stop_loss')
buy_tp = input(0.4, type=input.float, title='buy_tp')
sell_tp =input(0.2, type=input.float, title='sell_tp')
trail_stop_long = input(1.1, type=input.float, title='trail_stop_long')
trail_stop_short = input(0.9, type=input.float, title='trail_stop_short')
trail_stop_long_offset = input(0.05, type=input.float, title='trail_stop_long_offset')
trail_stop_short_offset = input(0.05, type=input.float, title='trail_stop_short_offset')


// you can set your own logic here
shortCondition = crossunder(sma(close,7),sma(close,14))
longCondition = crossover(sma(close,7),sma(close,14))

strategy.entry("Buy", strategy.long, when=longCondition  )
strategy.close("Buy", when=shortCondition)
strategy.exit("Close Buy","Buy", limit= stop_loss_and_tp?strategy.position_avg_price * (1+buy_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1-buy_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_long:na,trail_offset=trail_stop?-strategy.position_avg_price *trail_stop_long_offset:na)

strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition)
strategy.exit("Close Sell","Sell", limit= stop_loss_and_tp?strategy.position_avg_price * (1-sell_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1+sell_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_short:na,trail_offset=trail_stop?strategy.position_avg_price *trail_stop_short_offset:na)


net_profit = strategy.netprofit + strategy.openprofit

plot(net_profit, title="Net Profit", linewidth=2, style=plot.style_area, transp=50, color=net_profit >= 0 ? #26A69A : color.red)