A estratégia de negociação dupla TEMA é uma estratégia mais comum de acompanhamento de tendências de preços. A estratégia usa uma média móvel tripla de dois parâmetros diferentes, TEMA, que gera um sinal múltiplo quando a linha rápida atravessa a linha lenta de baixo para cima e a posição de equilíbrio quando a linha rápida atravessa a linha lenta de cima para baixo.
A estratégia usa o TEMA como principal indicador técnico. A fórmula de cálculo do TEMA é:
TEMA = (3*EMA1) - (3*EMA2) + EMA3
Dentre eles, EMA1, EMA2 e EMA3 são EMAs móveis indexadas de comprimento N. O TEMA pode responder mais rapidamente às mudanças de preço com três cálculos de EMA.
A estratégia usa o TEMA de menor comprimento como linha rápida e o TEMA de maior comprimento como linha lenta. Quando a linha rápida atravessa a linha lenta, o preço começa a subir, gerando um sinal múltiplo; Quando a linha rápida atravessa a linha lenta, o preço começa a cair, equilibrando a posição.
A chave para esta estratégia é a configuração de parâmetros e o julgamento de condições. A configuração de linhas rápidas com períodos mais curtos, como 20 dias, pode capturar mudanças de preço mais rapidamente; A configuração de linhas lentas com períodos mais longos, como 60 dias, pode eliminar falsas rupturas.
A estratégia tem as seguintes vantagens:
O uso do indicador TEMA permite uma resposta mais rápida às mudanças de preço e captação de reversões de tendências.
A estrutura TEMA dupla pode filtrar falsas rupturas e entrar em trades de tendência de alta probabilidade.
Parâmetros ajustáveis são flexíveis e podem ser ajustados de acordo com o mercado para se adaptar a diferentes situações.
A lógica da estratégia é simples e clara, a implementação é fácil de entender, e a utilização dos recursos é alta.
Os investidores podem obter melhores resultados em situações de tendência, e são mais eficazes em mercados com uma tendência clara.
A estratégia também apresenta os seguintes riscos:
A tendência é para que haja frequentes perdas de transação em situações de liquidação.
Se os parâmetros não forem ajustados corretamente, pode haver um excesso de falsos sinais.
A incapacidade de responder de forma eficaz a mudanças de mercado de curto prazo provocadas por eventos inesperados.
Há um certo atraso de tempo, e é possível que você perca a oportunidade de fazer uma ligação rápida.
O risco de abrir uma posição em um cenário de grande turbulência é grande.
É necessário ajustar os parâmetros de forma oportuna para se adaptar às mudanças do mercado, e é necessária uma certa experiência de otimização de parâmetros.
Correspondentes medidas de gestão de riscos:
Optimizar a configuração dos parâmetros para evitar ser muito sensível.
Em combinação com outros indicadores, filtra os sinais de entrada.
O uso de stop loss fora de campo garante o controle de perdas individuais.
Reduzir o tamanho das posições e controlar o risco de transações individuais.
Adição de parâmetros de otimização de julgamentos e mecanismos de intervenção humana.
A estratégia pode ser otimizada em:
Otimizar os parâmetros das linhas rápidas e lentas para que sejam mais adequadas a diferentes variedades e contextos de mercado. Pode ser introduzido um mecanismo de otimização de parâmetros dinâmicos.
Adicionando a combinação de outros indicadores, como MACD, faixa de Brin, etc., para aumentar a eficácia do sinal.
Aumentar as estratégias de stop loss, como stop loss móvel, stop loss de tempo, stop loss ATR, etc., para controlar os prejuízos.
Combinado com o índice VIX, evite abrir uma posição em um momento de pânico.
A introdução de indicadores de quantidade de energia, considerando a construção de depósitos quando a quantidade de energia é significativamente maior.
Optimizar estratégias de gestão de fundos, como negociação de quantias, gestão de posições, etc.
Optimização automática de parâmetros, incluindo aprendizado de máquina.
A estratégia global de TEMA é uma estratégia que utiliza o indicador de tendência para acompanhar a tendência. É útil para capturar a tendência dos preços e negociar sob uma tendência clara. Mas também é necessário ter cuidado para controlar o risco e evitar perdas causadas pelo uso indevido.
/*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)