Chiến lược hồi quy giá trị cực trị dựa trên phân phối nhị thức


Ngày tạo: 2023-09-13 16:47:22 sửa đổi lần cuối: 2023-09-13 16:47:22
sao chép: 0 Số nhấp chuột: 620
1
tập trung vào
1617
Người theo dõi

Chiến lược này được gọi là Chiến lược quay trở lại giá trị cực đại dựa trên phân phối kép. Chiến lược này sử dụng chức năng phân phối kép để đánh giá xác suất biến đổi giá và đặt chiến lược hai đường EMA để tạo ra tín hiệu giao dịch.

Logic tính toán của chiến lược là:

  1. Tính số lần giá đóng cửa tăng trong 20 dòng K gần đây nhất và tính tỷ lệ của chu kỳ tăng trong 100 dòng K gần đây nhất.

  2. Lấy số lượng chu kỳ nghiện và xác suất p vào hàm phân phối nhị phân để tính toán hàm phân phối tích lũy ((CDF)).

  3. Đường trung bình EMA được tính cho CDF vào ngày 10 và 20 lần lượt. Khi đường nhanh đi qua đường chậm, người ta cho rằng có nhiều khả năng giá sẽ quay trở lại mức cực đoan, tạo ra tín hiệu mua.

  4. Giá có thể ở mức cao trong thời gian ngắn khi đường nhanh đi qua đường chậm, tạo ra tín hiệu bán.

Lợi thế của chiến lược này là xác định thời gian quay trở lại giá trị tối đa bằng phương pháp xác suất. Tuy nhiên, các tham số cần được điều chỉnh theo thị trường để tránh tạo ra quá nhiều tín hiệu giả.

Nhìn chung, các phương pháp thống kê có thể giúp phát hiện một cách khách quan các quy luật về hành vi giá cả. Tuy nhiên, cuối cùng, các nhà giao dịch vẫn cần phải có sự phán đoán sắc nét về thị trường và sử dụng các chỉ số kỹ thuật một cách thích hợp như một công cụ hỗ trợ.

Mã nguồn chiến lược
/*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")