다중 시간 프레임 이동 평균 교차 추세 추종 전략


생성 날짜: 2024-02-04 17:21:25 마지막으로 수정됨: 2024-02-04 17:21:25
복사: 0 클릭수: 650
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 시간 프레임 이동 평균 교차 추세 추종 전략

개요

이 전략은 여러 다른 시기의 이동 평균을 계산하여, 여러 시간 프레임의 추세를 판단한다. 가격이 다른 시기의 이동 평균을 돌파 할 때, 그에 따른 여러 하위 작업을 수행한다. 동시에, 중지 및 중지 방식을 결합하여, 위험과 수익의 균형을 달성한다.

전략 원칙

이 전략은 다음과 같은 몇 가지 요인에 기반합니다.

  1. 21일선, 50일선, 100일선 및 200일선 4개의 다른 시간 주기들의 간단한 이동 평균을 계산한다.

  2. 가격이 이 중 임의의 평균을 상회할 때, 더 많은 것을 하고; 가격이 이 중 임의의 평균을 하락할 때, 빈 것을 한다.

  3. 다중 상황으로 들어간 후, 중단 지점은 전 K 선의 최저 가격 인근에 설정됩니다. 상장 상황으로 들어간 후, 중단 지점은 전 K 선의 최고 가격 인근에 설정됩니다.

  4. 다중 정지점을 최저 가격 이하로 설정한 범위; 대외 정지점을 최고 가격 위에 설정한 범위.

  5. 가격이 스톱로스 또는 스톱을 만졌을 때, 평지 포지션은 출발한다.

이러한 다중 시간 프레임 판단 방식을 통해 거래 신호의 신뢰성을 높이고 추세가 명확할 때 추적 할 수 있습니다. 동시에, 중지 및 중지 설정은 위험을 제어하고 손실이 확대되거나 이익이 일정 수준에 도달하면 시장에서 빠져 나갈 수 있습니다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 다중 시간 프레임 판단, 신호 신뢰성을 향상한다. 다양한 주기 평균선의 교차 조합, 일부 가짜 신호를 필터링 할 수 있으며, 트렌드가 더 명확한 시간을 선택하여 거래한다.

  2. 다이내믹 스톱 스톱 방식은 위험을 제어하기 쉽다. K선 데이터와 결합하여 스톱 스톱 스톱을 계산하여 시장의 실제 변동량에 따라 합리적인 범위를 설정하여 단일 손실의 최대 값을 효과적으로 제어 할 수 있다.

  3. 코드 구조는 명확하고 간단하다. Pine 에디터 기반의 정책 문법으로, 코드 구조는 명확하고 읽기 쉽다. 변수를 조정하고 최적화하기 쉽다.

  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)