Chiến lược hồi quy Karobein dựa trên xu hướng


Ngày tạo: 2023-11-03 16:56:13 sửa đổi lần cuối: 2023-11-03 16:56:13
sao chép: 1 Số nhấp chuột: 438
1
tập trung vào
1166
Người theo dõi

Chiến lược hồi quy Karobein dựa trên xu hướng

Tổng quan

Chiến lược này dựa trên chỉ số Karobein và động lực giá. Nó sử dụng chỉ số hỗ trợ động lực giá để đánh giá xu hướng và kết hợp với chỉ số Karobein để thực hiện nhập cảnh cụ thể. Chiến lược này được áp dụng cho giao dịch đường dài và đường trung bình.

Nguyên tắc chiến lược

Chiến lược này được tạo ra bằng cách tính toán tỷ lệ thay đổi của giá trong các chu kỳ khác nhau. Động lực giá tạo ra tín hiệu đa đầu khi vượt qua đường giảm động trên và tín hiệu đầu trống khi đi xuống.

Sau đó kết hợp với chỉ số Karobein trung bình trở lại để xác định thời gian nhập vào cụ thể. Chỉ số Karobein trung bình trở lại được tính toán dựa trên tính chất trung bình của giá, nó có thể phản ánh tốc độ và đường đi của giá. Chỉ số này có tính năng sóng dương tính bên trong, giúp xác định hướng và thời gian của giá.

Khi chỉ số động lực giá phát ra tín hiệu, một tín hiệu đầu vào sẽ được tạo ra nếu chỉ số quay trở về trung bình Karobein nằm trong khu vực hướng tương ứng.

Lợi thế chiến lược

  1. Chiến lược tổng hợp xem xét động lực giá và sự quay trở lại của giá trị trung bình, với khả năng đánh giá xu hướng mạnh mẽ.

  2. Chỉ số Karobein Average Regression có thể xác định chính xác các điểm biến đổi giá, cải thiện độ chính xác thời gian nhập cảnh.

  3. Chu kỳ giữ quyền tự do có thể được điều chỉnh thông qua các tham số, áp dụng cho các chu kỳ khác nhau.

  4. Có thể điều chỉnh các tham số giảm giá động trong thời gian thực để thích ứng với sự thay đổi của thị trường.

Rủi ro chiến lược

  1. Chiến lược này là một chiến lược theo dõi xu hướng, dễ bị mắc kẹt trong xu hướng dao động.

  2. Chỉ số Karobein Mean Value Regression có một mức độ chậm trễ, có thể bỏ lỡ nút biến giá.

  3. Cần chú ý đến cài đặt tham số chu kỳ giữ vị trí, thời gian giữ vị trí quá dài có thể dẫn đến tổn thất mở rộng.

  4. Cần điều chỉnh các tham số giá trị giảm động một cách thích hợp, không nên đặt quá lớn, nếu không bạn sẽ bỏ lỡ thời gian vào sân.

Giải pháp đối phó với rủi ro:

  1. Các chỉ số đánh giá xu hướng có thể dự đoán trước cơn chấn động đang đến, và dừng lỗ ngay lập tức.

  2. Lựa chọn chỉ số hồi tụ Karobein trung bình chu kỳ thích hợp, không thể quá chậm.

  3. Kiểm tra các tham số thời gian giữ khác nhau, chọn thời gian giữ phù hợp với mình.

  4. Chuyển đổi phạm vi giá trị mốc động, không được mở rộng quá mức để tránh bị mất điểm vào.

Hướng tối ưu hóa chiến lược

  1. Có thể thử nghiệm các chu kỳ tính toán động lực giá khác nhau, tham số tối ưu hóa.

  2. Có thể thêm chỉ số biến động để đánh giá động đất sắp tới, có thể đặt dừng lỗ.

  3. Có thể tối ưu hóa các tham số chỉ số Karobein Mean Value Regression để làm cho nó nhạy cảm hơn.

  4. Có thể thêm các điều kiện lọc bổ sung, chẳng hạn như chỉ số khối lượng giao dịch, để cải thiện chất lượng tín hiệu.

  5. Các tham số tối ưu hóa động có thể sử dụng thuật toán học máy.

Tóm tắt

Chiến lược này tính đến các yếu tố động lực giá cả và yếu tố quay trở về giá trị trung bình, có khả năng đánh giá xu hướng và tạo tín hiệu mạnh mẽ. Có thể điều chỉnh thông qua các tham số để thích nghi với môi trường thị trường khác nhau. Bước tiếp theo có thể được tối ưu hóa hơn nữa về thời gian nhập cảnh, dừng lỗ, làm cho chiến lược trở nên ổn định và mạnh mẽ hơn. Chiến lược này đáng để nghiên cứu và áp dụng thêm.

