
이 전략은 HULL 평평한 이동 평균과 지수 이동 평균의 교차 상황을 계산하여 시장 추세 방향을 판단하여 구매 및 판매 신호를 생성한다. 중장기 경향 추적 전략에 속한다.
5일 HULL 평면 이동 평균 ((HULL SMA) 을 계산한다. HULL SMA는 가중된 이동 평균과 주기의 제곱근을 계산함으로써 가격 변화에 더 빠르게 반응한다.
5일 지수 이동 평균 ((EMA) 을 계산한다. EMA는 최근 가격에 더 큰 무게를 부여함으로써 평균을 계산한다. SMA에 비해 더 민감하다.
HULL SMA와 EMA의 교차 상황을 판단하여 구매 및 판매 신호를 생성한다.
HULL SMA에서 EMA를 통과하면 구매 신호가 발생한다. 이는 단기 트렌드가 상향으로 장기 트렌드를 돌파하고 가격이 상승할 것임을 나타냅니다.
HULL SMA가 EMA를 넘으면 팔기 신호가 발생한다. 이는 단기 트렌드가 전환되기 시작하여 가격이 떨어질 것임을 나타냅니다.
HULL SMA는 가격 변화에 민감하며, 동향의 변화를 더 일찍 발견할 수 있다.
EMA는 노이즈 (noise) 를 부드럽게 하고, 장기적인 추세를 추적할 수 있습니다.
빠른 선은 느린 선을 뚫고 신호를 생성하여 트렌드의 전환점을 잡을 수 있으며, 시장에 적시에 진입할 수 있다.
이동 평균 변수를 조정하여 다른 주기에서의 거래에 적응할 수 있다.
동시 상승과 하락의 추세를 판단할 수 있고, 양방향의 움직임을 유연하게 잡을 수 있다.
지진이 발생했을 때 잘못된 신호가 발생할 수 있습니다.
동향의 강점과 약점을 판단할 수 없으며, 약점의 동향에서 손실이 반복될 수 있다.
이동 평균 간격이 너무 커서 부분적으로 놓칠 수 있습니다.
빠른 선과 느린 선의 매개 변수가 잘못 설정되어 거래 신호의 질에 영향을 미칩니다.
거래 빈도가 너무 높아서 거래 비용과 점유율이 높아질 수 있습니다.
다른 지표와 결합하여 신호를 필터링하고, 트렌드 강점과 약점을 평가하고, 매개 변수 설정을 최적화하고, 위험을 제어하는 등의 방법으로 개선할 수 있다.
MACD, RSI 등과 같은 지표 필터를 추가하여 매매 시기를 판단한다.
동향 강도 지표인 ADX를 추가하여 약한 동향에서 거래하는 것을 피하십시오.
이동 평균 변수를 최적화하여 최적의 변수 조합을 찾습니다.
단독 손실을 통제하기 위한 스톱 손실 전략을 세웁니다.
거래 횟수와 비용 통제를 고려하여 포지션 개설 횟수를 조정하십시오.
더 많은 시간 주기 분석과 함께, 크로스 사이클 트렌드 신호를 식별한다.
자동 변수 최적화 프로그램을 개발하고, 동적으로 최적의 변수를 찾습니다.
이 전략은 빠른 라인 HULL SMA와 느린 라인 EMA의 교차를 통해 시장의 추세를 판단하며, 전형적인 이동 평균 교차 전략에 속한다. 이 전략은 전통적인 이동 평균에 비해 더 민감한 HULL SMA를 사용하여, 추세 변화를 더 일찍 발견할 수 있다. 그러나 여전히 최적의 매개 변수 설정이 필요하며, 잘못된 신호를 줄이기 위해 다른 기술 지표와 함께 추가된다.
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("HULL EMA Crossover", overlay = true, process_orders_on_close = true)
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © spiritedPerson95700
inSession = true
HULL_INP = input.int(5, "Hull EMA Value")
EMA_INP = input(5, "EMA Value")
/// Indicator
HULL_EMA = ta.hma(close, HULL_INP)
EMA = ta.ema(close, EMA_INP)
prevSignal = ''
if (prevSignal == '')
prevSignal := HULL_EMA > EMA ? 'buy' : 'sell'
/// buy and sell signal
buy = ta.crossover(HULL_EMA, EMA)
short = ta.crossover(EMA, HULL_EMA)
sell = short
cover = buy
if inSession
if buy
prevSignal := 'na'
strategy.entry("long", direction = strategy.long, comment = "Buy")
if sell
prevSignal := 'na'
strategy.close("long", comment = "Sell")
if short
strategy.entry("short", direction = strategy.short, comment = "Short")
if cover
strategy.close("short", comment = "Cover")
plot(HULL_EMA, color = color.green)
plot(EMA, color = color.blue)
// if ( hour(time) == 15 and minute(time) > 25 )
// strategy.close("long", comment="EOD")
// strategy.close("short", comment="EOD")
// buy := false
// sell := false
// prevSignal := ''