O recurso está a ser carregado... Carregamento...

Estratégia da ETI Crossover

Autora:ChaoZhang, Data: 2024-06-07 16:36:24
Tags:ETIEMAATRTEMA

img

Resumo

Esta estratégia usa o indicador TSI como o principal sinal de negociação. Quando o indicador TSI cruza sua linha de sinal e o indicador TSI está abaixo do limite inferior ou acima do limite superior, a estratégia gerará um sinal de posição aberta. Ao mesmo tempo, a estratégia também usa indicadores como EMA e ATR para otimizar o desempenho da estratégia. A estratégia só é executada dentro de sessões de negociação específicas e define uma frequência mínima de negociação para controlar o excesso de negociação.

Princípio da estratégia

  1. Calcular o valor do indicador da ETI e o valor da linha de sinalização.
  2. Determinar se o tempo atual está dentro do intervalo de negociação admissível e se a barra atual é pelo menos o número mínimo especificado de barras de distância da última negociação.
  3. Se o indicador da ETI atravessar a linha de sinal por baixo e a linha de sinal estiver abaixo do limite inferior especificado, é gerado um sinal longo.
  4. Se o indicador da ETI atravessar abaixo da linha de sinal a partir de cima e a linha de sinal estiver acima do limite superior especificado, é gerado um sinal curto.
  5. Se estiver em posição longa, quando o indicador da ETI cruzar abaixo da linha de sinal, fechar todas as posições longas.
  6. Se estiver em posição curta, quando o indicador da ETI ultrapassar a linha de sinal, fechar todas as posições curtas.

Análise das vantagens

  1. A lógica estratégica é clara, utilizando a cruz do indicador da ETI como única condição para a abertura e encerramento de posições, que é simples e fácil de entender.
  2. Ao limitar a sessão de negociação e a frequência de negociação, o risco de excesso de negociação é efetivamente controlado.
  3. A posição deve ser fechada de forma decisiva, controlando a exposição ao risco de uma única transação.
  4. Para facilitar o julgamento, são utilizados múltiplos indicadores, como a EMA, a ATR, etc., aumentando a robustez da estratégia.

Análise de riscos

  1. A estratégia é bastante sensível à selecção dos parâmetros dos indicadores da ETI e os diferentes parâmetros irão trazer grandes diferenças de desempenho, que devem ser escolhidas cuidadosamente.
  2. As condições de abertura e de fechamento são relativamente simples, não implicam um julgamento da tendência nem restrições de volatilidade e podem resultar em perdas em mercados oscilantes.
  3. A falta de gestão de posições e de gestão de fundos dificulta o controlo da retirada, uma vez que uma perda contínua conduzirá a uma grande retirada.
  4. Só fazendo uma inversão longa-curta, não acompanhando a tendência, perderá muitas oportunidades de tendência.

Direcção de otimização

  1. Otimizar os parâmetros do indicador da ETI para encontrar uma combinação de parâmetros mais robusta.
  2. Adicionar indicadores de avaliação da tendência, tais como MA ou MACD, para selecionar a direção da tendência ao abrir uma posição para melhorar a taxa de sucesso.
  3. Adicionar indicadores de volatilidade, tais como ATR, para reduzir o número de transações em ambientes de mercado de alta volatilidade.
  4. Introduzir um modelo de gestão de posições para ajustar dinamicamente o tamanho da posição de cada operação com base no desempenho recente do mercado e no valor líquido da conta.
  5. A lógica de rastreamento de tendências pode ser adicionada para continuar a manter posições no mercado de tendências para melhorar a capacidade da estratégia de capturar grandes tendências.

Resumo

Esta estratégia é baseada no indicador TSI e gera sinais de negociação através do cruzamento do TSI e sua linha de sinal. Ao mesmo tempo, limita o tempo e a frequência de negociação para controlar riscos. A vantagem da estratégia é que a lógica é simples e clara, e para a perda e o lucro em tempo hábil. No entanto, a desvantagem é a falta de julgamento de tendência e gestão de posição, sensibilidade aos parâmetros TSI, e só pode capturar a reversão de mercado enquanto falta mercado de tendência. No futuro, a estratégia pode ser melhorada a partir de aspectos como julgamento de tendência e volatilidade, gestão de posição e otimização de parâmetros.


/*backtest
start: 2024-05-30 00:00:00
end: 2024-06-06 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nikgavalas

//@version=5
strategy("TSI Entries", overlay=true, margin_long=100, margin_short=100)

//
// INPUTS
//

// Define the start and end hours for trading
string sessionInput = input("1000-1530", "Session")

// Day of the week.
string daysInput = input.string("23456", tooltip = "1 = Sunday, 7 = Saturday")

// Minimum number of bar's between entries
requiredBarsBetweenEntries = input.int(12, "Required Bars Between Entries")

// Show debug labels
bool showDebugLabels = input.bool(false, "Show Debug Labels")

//
// FUNCTIONS
//

//@function Define the triple exponential moving average function
tema(src, len) => tema = 3 * ta.ema(src, len) - 3 * ta.ema(ta.ema(src, len), len) + ta.ema(ta.ema(ta.ema(src, len), len), len)

//@function Atr with EMA
atr_ema(length) =>
    trueRange = na(high[1])? high-low : math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
    //true range can be also calculated with ta.tr(true)
    ta.ema(trueRange, length)

//@function Check if time is in range
timeinrange() => 
    sessionString = sessionInput + ":" + daysInput
    inSession = not na(time(timeframe.period, sessionString, "America/New_York"))

//@function Displays text passed to `txt` when called.
debugLabel(txt, color, y, style) =>
    if (showDebugLabels) 
        label.new(bar_index, y, text = txt, color = color, style = style, textcolor = color.black, size = size.small)


//
// INDICATOR CODE
//

long = input(title="TSI Long Length", defval=8)
short = input(title="TSI Short Length", defval=8)
signal = input(title="TSI Signal Length", defval=3)
lowerLine = input(title="TSI Lower Line", defval=-50)
upperLine = input(title="TSI Upper Line", defval=50)

price = close
double_smooth(src, long, short) =>
	fist_smooth = ta.ema(src, long)
	ta.ema(fist_smooth, short)

pc = ta.change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(math.abs(pc), long, short)
tsiValue = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
signalValue = ta.ema(tsiValue, signal)

//
// COMMON VARIABLES
//

var color trendColor = na
var int lastEntryBar = na

bool tradeAllowed = timeinrange() == true and (na(lastEntryBar) or bar_index - lastEntryBar > requiredBarsBetweenEntries)

// 
// CROSSOVER
//

bool crossOver = ta.crossover(tsiValue, signalValue)
bool crossUnder = ta.crossunder(tsiValue,signalValue)

if (tradeAllowed) 
	if (signalValue < lowerLine and crossOver == true)
		strategy.entry("Up", strategy.long)
		lastEntryBar := bar_index

	else if (signalValue > upperLine and crossUnder == true)

		strategy.entry("Down", strategy.short)
		lastEntryBar := bar_index

// 
// EXITS
// 

if (strategy.position_size > 0 and crossUnder == true)
	strategy.close("Up", qty_percent = 100)

else if (strategy.position_size < 0 and crossOver == true)
	strategy.close("Down", qty_percent = 100)


Relacionados

Mais.