Estrategia de inversión extrema de precios basada en la distribución binomial

El autor:¿ Qué pasa?, Fecha: 2023-09-13 16: 47:22
Las etiquetas:

Esta estrategia se llama Estrategia de reversión extrema de precios basada en la distribución binomial. Utiliza la función de distribución binomial para estimar la probabilidad de reversiones de precios y establece un sistema de EMA dual para generar señales comerciales.

La lógica es:

  1. Calcular el número de barras de cerca en los últimos 20 barras, y el porcentaje p de los períodos de arriba en los últimos 100 barras.

  2. Enchufa los recuentos de períodos y la probabilidad p en la función de distribución binomial para calcular la función de distribución acumulada (CDF).

  3. Cuando la EMA rápida cruza por encima de la EMA lenta, indica una alta probabilidad de reversión extrema del precio, generando señales de compra.

  4. Cuando la EMA rápida cruza por debajo de la EMA lenta, los precios pueden estar alcanzando su punto máximo en el corto plazo, produciendo señales de venta aquí.

La ventaja de esta estrategia es estimar el tiempo de reversión extrema del precio a través de métodos de probabilidad.

En conclusión, las técnicas estadísticas ayudan a descubrir objetivamente los patrones de comportamiento de los precios.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © pieroliviermarquis

//@version=4
strategy("Binomial Strategy", overlay=false, default_qty_type= strategy.percent_of_equity, default_qty_value= 100, slippage=1, initial_capital= 10000, calc_on_every_tick=true)


factorial(length) =>
    n = 1
    if length != 0
        for i = 1 to length
            n := n * i
    n


binomial_pdf(success, trials, p) =>
    q = 1-p
    coef = factorial(trials) / (factorial(trials-success) * factorial(success))
    pdf = coef * pow(p, success) * pow(q, trials-success)
        
        
binomial_cdf(success, trials, p) =>
    q = 1-p
    cdf = 0.0
    for i = 0 to success
        cdf := cdf + binomial_pdf(i, trials, p)
        

up = close[0] > close[1] ? 1 : 0


//long-term probabilities
lt_lookback = 100
lt_up_bars = sum(up, lt_lookback)
prob = lt_up_bars/lt_lookback


//lookback for cdf
lookback = 20
up_bars = sum(up, lookback)
cdf = binomial_cdf(up_bars, lookback, prob)


//ema on cdf
ema1 = ema(cdf, 10)
ema2 = ema(cdf, 20)


plot(cdf*100)
plot(ema1*100, color=color.red)
plot(ema2*100, color=color.orange)


buy = ema1 > ema2
sell = ema1 < ema2


//////////////////////Bar Colors//////////////////

var color buy_or_sell = na

if buy == true
    buy_or_sell := #3BB3E4
else if sell == true
    buy_or_sell := #FF006E
    
barcolor(buy_or_sell)

///////////////////////////Orders////////////////

if buy
    strategy.entry("Long", strategy.long, comment="")

if sell
    strategy.close("Long", comment="Sell")


Más.