
이 전략은 DEMA와 TEMA의 두 가지 동적 평행선을 계산하고, 그 중 골드포크 또는 데드포크가 발생했을 때 상위 또는 하위 포지션을 설정하여 트렌드를 추적합니다. 동시에, 전략은 불필요한 스톱 손실을 방지하기 위해 일정 수의 포지션을 설정합니다.
이 전략은 주로 동적 평평선인 DEMA와 TEMA의 교차로에 기초하여 트렌드 방향을 판단한다.
DEMA는 EMA의 중도 평준화 특성을 결합하고 EMA에서 존재하는 지연 문제를 최적화한 이중 지수 이동 평균을 나타냅니다. 계산 공식은 다음과 같습니다.
DEMA = 2*EMA(CLOSE,N) - EMA(EMA(CLOSE,N),N)
여기 N은 Demalength 입니다.
TEMA는 삼진 이동 평균을 의미하며, 삼진 지수 평준화를 통해 평균의 지연성을 감소시킵니다. 계산 공식은 다음과 같습니다.
EMA1 = EMA(CLOSE,Temalength)
EMA2 = EMA(EMA1,Temalength)
EMA3 = EMA(EMA2,Temalength)
TEMA = 3*EMA1 - 3*EMA2 + EMA3
TEMA가 DEMA를 통과할 때, 황금 포크 신호로 간주하고, 더 많은 일을 한다. TEMA가 DEMA를 통과할 때, 죽은 포크 신호로 간주하고, 공백을 한다.
또한, 이 전략은 신호의 유효성을 보장하기 위해 delayBars를 설정하고, 가짜 신호를 방지한다. 그것은 골드 포크 또는 데드 포크 이후의 지속된 일정 기간이 시작되기 전에 촉발된다.
마지막으로, 이 전략에는 쌍방향 중개의 위험을 피하기 위해 두 번 체크하는 논리가 추가되었습니다. 즉, 포지션을 개시하기 전에 현재 역상태를 청산 할 필요가 있는지 판단합니다.
DEMA와 TEMA는 동적 평행선으로, 전통적인 EMA와 SMA에 비해 더 민감하고, 트렌드의 변화를 더 빨리 포착할 수 있어 시장의 흐름을 판단하는 데 더 많은 정확성을 갖는다.
delayBars 파라미터의 설정으로, 신호가 계속되는 시간이 지나면 포지션이 열릴 때까지 기다려야 한다. 이렇게 하면 일부 가짜 신호를 필터링하여, 을 피할 수 있다.
전략은 포지션을 개시하기 전에 우선적으로 역상태를 청산할 필요가 있는지 판단하여, 동시에 양방향 포지션을 보유하는 위험을 피하고, 배제의 손실을 최대한 줄일 수 있다.
이 전략은 주로 동선 교차 (均線交叉) 라는 일반적 기술 지표에 의존하여 트렌드와 신호를 판단하고 특정 품종에 의존하지 않고, 명백한 경향성이 있는 대부분의 품종에 적용된다.
시장이 거대한 흔들림 영역에 빠졌을 때, 평행선은 자주 교차할 수 있으며, 가짜 신호가 형성되기 쉽다. 이 때 지연 주기의 설정은 신호를 완전히 필터링 할 수 없습니다.
해결책은 진동상태를 인식한 후 일시 중지하는 전략, 또는 평균선 변수와 지연주기를 적절히 조정하는 것이다.
이 전략은 가격의 흐름을만 추적하며, 단기간의 함정이나 중대한 갑작스러운 사건으로 인한 반전을 예측할 수 없습니다. 이 경우 전략은 큰 손실을 입을 수 있습니다.
해결책은 다른 지표와 함께 위험 배경을 판단하거나, 적절히 포지션 크기를 축소하는 것입니다.
DEMA와 TEMA 외에도 SMA, EMA 및 다른 개선된 평균선 조합을 테스트하여 해당 시장에 더 적합한 평균선 지표를 찾을 수 있습니다.
매개 변수 최적화를 통해 최적의 평균선 길이 변수와 신호 지연 주기를 찾아 더 정확한 거래 신호를 얻는다.
품종 특성에 따라 각각 변동 범위와 경향성에 적합한 평균선과 지연 주기 파라미터 조합을 찾는다.
예를 들어, Bollinger Bands 지표는 변동률과 가격 위치를 판단하여 충격 함정에 빠지지 않도록합니다. 에너지 계열 지표의 판단력을 결합하여 트렌드 신뢰성을 평가합니다.
이 전략은 동적평준 DEMA와 TEMA의 교차로 대동향을 추적하며, 단순한 유형의 트렌드 추적 전략에 속한다. 장점은 높은 안정성, 신뢰성 및 보편성이며, 기본 전략으로 사용하기에 적합하다. 그러나 또한 약간의 후진성 및 역전 인식 능력이 약한 단점도 있다. 이 전략의 장점, 위험 및 후속 최적화 방향에 대한 포괄적인 분석과 요약이 이루어졌으며, 이 전략을 사용하는 데 귀중한 참고가 제공되었다.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jacobdickson255
strategy("Crypto Bull Run Tracker", overlay=true, pyramiding=0)
//Dema Scripting
Demalength = input.int(230, minval=1)
src = close
e1 = ta.ema(src, Demalength)
e2 = ta.ema(e1, Demalength)
dema = 2 * e1 - e2
plot(dema, "DEMA", color=#43A047)
//Tema Scripting
Temalength = input.int(210, minval=1)
ema1 = ta.ema(close, Temalength)
ema2 = ta.ema(ema1, Temalength)
ema3 = ta.ema(ema2, Temalength)
tema = 3 * (ema1 - ema2) + ema3
plot(tema, "TEMA", color=#2962FF)
delayBars = input(5, title="Bar Delay")
var int lastTradeBar = na
longCondition = ta.crossover(tema, dema)
longExit = ta.crossunder(tema, dema)
shortCondition = ta.crossunder(tema, dema)
shortExit = ta.crossover(tema, dema)
// Exit conditions should be checked before entry conditions
// Close short position if a long condition is present
if ((shortExit and strategy.position_size < 0)) // If conditions for exiting the short are met, and there is a balance in the short direction, exit the short
strategy.close("Short")
// Close long position if a short condition is present
if ((longExit and strategy.position_size > 0))
strategy.close("Long")
// Now check for entry conditions
if (longCondition)
strategy.entry("Long", strategy.long)
lastTradeBar := bar_index
if (shortCondition)
strategy.entry("Short", strategy.short)
lastTradeBar := bar_index