Esta estrategia se llama la estrategia de regreso al máximo de precios basada en una distribución binaria. Utiliza una función de distribución binaria para determinar la probabilidad de que el precio se invierta y establece una estrategia de doble línea de equilibrio EMA para generar una señal de negociación.
La lógica de cálculo de la estrategia es la siguiente:
Calcule el número de subidas de precios de cierre en las últimas 20 líneas de K y la proporción de los ciclos de subidas en las últimas 100 líneas de K.
El número de ciclos de adicción y la probabilidad p se introducen en una función de distribución binaria para calcular la función de distribución acumulativa ((CDF)).
Los EMA promedio de los días 10 y 20 de la CDF se calculan respectivamente. Cuando la línea rápida atraviesa la línea lenta, se considera que hay una mayor probabilidad de que el precio regrese al máximo, lo que genera una señal de compra.
Cuando la línea rápida atraviesa la línea lenta, el precio puede estar en el punto más alto a corto plazo, generando una señal de venta.
La ventaja de esta estrategia es que el tiempo de regreso máximo de los precios se determina mediante métodos de probabilidad. Sin embargo, los parámetros deben ajustarse al mercado para evitar la generación de demasiadas falsas señales.
En general, los métodos estadísticos ayudan a descubrir objetivamente las leyes de comportamiento de los precios. Pero, en última instancia, los comerciantes deben mantener un juicio agudo sobre el mercado y usar adecuadamente los indicadores técnicos como herramientas auxiliares.
/*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")