Estratégia de abertura mensal longa e de encerramento no final do mês

Autora:ChaoZhang, Data: 2023-11-02 14:23:40
Tags:

img

Esta estratégia consiste em abrir uma posição longa no primeiro dia de negociação de cada mês e fechar uma posição no último dia de negociação do mês.

Estratégia lógica

Esta estratégia define primeiro o primeiro dia de negociação (segunda-feira) de cada mês como sinal de entrada e o último dia de negociação (sexta-feira) como sinal de saída.

Ao abrir uma posição, ela será comprada diretamente se apenas a longa estiver habilitada e abrirá posições longas e curtas se a curta estiver permitida.

Ao fechar posições, fechará todas as posições se o curto for permitido e só fechará posições longas se apenas o longo for habilitado.

Para controlar os riscos, um simples stop loss também é adicionado.

Em geral, esta estratégia tem uma lógica muito simples e direta, que é a estratégia de negociação mensal mais básica adequada para demonstração de ensino.

Vantagens

  1. A lógica é simples e fácil de entender, muito adequada para os iniciantes aprenderem.

  2. Adotar um ciclo de detenção mensal, com baixa frequência de operação, adequado para investidores que buscam estabilidade.

  3. Opcional longo ou curto, pode atender às necessidades de diferentes estilos de negociação.

  4. A adição de stop loss pode controlar os riscos de ações individuais até certo ponto.

Riscos

  1. Horário fixo de entrada e saída, incapaz de ser ajustado em função das condições de mercado, risco de arbitragem.

  2. Nenhum indicador quantitativo adicionado, risco de seguir cegamente.

  3. É fácil romper com um único stop loss, incapaz de controlar efetivamente o risco final.

  4. Tamanho da posição fixo, não ajustável em função das condições de mercado.

  5. Incerteza de execução, pode não ser totalmente executado de acordo com a estratégia.

  6. Método de stop loss simples pode resultar em pequena stop loss, deve adotar stop loss dinâmico como volatility stop.

Orientações para a melhoria

  1. Introduzir indicadores quantitativos para avaliar as condições de mercado e ajustar dinamicamente o ritmo de entrada.

  2. Considerar os índices de referência para determinar a força relativa das existências para a entrada.

  3. Ajustar dinamicamente o tamanho da posição com base na volatilidade do mercado e noutros indicadores de risco.

  4. Adotar stop loss dinâmico, ou vários níveis de stop loss.

  5. Adicionar módulo de negociação de algoritmos para garantir a execução bem sucedida.

  6. Otimizar a estratégia de gestão de capital, ajustar a posição de futuros do índice de ações para diferentes ambientes de mercado.

  7. Incorporar aprendizagem de máquina para julgar a qualidade do estoque para entrada.

Resumo

Esta é uma estratégia muito básica de abertura mensal longa e fechamento no final do mês. A lógica é simples e fácil de entender, adequada para iniciantes aprenderem. Mas no uso real, o tempo de entrada/saída, métodos de stop loss, dimensionamento de posição etc. precisam ser aprimorados, a fim de lucrar persistentemente nos mercados complexos e em constante mudança. Devemos entender completamente os prós e contras da estratégia e continuar a melhorar o sistema de estratégia para desenvolver soluções quantitativas de negociação adequadas para nós mesmos.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Je_Buurman September 1st 2020

//@version=4
strategy("Buurmans Tutorial", overlay=true, initial_capital=1000, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.2)

// Some initial inputs, these are needed in case the strategy returns an error of "too many trades, > 3000" 

Year    = input(defval = 2020, title = "From Year", minval = 2010)              // 
Month   = input(defval = 1, title = "From Month", minval = 1, maxval=12)
LongOnly=input(true, title="Only go Long?")


// Phase I - the initial "Strategy" - buy Monday, sell Friday

longCondition = dayofweek==dayofweek.monday and (time > timestamp(Year, Month, 01, 00, 00, 00))
shortCondition = dayofweek==dayofweek.friday and (time > timestamp(Year, Month, 01, 23, 59, 59))


// Phase II - some rudimentary "risk-management" e.g. stoploss

Use_stoploss=input(false, title="Use stoploss ?")
stoploss_input=input(150, title="Stoploss in $")
Stoploss = Use_stoploss ? strategy.position_size>0 ? iff(strategy.position_size>0,strategy.position_avg_price - stoploss_input, na) : strategy.position_size<0 ? iff(strategy.position_size<0,strategy.position_avg_price + stoploss_input, na) : na : na
plot(Use_stoploss and strategy.position_size!=0 ? Stoploss : na, color=iff(Stoploss!=na,color.silver, color.red),style=plot.style_linebr)


// Phase III - make it more profitable by trying to filter conditions
// only buy on odd Mondays ? only buy on full moon Mondays ? something else entirely ?


// The actual trades, going Long, close Long, going Short and Stoploss

if (longCondition)
    strategy.entry("Buy on Monday", strategy.long)
    
if (shortCondition and LongOnly==false)
    strategy.entry("Short on Friday", strategy.short)

if (shortCondition and LongOnly)
    strategy.close("Buy on Monday", comment="Sell on Friday")

if (low < Stoploss)
    strategy.close("Buy on Monday", comment="Long Stopped on Someday")
if (high > Stoploss)
    strategy.close("Short on Friday", comment="Short Stopped on Someday")

Mais.