이동 평균 트렌드 거래 전략

저자:차오장, 날짜: 2023-10-09 16:00:02
태그:

전반적인 설명

이 전략은 이동 평균에 기반한 트렌드 트레이딩 전략이다. 트레이딩 신호를 생성하기 위해 서로 다른 매개 변수를 가진 3 개의 이동 평균을 사용합니다. 가격이 이동 평균 이상으로 넘어가면 길고 가격이 아래로 넘어가면 짧습니다. 이 전략은 세 단계의 이동 평균 라인을 가지고 있으며, 트렌드를 따라갈 수 있습니다.

전략 논리

이 전략은 SMA 함수를 사용하여 길이 len과 이동 평균 선 ma를 계산합니다. 그 다음 ma를 기반으로 각각 -4%, -5%, -6%로 이동된 3 개의 추가 이동 평균 선 longline1, longline2, longline3을 계산합니다.

긴 신호 생성에서, 현재 지위가 평평한 경우, 가격이 롱 라인을 넘을 때 1 로트로 긴 지위를 가집니다. 이미 1 로트가 길다면, 가격이 롱 라인을 넘을 때 1 로트를 더 추가합니다. 이미 2 로트가 길다면, 가격이 롱 라인을 넘을 때 1 로트를 더 추가합니다. 최대 긴 지점은 3 로트입니다.

짧은 신호를 생성하는 경우, 이미 긴 경우, 가격이 ma 아래로 넘어가면 모든 긴 포지션을 종료합니다.

단계적으로 입력하면 전략이 트렌드를 따라갈 수 있습니다.

장점

  • 트렌드 방향을 결정하기 위해 이동 평균을 사용하면 시장 소음을 필터하고 안정적인 이익을 허용합니다.
  • 단계화 된 긴 / 짧은 항목은 추세에서 더 많은 이익을 얻을 수 있습니다.
  • 진입점으로 이동 평균을 사용하는 것은 추세를 더 잘 파악합니다.
  • 상대적으로 적은 사용량, 최대 사용량 20% 정도

위험성

  • 순수한 트렌드 다음 전략은 범위 제한 시장에서 윙사워 될 경향이 있습니다.
  • 이동 평균에서 뒤떨어진 신호는 트렌드 전환점을 놓칠 수 있습니다.
  • 단계적 인 긴 엔트리는 높은 가격을 추구하고 위험을 증가시킬 수 있습니다.
  • 스톱 로스 메커니즘은 갑작스러운 사건으로 인해 큰 손실을 초래할 수 없습니다.

위험 해결 방법:

  • 트렌드 전환점을 결정하기 위해 다른 지표를 추가합니다.
  • 이동 평균 매개 변수를 합리적으로 설정하고, 너무 늦은 신호를 피하기 위해 너무 길지 않습니다.
  • 높은 가격을 쫓지 않기 위해 단계적 인 긴 출입 팩을 줄이십시오.
  • 손실을 제한하기 위해 이동 중지 손실을 추가

최적화 방향

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

  1. 트렌드 강도를 결정하기 위해 MACD와 같은 다른 지표를 추가하십시오.

  2. 가장 좋은 조합을 찾기 위해 이동 평균 매개 변수를 최적화

  3. 높은 가격을 쫓는 것을 방지하기 위해 단계적 인 입출량 크기와 비율을 조정하십시오.

  4. ATR에 기반한 이동 스톱 손실 메커니즘을 추가

  5. 시장 변동성에 따라 포지션 크기를 동적으로 조정하고 변동성이 높을 때 크기를 줄이십시오.

  6. 최적의 기호를 찾기 위해 다른 제품에서의 테스트 매개 변수

  7. 특정 패턴에서 수익을 고려하기 위해 출구 모듈을 개발

요약

전체적으로, 전략 거래는 이동 평균에 의해 결정되는 트렌드 방향, 그리고 단계적 엔트리를 통해 트렌드에서 수익을 기반으로 합니다. 그러나 그것은 높은 가격을 쫓는 몇 가지 후퇴 문제와 위험을 가지고 있습니다. 우리는 보조 지표, 최적화 매개 변수, 조정 위치 사이즈, 추가 중지 손실 등을 추가하여 최적화 할 수 있습니다. 다른 시장 조건에 적응하고 안정적인 이익을 달성하기 위해.


/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Lenghs")
src = input(ohlc4, title = "MA Source")
longlevel1 = input(-4.0, title = "Long line 1")
longlevel2 = input(-5.0, title = "Long line 2")
longlevel3 = input(-6.0, title = "Long line 3")
needoffset = input(true, title = "Offset")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick

//MA
ma = sma(src, len)
longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult
longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult
longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult

//Lines
offset = needoffset ? 1 : 0
plot(ma, color = color.blue)
plot(longline1, offset = offset, color = color.lime)
plot(longline2, offset = offset, color = color.lime)
plot(longline3, offset = offset, color = color.lime)

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2))
if size > 0
    strategy.entry("TP", strategy.short, 0, limit = ma)
    

더 많은