Chiến lược đảo ngược giá cực đoan dựa trên phân phối nhị phân

Tác giả:ChaoZhang, Ngày: 2023-09-13
Tags:

Chiến lược này được đặt tên là Chiến lược đảo ngược cực đoan giá dựa trên phân phối nhị phân. Nó sử dụng hàm phân phối nhị phân để ước tính xác suất đảo ngược giá và thiết lập một hệ thống EMA kép để tạo ra tín hiệu giao dịch.

Lý do là:

  1. Tính toán số lượng các thanh gần trong 20 thanh gần đây nhất, và tỷ lệ phần trăm p của các giai đoạn gần nhất trong 100 thanh gần đây nhất.

  2. Cắm số lần và xác suất p vào hàm phân bố nhị phân để tính toán hàm phân bố tích lũy (CDF).

  3. Áp dụng EMA 10 ngày và 20 ngày cho CDF. Khi EMA nhanh vượt qua EMA chậm, nó báo hiệu khả năng cao của sự đảo ngược cực đoan giá, tạo ra tín hiệu mua.

  4. Khi EMA nhanh vượt qua dưới EMA chậm, giá có thể đạt đỉnh trong ngắn hạn, tạo ra tín hiệu bán ở đây.

Ưu điểm của chiến lược này là ước tính thời gian đảo ngược giá cực đoan thông qua các phương pháp xác suất.

Kết luận, các kỹ thuật thống kê giúp khám phá các mô hình hành vi giá một cách khách quan.


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


Thêm nữa