Estratégia de negociação simples baseada na sorte aleatória

Autora:ChaoZhang, Data: 2023-09-13
Tags:

Esta estratégia é chamada de Simple Trading Strategy Based on Random Luck. Ele usa métodos aleatórios para gerar sinais longos ou curtos no primeiro dia de negociação de cada semana, avaliando o desempenho da negociação aleatória através de uma grande quantidade de testes repetitivos.

Especificamente, a lógica de negociação é muito simples:

  1. Atirem uma moeda todas as segundas-feiras, gerando resultados aleatórios de caras ou caudas.

  2. Se for cabeça, vai longo naquele dia, se for cauda, vai curto naquele dia.

  3. Estabelecer o stop loss em 1 x ATR e o take profit em 1 x ATR quando longo, e vice-versa quando curto, atingindo uma relação risco-recompensação de 1:1.

  4. Mantenha a posição até ao fim da semana e depois feche.

A vantagem é o backtesting de muitos anos de dados para avaliar a taxa média de ganho de negociação aleatória.

A negociação aleatória não pode utilizar padrões de mercado e é improvável que gere ganhos sustentados.

Em conclusão, os resultados do backtest podem sugerir resultados de negociação aleatória, mas não representam estratégias realmente aplicáveis.


/*backtest
start: 2022-09-12 00:00:00
end: 2023-01-12 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("CoinFlip", overlay = true)

int result = int(math.random()+0.5)
atr_period = input(defval = 20, title = "ATR Period")
year_to_test = input(defval = 2022, title = "Year to Test")
day_of_week = input(defval = 1, title = "Day of Week")

atr = ta.atr(atr_period)

shouldSell = result == 0 and dayofweek == day_of_week
shouldBuy = result == 1 and dayofweek == day_of_week 

plotshape(result == 0 and dayofmonth == day_of_week, title="sell", location=location.abovebar, color=color.red, transp=0, style=shape.arrowdown)
plotshape(result == 1 and dayofmonth == day_of_week, title="buy", location=location.belowbar, color=color.lime, transp=0, style=shape.arrowup)


strategy.entry("short entry", strategy.short, 1000 / (1*atr), when=shouldSell and year == year_to_test)
strategy.entry("long entry", strategy.long,  1000  / (1*atr), when=shouldBuy and year == year_to_test)

strategy.exit("exit", "long entry", limit = close + 1*atr, stop = close - 1*atr, when = shouldBuy)
strategy.exit("exit", "short entry", limit = close - 1*atr, stop = close + 1*atr, when = shouldSell)



Mais.