Strategi regresi nilai ekstrim harga berdasarkan distribusi binomial


Tanggal Pembuatan: 2023-09-13 16:47:22 Akhirnya memodifikasi: 2023-09-13 16:47:22
menyalin: 0 Jumlah klik: 620
1
fokus pada
1617
Pengikut

Strategi ini diberi nama Strategi Regressi Harga Maksimal Berdasarkan Distribusi Dua. Strategi ini menggunakan fungsi distribusi dua untuk menentukan probabilitas terjadinya harga berbalik dan menetapkan strategi EMA rata-rata ganda untuk menghasilkan sinyal perdagangan.

Logika perhitungan kebijakan adalah sebagai berikut:

  1. Hitung jumlah kenaikan harga penutupan dalam 20 garis K terakhir dan hitung persentase periode kenaikan dalam 100 garis K terakhir p。

  2. Masukkan jumlah siklus kecanduan dan probabilitas p ke dalam dua fungsi distribusi untuk menghitung fungsi distribusi kumulatif ((CDF)).

  3. EMA rata-rata pada 10 dan 20 hari untuk CDF masing-masing. Ketika garis cepat melewati garis lambat, dianggap bahwa kemungkinan besar harga akan kembali ke nilai tertinggi, menghasilkan sinyal beli.

  4. Harga mungkin berada di titik tinggi jangka pendek ketika garis cepat melewati garis lambat, yang menghasilkan sinyal jual.

Keuntungan dari strategi ini adalah bahwa harga akan kembali pada titik terendah melalui metode probabilitas. Namun, parameter harus disesuaikan dengan pasar untuk menghindari terlalu banyak sinyal palsu.

Secara keseluruhan, metode statistik membantu menemukan aturan perilaku harga secara obyektif. Namun, pada akhirnya, pedagang masih perlu menjaga penilaian pasar yang tajam dan menggunakan indikator teknis dengan benar sebagai alat bantu.

Kode 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")