이동 평균 골든 크로스 트레이딩 전략


생성 날짜: 2023-11-06 16:38:22 마지막으로 수정됨: 2023-11-06 16:38:22
복사: 0 클릭수: 704
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동 평균 골든 크로스 트레이딩 전략

개요

이 전략은 이동 평균의 골드 포크 원칙에 기초하여 거래한다. 이 전략은 두 개의 이동 평균을 사용하며, 단기 이동 평균이 아래에서 장기 이동 평균을 돌파 할 때 구매 신호를 발생시킨다. 가격이 다른 이동 평균을 넘어서는 경우 판매 신호를 발생시킨다. 이 전략은 유행 시장에 적용되며, 일부 잡음 거래를 효과적으로 필터링하여 주요 추세를 잡아서 거래한다.

전략 원칙

이 정책은 사용자 지정된 단기 이동 평균 주기, 장기 이동 평균 주기, 탈퇴 이동 평균 주기 및 각 이동 평균의 계산 방법을 사용합니다.

단기 이동 평균이 하향에서 장기 이동 평균을 돌파할 때 구매 신호가 발생한다. 이는 단기 추세가 상승 추세로 전환되어 구매가 가능하다는 것을 의미한다.

마감 가격이 이동 평균을 벗어나면 판매 신호가 발생한다. 이는 트렌드가 반전되어 지위를 탈퇴해야 함을 나타냅니다.

따라서 이 전략의 거래 신호는 단기 이동 평균과 장기 이동 평균의 교차와 종점 가격과 퇴출 이동 평균의 관계에 의해 발생한다.

우위 분석

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

  1. “이건 정말 간단하고 이해하기 쉽고 실행하기 쉽습니다.

  2. 사용자 정의 가능한 매개 변수

  3. 이동 평균을 사용하여 소음을 필터링하여 주요 트렌드를 파악하십시오.

  4. 트렌드, 지지, 저항과 같은 기술 지표들을 더 최적화할 수 있다.

  5. 이윤 비율은 조절할 수 있고, 손해 방지 장치가 있다.

위험 분석

이 전략에는 다음과 같은 위험도 있습니다.

  1. 트렌드가 약한 재조합 시장에서는 잘못된 신호가 발생하기 쉽다.

  2. 변수를 잘못 설정하면 트렌드를 놓치거나 너무 많은 무효 거래가 발생할 수 있습니다.

  3. 부득이한 스톱피치 설정으로 손실을 확대할 수 있다.

  4. 파격 실패로 인해 손실이 발생할 수 있습니다.

  5. 시장의 변화에 맞춰 매개 변수를 조정해야 합니다.

대응 위험의 해결 방법은 다음과 같습니다: 최적화 매개 변수 설정, 다른 지표 필터링 신호와 결합, 스톱 손실 위치를 조정, 추세를 확인한 후 참여 등.

최적화 방향

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

  1. 트렌드를 판단하는 메커니즘을 개발하고, 트렌드를 확인한 후 거래 신호를 생성한다.

  2. 거래량이나 변동 지표와 결합하여 신호를 필터링하십시오.

  3. 동적으로 최적화된 이동 평균 주기 변수

  4. 손해제기를 최적화하여 이동적 손해제기를 구현한다.

  5. 지원 저항과 다른 지표와 함께 거래 신호를 추가로 확인합니다.

  6. 다른 품종에 따라 주기 조정 매개 변수

요약하다

이 이동 평균 리니어 포크 거래 전략은 전체적으로 간단한 실용적인 트렌드 추적 전략이다. 시장 상황에 따라 매개 변수를 조정할 수 있으며, 트렌드 상황에서 주요 트렌드 방향을 잡을 수 있다. 그러나 트렌드 판단 오류와 같은 위험을 예방하는 데 주의를 기울여야 하며, 시장 변화에 적응하기 위해 지속적으로 최적화해야 한다. 전체적으로 이 전략은 좋은 실용성을 가지고 있다.

전략 소스 코드
/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
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/
// © TwoChiefs

//@version=4
strategy("John EMA Crossover Strategy", overlay=true)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

//CREATE USER-INPUT VARIABLES

periodShort = input(13, minval=1, title="Enter Period for Short Moving Average")
smoothingShort = input(title="Choose Smoothing Type for Short Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodLong = input(48, minval=1, title="Enter Period for Long Moving Average")
smoothingLong = input(title="Choose Smoothing Type for Long Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodExit = input(30, minval=1, title="Enter Period for Exit Moving Average")
smoothingExit = input(title="Choose Smoothing Type for Exit Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])


src1 = close
pivot = (high + low + close) / 3

//MA CALCULATION FUNCTION
ma(smoothing, src, length) => 
    if smoothing == "RMA"
        rma(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        else 
            if smoothing == "EMA"
                ema(src, length)
            else 
                if smoothing == "WMA"
                    wma(src, length)
				else
					if smoothing == "VWMA"
						vwma(src, length)
					else
						if smoothing == "SMMA"
							na(src[1]) ? sma(src, length) : (src[1] * (length - 1) + src) / length
						
						else
							if smoothing == "HullMA"
								wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length)))




//ASSIGN A MOVING AVERAGE RESULT TO A VARIABLE
shortMA=ma(smoothingShort, pivot, periodShort)
longMA=ma(smoothingLong, pivot, periodLong)
exitMA=ma(smoothingExit, pivot, periodExit)

//PLOT THOSE VARIABLES
plot(shortMA, linewidth=4, color=color.yellow,title="The Short Moving Average")
plot(longMA, linewidth=4, color=color.blue,title="The Long Moving Average")
plot(exitMA, linewidth=1, color=color.red,title="The Exit CrossUnder Moving Average")



//BUY STRATEGY
buy = crossover(shortMA,longMA) ? true : na
exit = crossunder(close,exitMA) ? true : na


strategy.entry("long",true,when=buy and time_cond)
strategy.close("long",when=exit and time_cond)


if (not time_cond)
    strategy.close_all()