
이 전략은 일반적인 이동 평균의 교차를 기반으로 매매 신호를 수립하지만, 더 정확한 거래 신호를 생성하기 위해 몇 가지 수정이 이루어졌습니다. 이 전략은 빠른 이동 평균과 느린 이동 평균의 교차를 결합하여 트렌드를 판단하고, 트렌드 추적 전략에 속합니다.
빠른 이동 평균이 아래쪽에서 느린 이동 평균을 돌파 할 때, 구매 신호로 간주됩니다. 빠른 이동 평균이 위쪽에서 느린 이동 평균을 돌파 할 때, 판매 신호로 간주됩니다. 즉, 골드 포크가 더 많이하고, 사다리 텅 비습니다.
이 전략의 핵심은 빠른 느린 평균 선의 선택에 있다. 이 전략은 길이가 각각 50과 100의 지수 이동 평균을 빠른 선과 느린 선으로 사용한다. 평균 선 변수를 조정함으로써 전략 효과를 최적화 할 수 있다.
이 전략은 트렌드 방향을 판단하는 쌍평평선과 결합하여 시장 소음을 효과적으로 필터링하여 트렌드를 식별할 수 있다. 단일평평선 전략에 비해 이윤의 확률을 높일 수 있다. 또한, 스톱로스를 설정하면 개별 거래의 손실을 제한할 수 있다.
이 전략은 트렌드 전환점을 판단하는 교차 원칙을 적용하여 트렌드 기회를 적시에 잡을 수 있다. 복잡한 조건 논리를 포함하는 전략에 비해 이 전략은 이해하기 쉽고 실행하기 쉽다.
이 전략에는 3가지의 위험이 있을 수 있다: 평균선 변수가 적절하지 않은 위험, 포지션 보유 기간이 적절하지 않은 위험, 스톱로스가 적절하지 않은 위험.
평균선 파라미터를 잘못 선택하면 잘못된 신호가 발생한다. 평균선이 너무 짧거나 너무 길으면 시장을 잘못 판단할 수 있으며, 특정 품종의 특성에 맞게 적절히 조정되어야 한다.
지분 기간이 너무 길거나 너무 짧아서 수익을 극대화하거나 위험을 통제할 수 없습니다. 다양한 출구 방법을 테스트하여 최적의 지분 기간을 결정해야합니다.
스톱포지션 설정이 잘못되면 스톱포지션이 너무 느슨하거나 너무 긴장하게 될 수 있으며, 품종의 변동률에 따라 적절한 스톱포지션을 결정해야 한다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
더 많은 평균변수 조합을 테스트하여 최적의 변수를 찾습니다.
최근 N일 가격 변동 또는 ATR을 기반으로 동적 스톱 포지션을 결정합니다.
MACD, KD 등과 같은 더 많은 지표와 함께
트렌드 필터링 규칙을 추가하여 거래 시장을 정리하는 것을 피합니다.
더 많은 품종에 대한 전략을 적용하거나, 종별 전략으로 개선하는 것을 고려할 수 있습니다.
이 이동 평균 교차 최적화 전략은 트렌드 방향 판단의 장점을 통합하고, 위험을 제어하기 위해 스톱로스를 설정하며, 실행하기 쉬운 트렌드 추적 전략 중 하나이다. 이 전략은 파라미터 최적화, 스톱로스 최적화, 신호 필터링 등의 방법으로 안정성과 효율성을 더욱 향상시킬 수 있다. 복잡한 논리를 포함하는 전략에 비해 이 전략은 이해하기 쉬우며, 실행 은 낮으며, 양적 거래에 매우 적합한 입문 전략이다.
/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 15m
basePeriod: 5m
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/
// © ashishchauhan
strategy(title="MA CO Strategy Test", overlay=true, pyramiding=0, initial_capital=100000)
fastEMALen = input(title="Fast EMA Length", type=input.integer, defval=50)
slowEMALen = input(title="Slow EMA Length", type=input.integer, defval=100)
fastEMA = ema(close, fastEMALen)
slowEMA = ema(close, slowEMALen)
enterLong = crossover(fastEMA, slowEMA)
enterShort = crossunder(fastEMA, slowEMA)
longStop = 0.0
longStop := enterShort ? close : longStop[1]
shortStop = 0.0
shortStop := enterLong ? close : shortStop[1]
plot(series=fastEMA, color=color.orange, title="Fast EMA")
plot(series=slowEMA, color=color.teal, linewidth=3, title="Slow EMA")
if enterLong
strategy.entry(id="GoLong", long=true)
if enterShort
strategy.entry(id="GoShort", long=false)
if strategy.position_size > 0
strategy.exit(id="ExLong", from_entry="GoLong", stop=longStop)
if strategy.position_size < 0
strategy.exit(id="ExShort", from_entry="GoShort", stop=shortStop)
strategy.close_all()