이동 평균 채널 브레이크 트레이딩 전략

저자:차오장, 날짜: 2024-01-29 14:31:25
태그:

img

전반적인 설명

이 전략은 간단한 이동 평균의 황금 십자 및 죽음의 십자 원리에 기반하고 있으며, 7 일 및 14 일 이동 평균의 교차를 기반으로 구매 및 판매 결정을 내립니다. 7 일 MA가 아래에서 14 일 MA보다 높을 때 구매 신호를 생성하고 7 일 MA가 위에서 14 일 MA보다 낮을 때 판매 신호를 생성합니다. 전략은 또한 수익을 잠금하고 위험을 제어하기 위해 스톱 로스, 수익을 취하고 후속 스톱 기능을 갖추고 있습니다.

전략 논리

이 전략의 핵심 거래 논리는 7 일 및 14 일 이동 평균의 교차 원칙에 기반합니다. 7 일 MA는 단기 가격 추세를 반영하고, 14 일 MA는 중장기 추세를 반영합니다. 단기 MA가 아래에서 중장기 MA보다 높을 때, 단기 MA가 강화되고 있음을 신호하며, 장기간에 걸을 수있는 좋은 시간입니다. 반대로, 단기 MA가 위에서 중장기 MA보다 낮을 때, 단기 MA가 약화되고 있음을 신호합니다. 따라서 포지션을 닫거나 단위로 가야합니다.

특히, 이 전략은 SMA 지표를 사용하여 7일 및 14일 간단한 이동 평균을 계산합니다. 각 촛불 모양이 형성된 후, 7일 라인과 14일 라인의 현재 값을 비교합니다. 7일 라인이 14일 라인의 위를 넘으면 긴 신호가 생성됩니다. 7일 라인이 14일 라인의 아래를 넘으면 짧은 신호가 생성됩니다.

또한, 전략은 또한 손해를 중지, 이익을 취하고, 수익을 잠금하고 위험을 제어하기 위해 후속 중지 기능을 설정합니다. 매개 변수는 백테스트 결과에 따라 최적화 될 수 있습니다.

장점

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

  1. 간단하고 명확한 규칙, 이해하기 쉽고 적용하기 쉽고 초보자도 배울 수 있습니다.
  2. 이동 평균 크로스오버 원칙은 비교적 높은 승률을 가지고 시간 검증되고 효과적입니다.
  3. 스톱 러스, 취리프로프트, 트레일링 스톱을 장착해서 위험을 효과적으로 제어합니다.
  4. 몇 가지 매개 변수, 테스트와 최적화를 위해 편리합니다.

위험 과 대책

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

  1. 이동 평균은 트렌드 변화를 반영하는 데 지연할 수 있으며, 트렌드가 역전될 때 큰 손실을 초래할 수 있습니다.
  2. 다양한 시장에서 빈번한 크로스오버 신호는 더 많은 잘못된 신호를 생성하여 전략의 효과를 약화시킵니다.

이러한 위험을 해결하기 위해 다음과 같은 대책이 고려될 수 있습니다.

  1. MACD와 KDJ와 같은 다른 지표를 추가하여 크로스오버 신호를 필터하고 트렌드 전환점에 잘못된 신호를 피합니다.
  2. 스톱 로스 범위를 확장하고, 홀드 로스 영향을 줄이기 위해 대기 기간을 단축합니다.
  3. 변화하는 시장 조건에 기초한 이동 평균 매개 변수를 최적화하여, 시장의 범위에서 더 긴 기간을 사용하십시오.

최적화 방향

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

  1. 최적의 설정을 찾기 위해 다른 MA 조합과 매개 변수를 테스트합니다.
  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)






더 많은