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

Gestão dinâmica de posições Estratégia de negociação diária

Autora:ChaoZhang, Data: 2024-05-28 11:21:52
Tags:

img

Resumo

Esta estratégia emprega uma abordagem de negociação diária consistente, focada em capturar pequenas metas de lucro, mantendo uma gestão de risco rigorosa. A estratégia foi testada a partir do ano de 2021, demonstrando um desempenho robusto com uma taxa de vitória de 100%. A ideia principal da estratégia é abrir novas posições longas ou curtas no início de cada dia de negociação com base nas condições de mercado do dia anterior. Os parâmetros-chave incluem uma meta de lucro de 0,3% e um stop loss de 0,2%, com um capital inicial de US $ 1000 e uma comissão de 0,1% por negociação.

Princípios de estratégia

O princípio central desta estratégia é abrir novas posições longas ou curtas no início de cada dia de negociação com base nas tendências do mercado do dia anterior. Especificamente, se não houver posições no dia anterior, a estratégia abrirá uma posição longa no início do novo dia. Se já houver uma posição longa, a estratégia verifica se a meta de lucro de 0,3% foi atingida e fecha a posição se houver. Para posições curtas, a estratégia verifica se o stop loss de 0,2% foi atingido e, se assim for, fecha a posição curta e abre simultaneamente uma nova posição longa para substituí-la. Isso garante que a estratégia sempre mantenha a exposição ao mercado.

Vantagens da estratégia

Esta estratégia de negociação diária tem várias vantagens notáveis:

  1. Taxa de vitória de 100%: ao longo de 36 negócios fechados, a estratégia alcançou uma taxa de vitória de 100%, destacando seu desempenho consistente.
  2. Gerenciamento dinâmico de posições: em caso de uma posição curta com stop-loss, é imediatamente aberta uma nova posição longa para substituí-la, garantindo uma exposição contínua ao mercado.
  3. Gestão rigorosa do risco: a estratégia estabelece uma meta de lucro de 0,3% e um stop loss de 0,2%, controlando efetivamente o risco.
  4. Participação regular no mercado: a estratégia abre posições no início de cada dia, garantindo a participação regular no mercado.
  5. Resultados robustos de backtesting: O backtesting a partir do ano 2021 mostra um desempenho robusto, com um lucro líquido de 22,2% e um drawdown máximo de 13,75%.

Riscos estratégicos

Apesar do desempenho impressionante e do controlo dos riscos demonstrados pela estratégia, existem alguns riscos potenciais a considerar:

  1. Possibilidade de perdas consecutivas: Embora os resultados do backtesting sejam impressionantes, o desempenho passado não garante resultados futuros.
  2. Eventos de cisne negro: a estratégia pode ser vulnerável a eventos inesperados e volatilidade extrema do mercado, levando a perdas além das expectativas.
  3. Risco de alavancagem: A estratégia emprega alavancagem de 200% em cada negociação, o que amplifica os retornos potenciais, mas também aumenta o risco.

Para mitigar estes riscos, a diversificação poderia ser considerada através da aplicação de estratégias semelhantes em diferentes mercados e classes de ativos.

Orientações para a otimização da estratégia

  1. Optimização de parâmetros: a meta de lucro, o stop loss e outros parâmetros-chave podem ser refinados através de backtesting e otimização adicionais para alcançar um desempenho ideal em diferentes condições de mercado.
  2. Diversificação: a expansão da estratégia para outros mercados e classes de ativos poderia aumentar os rendimentos globais e reduzir o risco.
  3. Dimensão dinâmica das posições: o ajustamento dinâmico das dimensões das posições com base na volatilidade do mercado ou noutros fatores poderia optimizar ainda mais os rendimentos ajustados ao risco.
  4. Filtros adicionais: a introdução de indicadores técnicos adicionais ou de indicadores de sentimento do mercado como filtros poderia melhorar a qualidade dos sinais de negociação.

Conclusão

