Comparação visual de estratégia vs. comprar e manter


Data de criação: 2024-01-05 15:27:26 última modificação: 2024-01-05 15:27:26
cópia: 0 Cliques: 653
1
focar em
1617
Seguidores

Comparação visual de estratégia vs. comprar e manter

Visão geral

A estratégia usa indicadores e gráficos detalhados para comparar intuitivamente a estratégia dada com a receita de compra e posse dos títulos negociados.

Princípio da estratégia

A lógica central da estratégia é traçar quatro elementos-chave para comparar as diferenças entre uma dada estratégia e uma estratégia de compra e posse:

  1. Lucro líquido da estratégia: a soma do lucro líquido da estratégia com os lucros não realizados
  2. Comprar e manter lucro líquido: não realizou lucro
  3. Divisão: lucro líquido estratégico - lucro líquido de compra e posse
  4. Estratégia VS compra e posse de indicadores estatísticos
    • O lucro líquido da estratégia é maior do que a porcentagem de Bar comprada e detida
    • A estratégia de lucro líquido é menor do que a porcentagem de Bar comprada e detida
    • Diferença entre a estratégia e o valor médio de compra

Comparando os quatro elementos acima, é possível ter uma visão clara e intuitiva das vantagens e desvantagens entre a estratégia e a simples compra e posse.

Análise de vantagens estratégicas

A estratégia tem as seguintes vantagens em comparação com uma simples comparação de compra e posse de receitas:

  1. Indicadores de comparação mais abrangentes e detalhados. Incluindo comparações em cada linha K, comparações de estatísticas globais, etc., permitem que possamos ter uma visão mais clara de onde a estratégia ganhou ou perdeu para a compra e posse.

  2. Gráficos de comparação intuitivos. Graficando o lucro líquido da estratégia, o lucro líquido da compra e a diferença entre os dois, podemos julgar o desempenho da estratégia mais rapidamente por meio de uma visão visual.

  3. Períodos de comparação personalizáveis. Podemos optar por olhar apenas para a comparação entre a estratégia e a compra e a posse em um determinado período de tempo, para melhor analisar o desempenho da estratégia.

  4. Simples e fácil de usar. A estratégia tem uma lógica de comparação completa, basta substituir o código da nossa estratégia pelo local correspondente no modelo. Não é necessário escrever a lógica de comparação.

Análise de Riscos

A estratégia se baseia principalmente na comparação de indicadores de receita de compra e posse incorporados na plataforma de negociação. Se o indicador incorporado tiver um desvio, isso afetará o resultado final da comparação. Além disso, o método de cálculo dos indicadores estatísticos na estratégia também pode ter falhas e não pode refletir com 100% de precisão a comparação entre a estratégia e as posses de compra.

Pode-se verificar ainda mais o desempenho da estratégia por meio de comparações com mais critérios, introduzindo mais métodos estatísticos. Se os indicadores de receita de compra e posse produzirem um grande desvio após a atualização da plataforma de negociação, também será necessário ajustar a lógica de comparação da estratégia.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Adicionar mais referências para comparações tripartitas ou multipartitas. Por exemplo, pode-se adicionar comparações de índices de pares ou indicadores do setor.

  2. Adicionar mais indicadores estatísticos, como a taxa de vitórias por ano, por trimestre, a diferença máxima de tempo de retirada, etc. Isso nos permite entender a estratégia em mais dimensões.

  3. Adição de configuração de parâmetros. Permite que o usuário possa personalizar mais conteúdo além do período de tempo da comparação, como comparação de referências, indicadores estatísticos, etc.

  4. Otimizar a apresentação de gráficos. A apresentação atual de um simples gráfico de linhas pode ser difícil de comparar com a estratégia de compra em quais pontos específicos do tempo, pode-se considerar a criação de gráficos em forma de coluna ou adicionar marcas para melhorar a legibilidade.

Resumir

Esta estratégia permite-nos compreender de forma muito clara e abrangente as diferenças entre a estratégia personalizada e a simples estratégia de compra e posse, através da concepção de vários indicadores de comparação detalhados e apresentação de gráficos intuitivos, o que nos ajuda a melhorar melhor o desempenho da estratégia. O seu período de comparação personalizável também permite-nos analisar de forma flexível as vantagens e desvantagens da estratégia em diferentes fases.

A estratégia pode ser uma ferramenta de análise de estratégia extremamente poderosa, se continuar a enriquecer as referências, os indicadores estatísticos e a apresentação gráfica. Ela fornece um modelo e uma estrutura para que o trabalho de análise e melhoria de estratégias seja mais eficiente.

Código-fonte da estratégia
/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("VS Buy Hold", precision=2)

bnh_info_panel = input(true, title='Enable Info Panel')
bnh_indicator_panel = input(true, title='Enable Indicator Panel')

//COMPARISON DATE RANGE//
bnh_FromYear = input(1970, title="From Year", minval=1970)
bnh_FromMonth = input(1, title="From Month", minval=1, maxval=12)
bnh_FromDay = input(1, title="From Day", minval=1, maxval=31)

bnh_ToYear = input(2050, title="To Year", minval=2010)
bnh_ToMonth = input(12, title="To Month", minval=1, maxval=12)
bnh_ToDay = input(31, title="To Day", minval=1, maxval=31)