Mã nguồn chiến lược
/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// author: capissimo
strategy("Normalized Vector Strategy, ver.3 (sc)", precision=2, overlay=false)
// This is a scaled Normalized Vector Strategy with a Karobein Oscillator
// original: Drkhodakarami (https://www.tradingview.com/script/Fxv2xFWe-Normalized-Vector-Strategy-By-Drkhodakarami-Opensource/)

// Repainting: in general there two types of repainting:
// * when the last candle is constantly being redrawn
// * when the indicator draws a different configuration after it has been deactivated/reactivated, i.e. refreshed

// The former is a natural behaviour, which presents a constant source of frustration, 
// when a signal directly depends on the current market situation and can be overcome 
// with various indirect techniques like divergence.

// The latter suggests a flaw in the indicator design.
// Unfortunately, the Normalized Vector Strategy is repainting in the latter sense, although being
// really promising. Would be nice if our community suggests a solution to this problem ))

// This strat consistently performs with high accuracy, showing up to 96% scores
// Here are some of the best parameters:
// TF     Lookback   Performance (ca.)
// 1m     13         92%
// 3m     34         92%
// 5m     85         92%
// 15m    210        90%
// 30m    360        89%
// 1H     1440,720   94%, 87%

// The Karobein Oscillator has an intrinsic sinusoidal behaviour that helps in determining direction and timing.
// It does not repaint.
// original: alexgrover (https://www.tradingview.com/script/JiNi0f62-Karobein-Oscillator/)

scaleMinimax(X, p, min, max) => 
    hi = highest(X, p), lo = lowest(X, p)
    (max - min) * (X - lo)/(hi - lo) + min

price    = input(close,  "Price Data")
tf       = input(34,     "Timeframe", minval=1, maxval=1440)
thresh   = input(14.,    "Threshold", minval=.1, step=.1) 
div      = input(1000000,"Divisor", options=[1,10,100,1000,10000,100000,1000000,10000000,100000000])
showVol  = input(false,  "Volume")
useold   = input(true,   "Use Old System")

lime  = color.new(color.lime, 10), fuchsia = color.new(color.fuchsia, 10), 
black = color.new(color.black, 100), gray = color.new(color.gray, 50)

vol  = useold ? security(syminfo.tickerid, tostring(tf), volume, barmerge.gaps_off, barmerge.lookahead_on) 
              : security(syminfo.tickerid, tostring(tf), volume)
obv  = cum(change(price) > 0 ? vol : change(price) < 0 ? -vol : 0*vol)
prix = showVol ? obv : price
    
getdiff(prc, tf) =>
    prev  = useold ? security(syminfo.tickerid, tostring(tf), prc[1], barmerge.gaps_off, barmerge.lookahead_on) :
                     security(syminfo.tickerid, tostring(tf), prc[1])
    curr  = useold ? security(syminfo.tickerid, tostring(tf), prc, barmerge.gaps_off, barmerge.lookahead_on) : 
                     security(syminfo.tickerid, tostring(tf), prc)
    (curr/prev) - 1
    
p  = getdiff(prix, tf)
up = thresh/div, dn = -thresh/div
longCondition  = crossover(p, up)
shortCondition = crossunder(p, dn)

bg = longCondition ? lime : shortCondition ? fuchsia : black
cl = p > up ? color.green : p < dn ? color.red : color.silver

bgcolor(bg, editable=false)
plot(scaleMinimax(up, 2500, -1, 1), color=lime, editable=false, transp=0)
hline(0, linestyle=hline.style_dotted, title="base line", color=gray, editable=false)
plot(scaleMinimax(dn, 2500, -1, 1), color=fuchsia, editable=false, transp=0)
plot(scaleMinimax(p, 2500, -1, 1), color=cl, style=plot.style_histogram, transp=70, editable=false)
plot(scaleMinimax(p, 2500, -1, 1), color=cl, style=plot.style_linebr, title="prediction", transp=0, editable=false)

strategy.entry("L", true, 1, when=longCondition)
strategy.entry("S", false, 1, when=shortCondition)

alertcondition(longCondition, title='Long', message='Long Signal!')
alertcondition(shortCondition, title='Short', message='Short Signal!')

//*** Karobein Oscillator
per  = input(8, "Karobein Osc Lookback")

prix2  = ema(price, per)
a = ema(prix2 < prix2[1] ? prix2/prix2[1] : 0, per)
b = ema(prix2 > prix2[1] ? prix2/prix2[1] : 0, per)
c = (prix2/prix2[1])/(prix2/prix2[1] + b)
d = 2*((prix2/prix2[1])/(prix2/prix2[1] + c*a)) - 1

plot(scaleMinimax(d, 2500, -1, 1), color=color.orange, transp=0)