Chiến lược cạn kiệt dao động động lượng


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

Chiến lược cạn kiệt dao động động lượng

Tổng quan

Chiến lược kiệt quệ biến động động là một chiến lược theo dõi xu hướng sử dụng các chỉ số biến động trung bình và tỷ lệ biến động giá để giảm thiểu rủi ro giảm. Chiến lược này thuộc mô hình giao dịch quỹ chỉ số, có thể kiểm soát rủi ro một cách hiệu quả.

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

Các chỉ số cốt lõi của chiến lược này là giá trị cạn kiệt và đường trung bình cạn kiệt. Giá trị cạn kiệt là một chỉ số đo lường biến động giá, được tính từ giá đóng cửa, giá cao nhất và giá thấp nhất. Phương pháp tính toán cụ thể là: ((giá đóng cửa + giá cao nhất + giá thấp nhất - trung bình di chuyển của giá trị cạn kiệt) / ((trung động trung bình của giá trị cạn kiệt).

Ngoài ra, chiến lược cũng sử dụng đường trung bình di chuyển ngắn hạn để hỗ trợ xác định xu hướng, bao gồm đường 300 ngày, đường 150 ngày và đường 50 ngày. Khi đường trung bình di chuyển ngắn hạn đi ngang qua đường trung bình di chuyển dài hạn, biểu thị xu hướng đảo ngược, nên xem xét dừng lỗ.

MACD cũng được sử dụng để xác định điểm mua và bán trong ngắn hạn. Khi MACD trên đường đi qua đường tín hiệu, nó sẽ tăng và khi đi qua đường tín hiệu, nó sẽ giảm. RSI thấp cũng được sử dụng làm tín hiệu mua.

Các chiến lược nhập cảnh và xuất cảnh cụ thể là:

Điều kiện mua: Đường trung bình suy thoái trên giá trị suy thoái, và đường 50 ngày cao hơn đường 150 ngày; hoặc RSI thấp hơn 30.

Điều kiện dừng ngắn hạn: Đi qua đường trung bình suy thoái dưới giá trị cạn kiệt; hoặc đi qua đường tín hiệu dưới MACD.

Điều kiện dừng trung và dài hạn: vượt qua đường 150 dưới đường 50 ngày; hoặc vượt qua đường 300 dưới đường 150 ngày.

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

Chiến lược này kết hợp nhiều chỉ số để xác định xu hướng và có những lợi thế sau:

  1. Chỉ số suy thoái có thể đánh giá hiệu quả sự cân bằng và đảo ngược. Việc phát hiện sớm sự đảo ngược xu hướng là chìa khóa để kiểm soát rủi ro hiệu quả.

  2. Sử dụng trung bình di chuyển nhiều chu kỳ để đánh giá xu hướng, tránh bị lừa bởi tiếng ồn thị trường ngắn hạn.

  3. MACD hỗ trợ xác nhận điểm mua và bán, nâng cao hiệu quả chiến lược trên thực tế.

  4. Chỉ số RSI sử dụng hiệu quả của mua thấp và bán cao, mua khi vượt quá mức giảm.

  5. Một chiến lược dừng lỗ rõ ràng có thể kiểm soát hiệu quả rủi ro của mỗi giao dịch.

Rủi ro chiến lược

Chiến lược này cũng có một số rủi ro:

  1. Dựa trên nhiều chỉ số, thiết lập tham số không đúng có thể dẫn đến lỗi tín hiệu giao dịch. Cần kiểm tra lại các tham số tối ưu hóa.

  2. Chỉ số suy thoái không hoàn toàn đáng tin cậy và có thể bị hỏng khi giá giảm.

  3. Đặt điểm dừng không đúng cách có thể gây ra rung động đường siêu ngắn và bị dừng. Điểm dừng cần cân nhắc hiệu quả dài hạn của chiến lược.

  4. Các chỉ số sẽ bị mất hiệu lực khi thị trường lớn bị biến động, cần chú ý kiểm soát quy mô vị trí.

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

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Kiểm tra các kết hợp tham số khác nhau để tìm các tham số tối ưu để giảm tín hiệu sai. Các tham số quan trọng có thể điều chỉnh bao gồm chu kỳ trung bình, chu kỳ giá trị cạn kiệt, v.v.

  2. Kết hợp với chỉ số tỷ lệ dao động như ATR để điều chỉnh động độ dừng, nới lỏng độ dừng thích hợp khi dao động lớn.

  3. Tối ưu hóa quản lý vị trí, các quy tắc tỷ lệ vị trí khác nhau có thể được đặt trước cho các giai đoạn lớn khác nhau.

  4. Kết hợp các chỉ số đồ họa như đường tích lũy, đường hỗ trợ để tăng hiệu quả chiến lược trong chiến đấu.

  5. Thêm các thuật toán học máy, hỗ trợ đánh giá hiệu quả của các chỉ số quan trọng, để thực hiện tối ưu hóa động.

Tóm tắt

Chiến lược suy giảm động lực sử dụng nhiều chỉ số để đánh giá xu hướng đảo ngược để kiểm soát rủi ro giao dịch. Chiến lược này có khả năng theo dõi xu hướng, có thể đánh giá hiệu quả thời gian mua và bán.

Mã nguồn chiến lược
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 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/
// © spiritualhealer117

//@version=4

strategy("Infiten Slope Strategy", overlay=false,calc_on_every_tick = true, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)
// //TIME RESTRICT FOR BACKTESTING {
// inDateRange = (time >= timestamp(syminfo.timezone, 2003,
//          1, 1, 0, 0)) and
//      (time < timestamp(syminfo.timezone, 2021, 5, 25, 0, 0))
// //}

//OPTIMAL PARAMETERS {
daysback = 30
volumesens = 1.618
//}
//Calculating Exhaustion and Exhaustion Moving Average {
clh = close+low+high
exhaustion = (clh-sma(clh,daysback))/sma(clh,daysback)
exhaustionSma = sma(exhaustion,daysback)
//}
//Long Term Moving Averages for sell signals {
red = sma(close,300)
white = sma(close,150)
blue = sma(close,50)

plot(red,color=color.red)
plot(white,color=color.white)
plot(blue,color=color.blue)
//}
//MACD Calculation {
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=false)
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//}
//SIGMOID Bottom {
timeAdjust = 300/sma(close,500)
//}
//RSI bottom {
len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(close), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
//}

//Entry and exit conditions {
//Sell conditions
bigVolume = sma(volume,30)*volumesens
sellcond1 = crossunder(exhaustion,exhaustionSma) and volume > bigVolume
sellcond2 = crossunder(macd,signal) and volume > bigVolume
midtermsellcond1 = crossunder(blue,white)
longtermsellcond1 = white < red

//Buy conditions
buycond = crossover(exhaustion,exhaustionSma) and not longtermsellcond1
buycond2 = rsi < 30
buycond3 = crossover(blue,white) and longtermsellcond1
//}

//Backtest Run Buy/Sell Commands {
strategy.entry("buycond",true, when=buycond and bigVolume)
strategy.entry("buycond2",true, when=buycond2 and bigVolume)

strategy.close_all(when=sellcond1,comment="short term sell signal 1")
strategy.close_all(when=midtermsellcond1, comment="mid term sell signal 1")
strategy.close_all(when=longtermsellcond1, comment="long term sell signal 1")
strategy.close_all(when=sellcond2, comment="short term sell signal 2")
plot(strategy.position_size)

//Sell on last tested day (only for data collection)
//strategy.close_all(when=not inDateRange)
//}