이 전략은 이동 평균에 기반한 트렌드 트레이딩 전략이다. 트레이딩 신호를 생성하기 위해 서로 다른 매개 변수를 가진 3 개의 이동 평균을 사용합니다. 가격이 이동 평균 이상으로 넘어가면 길고 가격이 아래로 넘어가면 짧습니다. 이 전략은 세 단계의 이동 평균 라인을 가지고 있으며, 트렌드를 따라갈 수 있습니다.
이 전략은 SMA 함수를 사용하여 길이 len과 이동 평균 선 ma를 계산합니다. 그 다음 ma를 기반으로 각각 -4%, -5%, -6%로 이동된 3 개의 추가 이동 평균 선 longline1, longline2, longline3을 계산합니다.
긴 신호 생성에서, 현재 지위가 평평한 경우, 가격이 롱 라인을 넘을 때 1 로트로 긴 지위를 가집니다. 이미 1 로트가 길다면, 가격이 롱 라인을 넘을 때 1 로트를 더 추가합니다. 이미 2 로트가 길다면, 가격이 롱 라인을 넘을 때 1 로트를 더 추가합니다. 최대 긴 지점은 3 로트입니다.
짧은 신호를 생성하는 경우, 이미 긴 경우, 가격이 ma 아래로 넘어가면 모든 긴 포지션을 종료합니다.
단계적으로 입력하면 전략이 트렌드를 따라갈 수 있습니다.
위험 해결 방법:
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
트렌드 강도를 결정하기 위해 MACD와 같은 다른 지표를 추가하십시오.
가장 좋은 조합을 찾기 위해 이동 평균 매개 변수를 최적화
높은 가격을 쫓는 것을 방지하기 위해 단계적 인 입출량 크기와 비율을 조정하십시오.
ATR에 기반한 이동 스톱 손실 메커니즘을 추가
시장 변동성에 따라 포지션 크기를 동적으로 조정하고 변동성이 높을 때 크기를 줄이십시오.
최적의 기호를 찾기 위해 다른 제품에서의 테스트 매개 변수
특정 패턴에서 수익을 고려하기 위해 출구 모듈을 개발
전체적으로, 전략 거래는 이동 평균에 의해 결정되는 트렌드 방향, 그리고 단계적 엔트리를 통해 트렌드에서 수익을 기반으로 합니다. 그러나 그것은 높은 가격을 쫓는 몇 가지 후퇴 문제와 위험을 가지고 있습니다. 우리는 보조 지표, 최적화 매개 변수, 조정 위치 사이즈, 추가 중지 손실 등을 추가하여 최적화 할 수 있습니다. 다른 시장 조건에 적응하고 안정적인 이익을 달성하기 위해.
/*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)