Cette stratégie s'appelle
La logique est la suivante:
Calculer le nombre de barres rapprochées au cours des 20 dernières barres et le pourcentage p de périodes rapprochées au cours des 100 dernières barres.
Branchez le nombre de périodes et la probabilité p dans la fonction de distribution binomiale pour calculer la fonction de distribution cumulative (CDF).
Appliquer des EMA de 10 et 20 jours au CDF. Lorsque l'EMA rapide dépasse l'EMA lente, cela indique une forte probabilité d'une réversion extrême des prix, générant des signaux d'achat.
Lorsque l'EMA rapide traverse le niveau inférieur à l'EMA lente, les prix peuvent atteindre un sommet à court terme, produisant des signaux de vente ici.
L'avantage de cette stratégie est d'estimer le moment de l'extrême réversion du prix à l'aide de méthodes de probabilité.
En conclusion, les techniques statistiques permettent de découvrir objectivement les tendances du comportement des prix.
/*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")