이 거래 전략은 트렌드 추적을 위한 간단한 이동 평균 및 이동 평균 크로스오버 시스템을 기반으로 합니다. 그것은 긴 또는 짧은 이동 신호로 다른 기간과 함께 빠른 및 느린 이동 평균의 크로스오버를 사용합니다. 빠른 MA가 밑에서 느린 MA보다 높을 때, 길게 이동합니다. 빠른 MA가 위에서 느린 MA보다 낮을 때, 짧게 이동합니다. 이 전략은 명백한 트렌드가있는 제품에 잘 작동합니다.
이 전략은 60 일과 같은 빠른 간단한 이동 평균과 200 일과 같은 느린 평균을 사용합니다. 빠른 MA는 단기 트렌드를 반영하여 가격 변화에 더 빠르게 반응합니다. 느린 MA는 느리게 반응하고 중장기 트렌드를 보여줍니다.
짧은 MA가 아래로부터의 긴 MA를 넘을 때, 단기 가격이 상승하기 시작하여 황소 시장에 진입한다는 신호가 됩니다. 그래서 길게 가십시오. 짧은 MA가 위로부터의 긴 MA를 넘을 때, 단기 가격이 떨어지기 시작하여 곰 시장에 진입한다는 신호가 됩니다. 그래서 짧게 가십시오.
이 전략은 트렌드 방향을 결정하기 위해 MA 크로스오버를 사용합니다. 단기 가격이 더 빨리 상승할 때, 짧은 MA는 긴 MA를 위로 밀어내어 밑에서 가로질러 갈 것입니다. 이것은 상승 추세가 나타나고 긴 포지션을 취해야한다는 것을 의미합니다. 반대로 단기 가격이 더 빨리 떨어지면 짧은 MA는 긴 MA를 끌어내어 위에서 가로질러 하락 추세를 나타내고 짧은 포지션을 취해야한다는 것을 의미합니다.
빠른 및 느린 MA 크로스오버를 사용하여 가격 트렌드의 전환점을 캡처함으로써 전략은 긴/단지 포지션을 그에 따라 조정할 수 있습니다. 이것은 전략의 트렌드 결정과 거래 신호 생성의 주요 논리입니다.
제품
이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.
빠른 및 느린 MA 기간을 최적화하여 다른 변동성 빈도와 제품을 적응합니다. 최적의 조합을 찾기 위해 더 많은 조합을 테스트 할 수 있습니다.
잘못된 신호를 줄이기 위해 볼륨 스파이크와 같은 더 많은 필터를 추가함으로써 입구 조건을 개선합니다.
수익성을 높이기 위해 트레일링 스톱이나 동적 스톱과 같은 스톱 로스/프로프트 취득을 개선합니다.
수수료와 같은 거래 비용을 고려하고 더 현실적인 백테스트를 위해 비용 평가 모듈을 추가하십시오.
다양한 제품에 맞춘 최적의 매개 변수 조합을 찾기 위해 매개 변수 우주를 설계하십시오.
지역 패턴 식별을 추가하여 트렌드 전환점을 결정하고 입출시기를 개선합니다.
체계적인 전략 최적화를 통해 수익성, 안정성이 크게 향상되고 마감량이 줄일 수 있습니다.
트레이딩 전략은 트렌드 전환을 MA 크로스오버를 사용하여 결정합니다. 전형적인 트렌드 추적 전략입니다. 빠른 및 느린 MAs 사이의 크로스오버를 사용하여 긴 / 짧은 신호를 생성하여 두 가지의 조합을 통해 트렌드 방향을 식별합니다. 이 전략은 꾸준하고 신뢰할 수있게 트렌드를 캡처하고 이해하기 쉽고 구현합니다. 최적화되면 대부분의 제품에 적응하고 근본적인 양적 거래 전략을 형성 할 수 있습니다. 수익성과 승률의 추가 개선은 다른 기술 지표와 결합하여 얻을 수 있습니다.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © thebearfib // //@version=5 // strategy("x-over 150d_200d_sma - Free", overlay = true) repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system srcmc = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off) fast_length = input(title="Fast Length", defval=60) slow_length = input(title="Slow Length", defval=275) _fast = ta.sma(srcmc, fast_length) _slow = ta.sma(srcmc, slow_length) plot(_fast, title="Fast SMA", color=color.red, linewidth = 1) plot(_slow, title="Slow SMA", color=color.white, linewidth = 3) // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Calculating ————————————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // longProfitPerc = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01 longStopPerc = input.float(title="Long Stop (%)", minval=0.01, step=1.0, defval=13) * .01 // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Stop Conditions ———————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— longExitPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc * (1 + longProfitPerc) longStopPrice = strategy.opentrades > 0 ? strategy.position_avg_price * (1 - longStopPerc) : srcmc * (1 - longStopPerc) // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Long Conditions ———————————————————————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— longCondition = srcmc > _slow and ta.crossover(_fast, _slow) closeCondition = ta.crossover(srcmc, _slow) if (longCondition) strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆") if (closeCondition) strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←") if (strategy.position_size > 0) strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss") // // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— // ————————————————————————————————— Never the End Just the beginning ————————————————————————————————————————————————— // ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— //