다중 이동평균 파업 전략

저자:차오장, 날짜: 2023-11-22 13:41:38
태그:

img

전반적인 설명

이 전략은 여러 이동 평균 라인의 돌파 및 콜백을 기반으로 거래 신호를 생성합니다. 가격이 상승 이동 평균 라인을 통과 할 때 길게 가고 가격이 하락 이동 평균 라인을 넘어갈 때 짧게됩니다.

전략 논리

이 코드는 21일, 50일, 100일 및 200일이라는 다양한 기간을 가진 4개의 이동 평균 라인을 사용합니다. 가격이 이 MA 라인을 통과할 때 긴 포지션을 입력하고 가격이 이 MA 라인을 넘어갈 때 짧은 포지션을 입력합니다. 또한, 스톱 로스와 취리 이윤 수준은 전략에 설정됩니다. 구체적으로, 스톱 로스는 이전 촛불의 최저 지점 근처에 설정되며, 취리 이윤은 이전 촛불의 최저 지점과 가장 높은 지점 사이의 거리의 3배에 설정됩니다.

이 전략의 핵심 아이디어는 움직이는 평균을 사용하여 트렌드를 판단하는 것입니다. 가격이 상승 MA 라인을 통과하면 상승 추세를 나타냅니다. 가격이 하향 MA 라인 아래에 떨어지면 하락 추세를 나타냅니다. 다른 기간과 여러 MA 라인을 사용하여 추세를 더 정확하게 판단하고 트렌드의 일관성을 통해 거래 신호를 확인할 수 있습니다.

이점 분석

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

  1. 여러 MA를 사용하면 잘못된 신호를 효과적으로 필터링 할 수 있습니다.
  2. 스톱 로스 및 리프트를 설정하면 단일 손실을 제한할 수 있습니다.
  3. 구현하기 쉽다

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. MA 전략은 오차로 유연하며, 따라서 가격 반전 지점을 놓치고 있습니다.
  2. 허위 신호가 발생하면 손실이 발생할 수 있습니다.
  3. 부적절한 스톱 로스 및 수익 취득 설정은 손실을 증폭시킬 수 있습니다.

이러한 위험은 MA 매개 변수를 조정하고 스톱 로스를 최적화하고 수익을 취함으로써 줄일 수 있습니다.

최적화

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 최적의 매개 변수를 찾기 위해 더 많은 MA 조합을 테스트
  2. 가짜 파장을 피하기 위해 다른 지표를 추가합니다.
  3. 더 나은 리스크/이익 비율을 위해 스톱 로스를 최적화하고 수익을 취하십시오.
  4. 다른 시장 조건에 대한 매개 변수를 조정하여 전략을 더 견고하게 만들 수 있습니다.

요약

일반적으로, 이것은 전략에 따른 전형적인 추세이다. 장점은 명확한 논리이며 이해하기 쉽고 구현하기 쉽다. 단점은 잘못된 신호에 취약하다. 전략은 매개 변수 조정 및 다른 지표를 추가하여 개선 될 수 있다. 중장기 보유에 적합하며 단기 거래 전략의 구성 요소로도 사용될 수 있다.


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
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)


더 많은