Estratégia de negociação de ordem cruzada de limite cruzado bidirecional


Data de criação: 2023-11-03 17:11:34 última modificação: 2023-11-03 17:11:34
cópia: 1 Cliques: 564
1
focar em
1617
Seguidores

Estratégia de negociação de ordem cruzada de limite cruzado bidirecional

Visão geral

A estratégia é uma estratégia de negociação de seguimento de tendências, que usa uma média móvel simples para determinar a direção da tendência do mercado e coloca um limite de preço de acordo com a direção da tendência na média móvel para realizar negociações de seguimento de tendências.

Princípio da estratégia

  1. Calculação de SMAs de média móvel simples, bem como a direção da tendência.

  2. Se o filtro de feedback estiver ativado, o uso de um ponto baixo acima do SMA será considerado uma tendência ascendente, e o uso de um ponto alto abaixo do SMA será considerado uma tendência descendente. Se o filtro de feedback não estiver ativado, o uso de um preço de fechamento acima do SMA será considerado uma tendência ascendente e um preço de fechamento abaixo do SMA será considerado uma tendência descendente.

  3. De acordo com a direção da tendência e com os parâmetros de direção de negociação necessários (needlong, needshort), um limite é colocado no preço SMA, com a seguinte lógica:

    • Se for necessário fazer mais (needlong é verdadeiro) e estiver em uma tendência ascendente, coloque um pedido de limite máximo no preço SMA

    • Se for necessário um short (needshort é verdadeiro) e estiver em uma tendência de queda, coloque um limite de short em um preço SMA

  4. Configurar a lógica de stop loss, se a direção da posição não coincidir com a direção da tendência, o stop loss é retirado.

  5. De acordo com o parâmetro da faixa de datas, só é possível negociar dentro da faixa de datas designada.

Análise de vantagens

  1. Usando o SMA para determinar a tendência, pode-se filtrar eficazmente o ruído do mercado e bloquear a tendência da linha mais longa.

  2. Colocar um limite de preço no preço SMA permite um melhor ponto de entrada na fase inicial da tendência.

  3. Pode optar por fazer apenas mais ou apenas menos, com a flexibilidade de se adaptar ao estilo de negociação pessoal.

  4. O mecanismo de retirada de stop loss pode ser configurado para evitar a expansão dos prejuízos.

  5. O suporte para a configuração de intervalos de tempo de negociação evita a forte volatilidade causada por eventos importantes.

Análise de Riscos

  1. O SMA é um indicador de tendência, com problemas de atraso e pode perder o ponto de viragem da tendência, resultando em perdas.

  2. O preço de entrada é limitado e não é suficientemente flexível, o que pode impedir a entrada devido a uma mudança de tendência a curto prazo.

  3. É necessário ajustar razoavelmente os parâmetros do ciclo SMA. Se não for configurado corretamente, será dado um julgamento de tendência errado.

  4. É necessário considerar a racionalidade dos parâmetros de tempo de negociação para evitar perder oportunidades de negociação ou períodos de risco.

Direção de otimização

  1. Pode-se considerar a inclusão de outros indicadores de julgamento, a verificação de vários indicadores, para evitar o atraso do SMA.

  2. Pode-se configurar o modo de rastreamento de lista de preços de fechamento, mudando para rastreamento de lista de preços de mercado quando o preço quebra o SMA, aumentando a flexibilidade de rastreamento.

  3. Otimizar dinamicamente os parâmetros do ciclo SMA para que ele se adapte ao ambiente de mercado de diferentes ciclos.

  4. A posição de parada é definida como o preço mais baixo/mais alto da tendência, em vez de uma posição SMA rígida, o que permite uma maior flexibilidade de parada.

  5. A adição de elementos de negociação algorítmica para tornar o período de negociação mais inteligente e flexível, evitando períodos de risco significativo.

Resumir

Esta estratégia é uma estratégia de acompanhamento de tendências mais simples, a ideia central é usar o SMA para determinar a direção da tendência e colocar um limite de preço no preço do SMA para acompanhar as transações. A flexibilidade, adaptabilidade e inteligência da estratégia podem ser aumentadas por meio de uma certa otimização. A estratégia é fácil de entender e apropriada para o aprendizado inicial de negociação de algoritmos, mas é necessário prestar atenção ao risco, avaliar cuidadosamente os resultados de feedback e realizar uma rigorosa monitorização e otimização.

Código-fonte da estratégia
/*backtest
start: 2022-10-27 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy(title = "Noro's CrossLimit", shorttitle = "CrossLimit", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.0)

needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, defval = close, title = "MA Source")
len = input(5, defval = 5, minval = 1, title = "SMA length")
off = input(0, defval = 0, minval = 0, title = "SMA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
rev = input(false, defval = false, title = "Reverse")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MA
ma = sma(src, len)[off]
macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)

//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = (trend == 1 and rev == false) or (trend == -1 and rev == true)
dn = (trend == -1 and rev == false) or (trend == 1 and rev == true)

//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend != 0
    strategy.entry("Long", strategy.long, lot, limit = ma, when = needlong and truetime and up)
    strategy.entry("Short", strategy.short, lot, limit = ma, when = needshort and truetime and dn)
if size > 0 and needshort == false and trend == -1
    strategy.exit("Stop Long", "Long", limit = ma)
if size < 0 and needlong == false and trend == 1
    strategy.exit("Stop Short", "Short", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")