다중 이동 평균의 크로스오버 전략

저자:차오장, 날짜: 2024-02-04 17:21:25
태그:

img

전반적인 설명

이 전략은 여러 시간 프레임의 이동 평균 라인을 계산하여 다른 기간에 걸쳐 추세를 결정합니다. 가격이 이동 평균을 넘어서면 길고 가격이 이동 평균을 넘어서면 짧습니다. 또한 위험과 수익을 균형을 맞추기 위해 스톱 로스와 영업이 포함됩니다.

원칙

이 전략은 다음의 핵심 요점들에 기초하고 있습니다.

  1. 21일, 50일, 100일, 200일 간 간단한 이동평균을 계산합니다.

  2. 가격이 이동평균을 넘어서면 롱, 밑으로 넘어가면 쇼트가 됩니다.

  3. 긴 포지션을 열고 나면 이전 바의 가장 낮은 가격과 짧은 포지션을 열고 나면 가장 높은 가격 근처에 스톱 로스를 설정합니다.

  4. 특정 범위 내에서 최저 가격의 긴 가격 아래와 최대의 가격의 짧은 가격 위에 수익을 취하는 목표를 설정합니다.

  5. 가격이 스톱 로스 수준에 도달하면 포지션을 닫거나 수익을 취합니다.

여러 시간 프레임에 걸쳐 트렌드를 판단하면 거래 신호의 신뢰성을 향상시키고 상대적으로 명확한 경우 트렌드를 따라갈 수 있습니다. 손실이 확대되거나 이익이 특정 수준에 도달하면 지점에서 빠져 나가는 위험을 제어합니다.

장점

이 전략의 주요 장점은 다음과 같습니다.

  1. 여러 시간 프레임 분석으로 신호 신뢰성을 향상시킵니다. 다른 이동 평균 크로스오버는 일부 잘못된 신호를 필터링하고 더 명확한 트렌드 순간에 거래 할 수 있습니다.

  2. 동적 스톱은 위험 통제를 촉진합니다. 가격 액션에 기반한 스톱을 계산하면 거래 기준으로 최대 손실을 제한 할 수있는 합리적인 범위가 제공됩니다.

  3. 간단하고 명확한 코드 구조. 파이인 문법은 매개 변수를 쉽게 조정하고 최적화하기 위해 읽기 쉬운 구조를 제공합니다.

  4. 간단한 실용적 응용. 이동 평균 크로스오버는 적절한 매개 변수 조정으로 라이브 거래에서 쉽게 구현 될 수있는 고전적인 전략 아이디어입니다.

위험성

또한 고려해야 할 몇 가지 위험이 있습니다.

  1. 부정확한 트렌드 판단. 이동 평균은 혼합 신호와 지연을 생성하여 잘못된 거래 신호로 이어질 수 있습니다.

  2. 변동적인 시장에서의 손실 노출. 막 손실은 큰 가격 격차 또는 역전에서 쉽게 발생하여 큰 손실을 초래할 수 있습니다.

  3. 부적절한 매개 변수 설정은 손실을 증가시킵니다. 너무 넓은 스톱이나 긴 인수 수익은 거래당 최대 손실을 증가시킬 수 있습니다.

  4. 장기 보유 위험: 이 전략에 따른 경향은 장기 수익성을 고려하지 않으며 시간이 지남에 따라 상당한 자본을 소비 할 수 있습니다.

  5. 실제 거래 차이: 실제 거래 플랫폼에 적용되면 거래 비용, 미끄러짐 등이 수익에 영향을 줄 수 있습니다.

해결책:

  1. KDJ, MACD 등과 같은 다른 지표와 신호 확인을 추가합니다.

  2. 시장 조건에 따라 정지 폭을 조정하여 조기 트리거를 피합니다.

  3. 매개 변수를 최적화하고 장기적인 수익률과 마감률을 평가합니다. 엄격한 백테스팅을 통해 최상의 매개 변수 조합을 얻습니다.

  4. 종이 거래에 대한 전략을 철저히 테스트하고 수동 정지를 추가합니다.

더 나은 기회

추가 개선의 여지가 있습니다.

  1. 양적 진입 및 출구 규칙을 추가하십시오. 예를 들어, 더 명확한 트렌드에 거래하도록 새로운 최고와 최저를 확인하십시오.

  2. 포지션 크기와 리스크 관리를 포함합니다. 계정 크기와 시장 조건에 따라 포지션 크기를 동적으로 조정합니다.

  3. 트렌드 검증을 강화합니다. PRZ, ATR, DMI 등과 같은 지표를 사용하여 적절한 트렌드를 필터하고 선택하십시오.

  4. 길고 짧은 보유 기간을 번갈아, 수익을 확보하기 위해 수익을 중단합니다.

  5. 팩터 투자 모델을 사용하여 주식 풀을 구성합니다. 다양한 요소에 대한 점수 및 필터 주식.

  6. 위험 통제를 위해 기계 학습을 추가합니다. 판단에 도움이되고 인간의 오류를 방지하기 위해 LSTM, RNN 등을 사용하십시오.

결론

이 간단한 이동 평균 크로스오버 전략은 트렌드를 따르는 데 쉽게 구현할 수 있습니다. 동적 정지는 위험을 제어하는 데 도움이됩니다. 그러나 일부 신호 부정확성과 윙사 위험이 있습니다. 매개 변수 및 추가 기술에 대한 추가 최적화는 더 강력한 성능을 가져올 수 있습니다.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true)

// Input for Moving Averages
ma21 = ta.sma(close, 21)
ma50 = ta.sma(close, 50)
ma100 = ta.sma(close, 100)
ma200 = ta.sma(close, 200)

// Calculate the lowest point of the previous candle for stop loss
lowestLow = ta.lowest(low, 2)

// Calculate the highest point of the previous candle for stop loss
highestHigh = ta.highest(high, 2)

// Calculate take profit levels
takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh)
takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh)

// Entry Conditions
longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200)
shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200)

// Stop Loss Levels
stopLossLong = lowestLow * 0.995
stopLossShort = highestHigh * 1.005

// Exit Conditions
longExitCondition = low < stopLossLong or high > takeProfitLong
shortExitCondition = high > stopLossShort or low < takeProfitShort

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longExitCondition)
    strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)

if (shortExitCondition)
    strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)


더 많은