Strategi regresi nilai ekstrem harga berdasarkan taburan binomial


Tarikh penciptaan: 2023-09-13 16:47:22 Akhirnya diubah suai: 2023-09-13 16:47:22
Salin: 0 Bilangan klik: 620
1
fokus pada
1617
Pengikut

Strategi ini dinamakan sebagai Strategi Kembalian Nilai Maksimum Harga Berasaskan Sebaran Dua. Strategi ini menggunakan fungsi sebaran dua untuk menilai kebarangkalian harga berbalik dan menetapkan strategi EMA Persamaan Ganda untuk menghasilkan isyarat perdagangan.

Logik pengiraan untuk strategi ini adalah seperti berikut:

  1. Hitung jumlah kenaikan harga penutupan dalam 20 baris K terkini, dan statistikkan peratusan kenaikan harga dalam 100 baris K terakhir.

  2. Masukkan bilangan kitaran ketagihan dan kebarangkalian p ke dalam fungsi pengedaran biner untuk mengira fungsi pengedaran kumulatif ((CDF)).

  3. EMA rata-rata pada 10 dan 20 hari untuk CDF. Apabila garis cepat melintasi garis perlahan, ia dianggap bahawa kemungkinan besar harga akan kembali ke nilai tertinggi, menghasilkan isyarat beli.

  4. Harga mungkin berada pada titik tinggi jangka pendek apabila garis cepat menembusi garis perlahan, dan pada masa ini menghasilkan isyarat menjual.

Kelebihan strategi ini adalah untuk menentukan masa pengembalian harga maksimum melalui kaedah kebarangkalian. Tetapi parameter perlu disesuaikan dengan pasaran untuk mengelakkan terlalu banyak isyarat palsu.

Secara umum, kaedah statistik membantu untuk mengesan peraturan tingkah laku harga secara objektif. Tetapi akhirnya masih memerlukan peniaga untuk menjaga penilaian yang tajam terhadap pasaran dan menggunakan petunjuk teknikal dengan betul sebagai alat bantu.

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