Em geral, esta estratégia de negociação diária oferece uma abordagem equilibrada para a negociação intradiária com forte ênfase no gerenciamento de risco e rentabilidade consistente. É adequada para os traders que buscam uma metodologia de negociação sistemática e disciplinada. A estratégia demonstrou resultados de backtesting impressionantes, com uma taxa de vitória de 100% e retornos robustos ajustados ao risco.


/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Daily AUD-JPY Trading", overlay=true, initial_capital=1000, currency="AUD", default_qty_type=strategy.percent_of_equity, default_qty_value=200, commission_type=strategy.commission.percent, commission_value=0.1)

// Input parameters
profit_target = input(0.3, title="Profit Target (%)") / 100
loss_target = input(0.2, title="Loss Target (%)") / 100
start_year = input(2021, title="Start Year")

// Calculate daily open and close
new_day = ta.change(time("D"))

var float entry_price_long = na
var float entry_price_short = na
var bool position_long_open = false
var bool position_short_open = false

// Date check
trade_start = timestamp(start_year, 1, 1, 0, 0)

if new_day and time >= trade_start
    // If there was a previous long position, check for profit target
    if position_long_open
        current_profit_long = (close - entry_price_long) / entry_price_long
        if current_profit_long >= profit_target
            strategy.close("AUD Trade Long", comment="Take Profit Long")
            position_long_open := false
    
    // If there was a previous short position, check for profit target
    if position_short_open
        current_profit_short = (entry_price_short - close) / entry_price_short
        if current_profit_short >= profit_target
            strategy.close("AUD Trade Short", comment="Take Profit Short")
            position_short_open := false

    // Check for daily loss condition for short positions
    if position_short_open
        current_loss_short = (close - entry_price_short) / entry_price_short
        if current_loss_short <= -loss_target
            strategy.close("AUD Trade Short", comment="Stop Loss Short")
            position_short_open := false
            
            // Open a new long position to replace the stopped short position
            strategy.entry("AUD Trade Long Replacement", strategy.long)
            entry_price_long := close
            position_long_open := true

    // Open a new long position at the start of the new day if no long position is open
    if not position_long_open and not position_short_open
        strategy.entry("AUD Trade Long", strategy.long)
        entry_price_long := close
        position_long_open := true

    // Open a new short position at the start of the new day if no short position is open
    if not position_short_open and not position_long_open
        strategy.entry("AUD Trade Short", strategy.short)
        entry_price_short := close
        position_short_open := true

// Check for continuous profit condition for long positions
if position_long_open
    current_profit_long = (close - entry_price_long) / entry_price_long
    if current_profit_long >= profit_target
        strategy.close("AUD Trade Long", comment="Take Profit Long")
        position_long_open := false

// Check for continuous profit condition for short positions
if position_short_open
    current_profit_short = (entry_price_short - close) / entry_price_short
    if current_profit_short >= profit_target
        strategy.close("AUD Trade Short", comment="Take Profit Short")
        position_short_open := false

// Plot the entry prices on the chart
plot(position_long_open ? entry_price_long : na, title="Entry Price Long", color=color.green, linewidth=2)
plot(position_short_open ? entry_price_short : na, title="Entry Price Short", color=color.red, linewidth=2)

// Display current profit/loss percentage for long positions
var label profit_label_long = na
if position_long_open and not na(entry_price_long)
    current_profit_long = (close - entry_price_long) / entry_price_long * 100
    label.delete(profit_label_long)
    profit_label_long := label.new(x=time, y=high, text="Long P/L: " + str.tostring(current_profit_long, format.percent), style=label.style_label_down, color=color.white, textcolor=color.black,xloc=xloc.bar_time)

// Display current profit/loss percentage for short positions
var label profit_label_short = na
if position_short_open and not na(entry_price_short)
    current_profit_short = (entry_price_short - close) / entry_price_short * 100
    label.delete(profit_label_short)
    profit_label_short := label.new(x=time, y=high, text="Short P/L: " + str.tostring(current_profit_short, format.percent), style=label.style_label_down, color=color.white, textcolor=color.black,xloc=xloc.bar_time)

Mais.