이중 이동 평균 교차 시장 거래 전략

저자:차오장, 날짜: 2023-10-24 16:55:38
태그:

img

전반적인 설명

이 전략은 헐 이동 평균과 T3 이동 평균의 장점을 결합하여 시장 간 거래 전략을 설계합니다. 단기 거래 및 장기 트렌드 추적에 모두 사용할 수 있습니다. 주요 거래 신호 라인으로 헐 이동 평균과 T3 이동 평균의 평균 값을 계산하여 방향 변화에 따라 입점 및 출구 지점을 결정합니다.

전략 논리

이 전략은 주로 헐 이동 평균과 T3 이동 평균의 계산을 기반으로 합니다.

헐 이동 평균 (Hull Moving Average, HMA) 은 가중 이동 평균 반복 계산 방법을 사용하여 시장 소음을 효과적으로 필터링하고 부드러운 가격 트렌드 곡선을 표시합니다. 단순한 이동 평균과 기하급수적인 이동 평균보다 가격 변화에 더 민감하며 또한 잘못된 브레이크오프를 효과적으로 억제합니다.

T3 이동 평균은 매개 변수를 조정함으로써 지연을 줄이는 동시에 가격 변화에 더 빠르게 반응합니다. 여러 가지 기하급수 평형 계산을 통해 가격 변화에 빠르게 반응 할 수 있습니다.

이 전략은 두 가지의 평균을 주요 거래 지표로 사용합니다. 이 평균 라인의 방향에 따라 진입 시기를 판단합니다. 현재 기간의 평균이 이전 기간보다 높으면 긴 진입 신호입니다. 낮으면 짧은 진입 신호입니다.

출구 규칙의 경우, 가격이 스톱 로스 또는 영업점을 넘으면 출구; 이동 평균 방향이 변경되면 출구.

이점 분석

이 전략은 헐 이동 평균과 T3 이동 평균의 장점을 결합하여 포괄적인 지표를 생성합니다. 다음으로, 이 전략은 사이클 매개 변수를 조정하여 단기 및 장기 거래에 적합합니다. 또한, 이윤을 잠금하고 위험을 제어하기 위해 동적 스톱 로스를 채택하고 이익을 취합니다.

위험 분석

이 전략은 주로 이동 평균 지표에 의존하며, 이는 다양한 트렌드에 여러 가지 잘못된 신호를 생성 할 수 있습니다. 또한 이동 평균의 지연은 가장 좋은 입시 시기를 놓칠 수 있습니다. 스톱 손실 및 이익 취득 포인트는 너무 느슨하거나 너무 긴 것을 피하기 위해 신중하게 설정해야합니다. 마지막으로 매개 변수는 다른 통화 및 시간 프레임에 최적화되어야합니다.

최적화

MA 신호를 확인하고 잘못된 신호를 필터링하기 위해 다른 지표를 추가하는 것을 고려하십시오. MA 신호를 최적화하기 위해 다른 MA 조합과 가중 알고리즘을 테스트하십시오. 위험을 동적으로 관리하기 위해 적응 스톱 손실과 트레일링 수익을 추가하십시오. 최적의 매개 변수 세트를 찾기 위해 다른 통화 및 시간 프레임에서 백테스팅 최적화를 수행하십시오.

요약

이 전략은 트렌드 방향을 판단하는 포괄적 인 지표를 형성하기 위해 헐 이동 평균과 T3 이동 평균의 강점을 통합합니다. 매개 변수 최적화를 통해 전략은 다양한 거래 주기에 유연하게 적용 될 수 있습니다. 전략은 특정 장점이 있지만 지연 및 잘못된 신호와 같은 문제도 있습니다. 다른 지표, 최적화 매개 변수 및 동적 중지 추가로 더 나은 결과를 위해 지속적으로 개선 할 수 있습니다.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 1h
basePeriod: 15m
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/
// © exlux99

//@version=4


strategy(title="Swing HULL + T3 avg", shorttitle="Swing HULL T3 AVG", overlay=true)

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 = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



////////////////////////////GENERAL INPUTS//////////////////////////////////////

length_Ma= input(defval=50, title="Length MAs", minval=1)

//==========HMA
getHULLMA(src, len) =>
    hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
    hullma

//==========T3
getT3(src, len, vFactor) =>
    ema1 = ema(src, len)
    ema2 = ema(ema1,len)
    ema3 = ema(ema2,len)
    ema4 = ema(ema3,len)
    ema5 = ema(ema4,len)
    ema6 = ema(ema5,len)
    c1 = -1 * pow(vFactor,3)
    c2 = 3*pow(vFactor,2) + 3*pow(vFactor,3)
    c3 = -6*pow(vFactor,2) - 3*vFactor - 3*pow(vFactor,3)
    c4 = 1 + 3*vFactor + pow(vFactor,3) + 3*pow(vFactor,2)
    T3 = c1*ema6 + c2*ema5 + c3*ema4 + c4*ema3
    T3





hullma = getHULLMA(close,length_Ma)

t3 = getT3(close,length_Ma,0.7)


avg = (hullma+t3) /2


////////////////////////////PLOTTING////////////////////////////////////////////


colorado = avg > avg[1]? color.green : color.red

plot(avg , title="avg", color=colorado, linewidth = 4)

long=avg>avg[1]
short=avg<avg[1]

tplong=input(0.08, title="TP Long", step=0.01)
sllong=input(1.0, title="SL Long", step=0.01)

tpshort=input(0.03, title="TP Short", step=0.01)
slshort=input(0.06, title="SL Short", step=0.01)


if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")


더 많은