Estratégia diária de comparação de preços de fechamento

Autora:ChaoZhang, Data: 2023-09-17 18:28:31
Tags:

Resumo

Esta estratégia determina a direção, comparando o preço de fechamento do bar atual com o preço de fechamento do bar anterior. É uma estratégia simples de tendência, indo longo quando o preço sobe e curto quando o preço cai. Não são necessários indicadores complexos, apenas a informação de preço mais básica é usada para determinar a direção da tendência.

Estratégia lógica

  1. Calcular a diferença percentual entre o preço de fechamento da barra atual e o preço de fechamento da barra anterior.

  2. Se a percentagem for maior que o limiar, indica que o preço está a subir, vamos longos.

  3. Se a percentagem for inferior ao limiar negativo, indica queda do preço, vá curto.

  4. O limiar está definido em 0, o que significa ir longo em qualquer aumento e curto em qualquer queda.

  5. Nenhuma lógica de stop loss ou take profit, contando apenas com a persistência da tendência para a rentabilidade.

Análise das vantagens

  1. Método de determinação de tendências muito simples e intuitivo, fácil de compreender e implementar.

  2. Não é necessário calcular quaisquer indicadores técnicos, reduzindo o consumo de recursos.

  3. Concentra-se apenas na informação básica sobre os preços, evitando ruídos desnecessários dos indicadores.

  4. Excelentes resultados dos backtests, mas a performance ao vivo é questionável.

Análise de riscos

  1. A ausência de stop loss expõe riscos de perda ilimitados.

  2. Ineficazes em mercados agitados, propensos a ficarem presos.

  3. Existem riscos de sobreajuste, desempenho ao vivo ainda a ser validado.

  4. Seguir a tendência pura não pode bloquear os lucros, o lucro realizado é limitado.

Orientações de otimização

  1. Adicionar stop loss para controlo de risco.

  2. Incorporar medidas de volatilidade para reduzir as perturbações nos mercados agitados.

  3. Teste diferentes parâmetros de período para aumentar a robustez.

  4. Adicionar indicadores de determinação da tendência para evitar movimentos irracionais dos preços.

  5. Otimizar o lucro tomando como olhar para trás o preço mais alto para expandir o potencial de lucro.

Resumo

A estratégia é baseada numa ideia simples, mas o seu desempenho é questionável.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Daily Close Comparison Strategy (by ChartArt)", shorttitle="CA_-_Daily_Close_Strat", overlay=false)

// ChartArt's Daily Close Comparison Strategy
//
// Version 1.0
// Idea by ChartArt on February 28, 2016.
//
// This strategy is equal to the very
// popular "ANN Strategy" coded by sirolf2009,
// but without the Artificial Neural Network (ANN).
//
// Main difference besides stripping out the ANN
// is that I use close prices instead of OHLC4 prices.
// And the default threshold is set to 0 instead of 0.0014
// with a step of 0.001 instead of 0.0001.
//
// This strategy goes long if the close of the current day
// is larger than the close price of the last day.
// If the inverse logic is true, the strategy
// goes short (last close larger current close).
//
// This simple strategy does not have any
// stop loss or take profit money management logic.
//
// List of my work: 
// https://www.tradingview.com/u/ChartArt/
// 
//  __             __  ___       __  ___ 
// /  ` |__|  /\  |__)  |   /\  |__)  |  
// \__, |  | /~~\ |  \  |  /~~\ |  \  |  
// 
// 

threshold = input(title="Price Difference Threshold", type=float, defval=0, step=0.001)

getDiff() =>
    yesterday=security(syminfo.tickerid, 'D', close[1])
    today=security(syminfo.tickerid, 'D', close)
    delta=today-yesterday
    percentage=delta/yesterday
    
closeDiff = getDiff()
 
buying = closeDiff > threshold ? true : closeDiff < -threshold ? false : buying[1]

hline(0, title="zero line")

bgcolor(buying ? green : red, transp=25)
plot(closeDiff, color=silver, style=area, transp=75)
plot(closeDiff, color=aqua, title="prediction")

longCondition = buying
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = buying != true
if (shortCondition)
    strategy.entry("Short", strategy.short)

Mais.