Preis-Extreme-Reversion-Strategie auf der Grundlage der binomialen Verteilung

Schriftsteller:ChaoZhang, Datum: 2023-09-13 16:47:22
Tags:

Diese Strategie trägt den Namen Price Extreme Reversion Strategy Based on Binomial Distribution. Sie verwendet die Binomial Distribution-Funktion, um die Wahrscheinlichkeit von Preisumkehrungen zu schätzen und setzt ein Dual-EMA-System zur Erzeugung von Handelssignalen ein.

Die Logik lautet:

  1. Berechnen Sie die Anzahl der Up-Close-Bars in den letzten 20 Bars und den Prozentsatz p der Up-Perioden in den letzten 100 Bars.

  2. Stecken Sie die Periodenzählungen und die Wahrscheinlichkeit p in die binomische Verteilungsfunktion ein, um die kumulative Verteilungsfunktion (CDF) zu berechnen.

  3. Wenn die schnelle EMA die langsame EMA überschreitet, signalisiert sie eine hohe Wahrscheinlichkeit einer extremen Preisreversion und erzeugt Kaufsignale.

  4. Wenn die schnelle EMA unter die langsame EMA geht, können die Preise kurzfristig ihren Höhepunkt erreichen und hier Verkaufssignale erzeugen.

Der Vorteil dieser Strategie ist die Schätzung des extremen Preisumkehrzeitraums durch Wahrscheinlichkeitsmethoden.

In der Tat ist es nicht möglich, die Entwicklung eines Marktes zu erleichtern, wenn man nicht nur die Entwicklung des Marktes und die Entwicklung des Marktes, sondern auch die Entwicklung des Marktes und die Entwicklung des Marktes selbst berücksichtigt.


/*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")


Mehr