이중 TEMA 포크 트레이딩 전략은 비교적 흔한 가격 트렌드를 추적하는 전략이다. 이 전략은 두 개의 다른 변수의 삼중 지수 이동 평균 TEMA를 사용하며, 빠른 선이 아래에서 느린 선을 통과할 때 다중 신호를 생성하고, 빠른 선이 위에서 아래에서 느린 선을 통과할 때 평소한다. 이 전략은 가격 트렌드를 효과적으로 추적할 수 있으며, 트렌드가 명확할 때 더 나은 수익을 얻을 수 있다.
이 전략은 TEMA를 주요 기술 지표로 사용한다. TEMA의 계산 공식은 다음과 같다.
TEMA = (3*EMA1) - (3*EMA2) + EMA3
이 중, EMA1, EMA2 및 EMA3는 각각 길이 N의 지수 이동 평균 EMA이다. TEMA는 세 번의 EMA를 계산함으로써 가격 변화에 더 빠르게 반응할 수 있다.
전략은 짧은 길이의 TEMA를 단선으로, 더 긴 TEMA를 느린 선으로 사용합니다. 빠른 선에서 느린 선을 통과하면 가격이 상승하기 시작하여 다중 신호를 생성합니다. 빠른 선 아래의 느린 선을 통과하면 가격이 하락하기 시작하여 평정합니다.
이 전략의 핵심은 변수 설정과 조건 판단이다. 빠른 라인을 설정하면 20 일과 같은 짧은 주기가 가격 변화를 더 빨리 포착할 수 있다. 느린 라인을 설정하면 60 일과 같은 긴 주기가 가짜 돌파구를 제거할 수 있다. 가격이 명백한 상승 또는 하락 경향을 보일 때, 빠른 라인은 느린 라인을 빠르게 뚫고 또는 뚫고 거래 신호를 생성할 수 있다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
TEMA 지표를 사용하면 가격 변화에 더 빠르게 반응하고 트렌드 반전을 잡을 수 있습니다.
이중 TEMA 구조는 가짜 브레이크를 필터링하여 높은 확률의 트렌드 트레이딩에 들어갈 수 있습니다.
조정 가능한 매개 변수 설정은 시장에 따라 매개 변수를 조정할 수 있는 유연한 설정이며, 다른 실정에 적응할 수 있다.
전략의 논리는 간단하고 명확하며, 실행을 이해하기 쉽고, 자금 활용도가 높습니다.
트렌드 상황에서는 더 좋은 수익을 얻을 수 있고, 명확한 트렌드가 있는 시장에서는 더 좋은 효과를 볼 수 있다.
이 전략에는 다음과 같은 위험도 있습니다.
재조정상황에서 자주 거래 손실이 발생할 수 있다.
만약 변수가 잘못 설정되면, 너무 많은 가짜 신호가 발생할 수 있다.
급격한 사건으로 인한 단기적인 상황 변화에 효과적으로 대응할 수 없습니다.
시간적 지연으로 인해 단선 기회를 놓칠 수 있습니다.
하지만, 이 거래는 매우 불안정한 상황에서도 매우 위험합니다.
시장의 변화에 맞춰 매개 변수를 적절히 조정해야 하며, 특정 매개 변수 최적화 경험이 필요하다.
대응 위험 관리 조치:
너무 민감하지 않도록 파라미터 설정을 최적화하십시오.
다른 지표와 함께 진입 신호를 필터링한다.
오프라인 손실을 차단하여 단독 손실을 제어합니다.
포지션 규모를 낮추고, 단 하나 거래의 위험을 통제한다.
더 나은 판단과 인공적인 개입을 위한 매개 변수를 추가한다.
이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.
빠른 선과 느린 선의 매개 변수를 최적화하여 다양한 품종과 시사 환경에 더 잘 적응할 수 있다. 동적 매개 변수 최적화 메커니즘을 도입할 수 있다.
MACD, 브린 밴드 등과 같은 다른 지표 결합을 추가하여 신호의 효과를 높인다.
손해 통제를 위해 이동 손해, 시간 손해, ATR 손해와 같은 손해 방지 전략을 추가하십시오.
VIX 지수와 결합하여, 공포의 상황에서 포지션을 개시하는 것을 피하십시오.
양력 지표를 도입하고, 많은 양의 에너지가 눈에 띄게 커지면 창고 건설을 고려한다.
양자 거래, 포지션 관리 등과 같은 자금 관리 전략을 최적화하십시오.
기계학습과 같은 파라미터를 자동으로 최적화한다.
쌍TEMA 포크 데드 포크 전략은 전체적으로 트렌드 지수를 사용하여 트렌드 추적하는 전략이다. 가격 트렌드를 포착하고 명확한 트렌드 아래 거래하는 데 도움이 된다. 그러나 잘못된 사용을 방지하기 위해 위험을 관리하는 데 주의를 기울여야 한다. 추가적인 최적화 테스트를 통해 전략 파라미터 설정을 더 과학적으로 합리화하고 트렌드 상황에서 더 나은 수익을 얻을 수 있다.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-11 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/
// © nickrober
//@version=4
strategy(title="TEMA Cross Backtest", shorttitle="TEMA_X_BT", overlay=true, commission_type=strategy.commission.percent, commission_value=0, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Backtest inputs
FromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input(defval=2020, title="From Year", minval=2010)
ToMonth = input(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input(defval=9999, title="To Year", minval=2017)
// Define backtest timewindow
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true
//TEMA Section
xLength = input(20, minval=1, title="Fast Length")
xPrice = close
xEMA1 = ema(xPrice, xLength)
xEMA2 = ema(xEMA1, xLength)
xEMA3 = ema(xEMA2, xLength)
xnRes = (3 * xEMA1) - (3 * xEMA2) + xEMA3
xnResP = plot(xnRes, color=color.green, linewidth=2, title="TEMA1")
yLength = input(60, minval=1, title="Slow Length")
yPrice = close
yEMA1 = ema(yPrice, yLength)
yEMA2 = ema(yEMA1, yLength)
yEMA3 = ema(yEMA2, yLength)
ynRes = (3 * yEMA1) - (3 * yEMA2) + yEMA3
ynResP = plot(ynRes, color=color.red, linewidth=2, title="TEMA2")
fill(xnResP, ynResP, color=xnRes > ynRes ? color.green : color.red, transp=75, editable=true)
// Buy and Sell Triggers
LongEntryAlert = xnRes > ynRes
LongCloseAlert = xnRes < ynRes
ShortEntryAlert = xnRes < ynRes
ShortCloseAlert = xnRes > ynRes
// Entry & Exit signals
strategy.entry("Long", strategy.long, when = xnRes > ynRes and window())
strategy.close("Long", when = xnRes < ynRes)
//strategy.entry("Short", strategy.short, when = xnRes < ynRes and window())
//strategy.close("Short", when = xnRes > ynRes)