bnh_start = timestamp(bnh_FromYear, bnh_FromMonth, bnh_FromDay, 00, 00)
bnh_finish = timestamp(bnh_ToYear, bnh_ToMonth, bnh_ToDay, 23, 59)
bnh_timeCond = time >= bnh_start and time <= bnh_finish ? true: false
    
//Note: If you are going to use the COMPARISON DATE RANGE above, apply bnh_timeCond
//      to your strategy parameters.


/////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////STRATEGY SCRIPT START//////////////////////////////////

//=========================PLACEHOLDER MA CROSS STRATEGY=========================//
fastLength = 50
slowLength = 200
price = close

mafast = sma(price, fastLength)
maslow = sma(price, slowLength)
strategy.initial_capital = 50000
positionSize = strategy.initial_capital / close

if (crossover(mafast, maslow) and bnh_timeCond) // <= bnh_timeCond added as a condition
    strategy.entry("MA2CrossLE", strategy.long, positionSize, comment="MA2CrossLE")

if (crossunder(mafast, maslow) and bnh_timeCond) // <= bnh_timeCond added as a condition
    strategy.entry("MA2CrossSE", strategy.short, positionSize, comment="MA2CrossSE")

//////////////////////////////STRATEGY SCRIPT END////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////



//STRATEGY EQUITY
strategy_pnl = strategy.netprofit + strategy.openprofit
bnh_strategy_pnl_pcnt = (strategy_pnl / strategy.initial_capital) * 100


//BUY AND HOLD EQUITY
float bnh_start_bar = na
bnh_start_bar := na(bnh_start_bar[1]) and bnh_timeCond? close : bnh_start_bar[1]
bnl_buy_hold_equity = ((close - bnh_start_bar)/bnh_start_bar) * 100


//STRATEGY VS BUY AND HOLD STATS
bnh_vs_diff = bnh_strategy_pnl_pcnt - bnl_buy_hold_equity

bnh_bar_counter = 0
bnh_bar_counter := bnh_vs_diff > 0 ? nz(bnh_bar_counter[1]) + 1 : bnh_bar_counter[1]

bnh_bar_counter2 = 0
bnh_bar_counter2 := bnh_vs_diff <= 0 ? nz(bnh_bar_counter2[1]) + 1 : bnh_bar_counter2[1]

bnh_pcnt_above = (bnh_bar_counter/(bnh_bar_counter + bnh_bar_counter2))*100
bnh_pcnt_below = (bnh_bar_counter2/(bnh_bar_counter + bnh_bar_counter2))*100

bnh_average_diff = cum(bnh_vs_diff) / (bnh_bar_counter + bnh_bar_counter2)


//PLOTS AND LABELS
bnh_diff_color = bnh_vs_diff > 0 ? color.green : color.red
plot(bnh_vs_diff, style=plot.style_columns, color=bnh_diff_color, transp=60, title='SvB')
plot(bnh_strategy_pnl_pcnt, color=color.yellow, linewidth=2, title="SR")
plot(bnl_buy_hold_equity, color=color.blue, title="BHR")

// draw_IndicatorLabel(_text, _x, _y, label_color, font_color)=>
//     string_text = _text
//     var label la_indicator = na
//     label.delete(la_indicator)
//     la_indicator := label.new(
//          x=_x, y=_y, 
//          text=string_text, xloc=xloc.bar_index, yloc=yloc.price, 
//          color=label_color, style=label.style_labeldown, textcolor=font_color, size=size.small)

// draw_InfoPanel(_text, _x, _y, font_size)=>
//     var label la_panel = na
//     label.delete(la_panel)
//     la_panel := label.new(
//          x=_x, y=_y, 
//          text=_text, xloc=xloc.bar_time, yloc=yloc.price, 
//          color=color.new(#383838, 5), style=label.style_labelup, textcolor=color.white, size=font_size)

// if bnh_indicator_panel         
//     draw_IndicatorLabel("Difference", bar_index, bnh_vs_diff, color.new(color.gray, 40), color.white)
//     draw_IndicatorLabel("Strategy P/L", bar_index, bnh_strategy_pnl_pcnt, color.new(color.yellow, 50), color.white)
//     draw_IndicatorLabel("Buy & Hold P/L", bar_index, bnl_buy_hold_equity, color.new(color.blue, 50), color.white)

// info_panel_x = time_close + round(change(time) * 200)
// info_panel_y = max(max(bnl_buy_hold_equity, bnh_strategy_pnl_pcnt), bnh_vs_diff) + abs(bnh_vs_diff * 0.25)


// title = "STRATEGY vs BUY & HOLD STATS"
// row0 = "-----------------------------------------------------"
// row1 = 'Bars Above Buy & Hold: ' + tostring(bnh_pcnt_above, '#.##') + '%'
// row2 = 'Bars Below Buy & Hold: ' + tostring(bnh_pcnt_below, '#.##') + '%'
// row3 = 'All Time Ave. Difference: ' + tostring(bnh_average_diff, '#.##') + '%'

// panel_text = '\n' + title + '\n' + row0 + '\n' + row1 + '\n\n' + row2 + '\n\n' + row3 + '\n'

// if bnh_info_panel
//     draw_InfoPanel(panel_text, info_panel_x, info_panel_y, size.normal)