폐쇄 가격 비교 이중 이동 평균 크로스오버 전략은 비교적 간단한 수치적 거래 전략이다. 최근 7개의 촛불의 평균 폐쇄 가격과 20개의 촛불의 평균 폐쇄 가격을 계산한다. 단기 이동 평균이 아래에서 장기 이동 평균을 넘을 때, 그것은 긴 포지션을 신호한다. 단기 이동 평균이 장기 이동 평균을 넘을 때, 그것은 짧은 포지션을 신호한다. 이것은 전략이 시장의 중기 트렌드의 굴곡점을 포착할 수 있게 한다.
이 전략의 핵심 논리는 최근 7개의 촛불 (현재 촛불을 제외한) 의 평균 종료 가격을 단기 이동 평균으로 계산하고, 20개의 촛불 (최근 7개의 촛불을 제외한) 의 평균 종료 가격을 장기 이동 평균으로 계산하는 것입니다. 단기 이동 평균이 아래로부터의 장기 이동 평균을 넘어서면 시장이 하락에서 상승으로 전환되는 것을 나타냅니다. 단기 이동 평균이 위로부터의 장기 이동 평균을 넘어서면 시장이 상승에서 하락으로 전환되는 것을 나타냅니다.
긴 신호에 따라, 전체 계좌 자본을 사용하여 긴 포지션은 열릴 것입니다. 짧은 신호에 따라, 동일한 금액을 사용하여 짧은 포지션을 열기 전에 기존의 긴 포지션은 먼저 닫을 것입니다. 각 개방 된 포지션은 20-25 촛불을 유지합니다. 이 기간 동안 손실이 발생하면 포지션의 50%가 손실을 멈추게됩니다. 충분한 이익이 발생하면 포지션의 50%가 이익을 취합니다.
이 간단한 이중 이동 평균 크로스오버 전략의 장점은 다음과 같습니다.
단순한 추세에 따른 전략으로서, 그것은 또한 몇 가지 잠재적인 위험에 직면합니다:
이러한 위험을 해결하기 위한 최적화는 다음과 같습니다.
간단한 이중 이동 평균 크로스오버 전략으로서 주요 최적화는 다음과 같습니다.
MA 매개 변수를 최적화하고, 최상의 매개 변수를 위해 다양한 단기 및 장기 MA 조합을 테스트합니다.
부피, 변동성 지수 등과 같은 다른 필터 지표를 추가하여 불안정한 시장에서 잘못된 신호를 피합니다.
스톱 로스를 최적화하고 수익 전략을 취하고, 최적의 비율을 찾기 위해 다른 비율을 테스트합니다.
다른 시장 주기에 걸쳐 효과를 테스트하고 유지 기간을 최적화합니다.
머신러닝 알고리즘을 추가하고 역 테스트를 통해 매개 변수를 최적화해 더 안정성을 확보하세요.
요약하자면, 이것은 단순한 이중 이동 평균 크로스오버 전략이며, 중장기 트렌드 인플렉션 포인트를 결정하기 위해 다른 기간에 걸쳐 MA 크로스오버를 사용합니다. 그것은 높은 실용성과 작동이 쉽습니다. 그러나 진정한 시장 반전 지점을 효과적으로 결정하는 데에도 한계가 있습니다. 일관성 있는 알파를 위해 다양한 시장 조건에서 더 견고하게 만들기 위해 필터, 매개 변수 조정, 기계 학습 등을 추가하는 데 추가 최적화가 필요합니다.
/*backtest start: 2024-01-05 00:00:00 end: 2024-02-04 00:00:00 period: 2h basePeriod: 15m 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/ // © nrathi2211 //@version=5 strategy("Closing Prices", overlay=true) //variables closingB7 = ta.highest(close, 7)[7] closingB14 = ta.highest(close, 7)[20] highB14 = ta.highest(low, 50)[7] capital = 50000 //functions qty_find(float price) => capital / int(price) profit_take() => profit = strategy.opentrades.profit(strategy.opentrades - 1) profit*.95 if(closingB7 < closingB14) if(ta.crossover(close, closingB7)) strategy.entry("long_buy", strategy.long, qty_find(close)) current_profit = strategy.opentrades.profit(strategy.opentrades - 1) if(current_profit < 0) strategy.close("Exit long_buy SL", "long_buy", qty_percent = 50) else if(current_profit < profit_take()) strategy.close("Exit long_buy TP", "long_buy", qty_percent = 50) if(ta.crossunder(close, closingB7)) strategy.exit("long_sell", from_entry = "long_buy", stop = closingB7) plot(closingB7, "cl", color.green, 2) //plot(closingB14, "cl", color.red, 2) plot(highB14, "cl", color.purple, 2)