
Chiến lược biến động chỉ số ngẫu nhiên ngẫu nhiên là dựa trên các chỉ số ngẫu nhiên truyền thống, thêm một tham số trọng số chỉ số để điều chỉnh độ nhạy của chỉ số ngẫu nhiên, do đó tạo ra tín hiệu giao dịch. Khi chỉ số tăng khi nó quay trở lại từ vùng mua quá mức, nó làm rỗng khi nó quay trở lại từ vùng bán quá mức.
Cốt lõi của chiến lược biến động chỉ số trơn ngẫu nhiên là tham số trọng lượng chỉ số ex. Công thức tính toán cho chỉ số ngẫu nhiên truyền thống là:
s=100 * (close - 最低价) / (最高价 - 最低价)
Sau khi thêm các tham số chỉ số, công thức tính toán trở thành:
exp= ex<10? (ex)/(10-ex) : 99
s=100 * (close - 最低价) / (最高价 - 最低价)
ks=s>50? math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50
:-math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50
Điều chỉnh giá trị của exp, có thể thay đổi tác động của s đối với s, tăng giá trị exp làm cho chỉ số trở nên không nhạy cảm hơn, giảm giá trị exp làm cho chỉ số trở nên nhạy cảm hơn.
KS tạo ra tín hiệu mua khi quay ngược từ vùng mua quá mức; KS tạo ra tín hiệu bán khi quay ngược từ vùng bán quá mức.
Chiến lược biến động chỉ số trơn ngẫu nhiên có những lợi thế sau đây so với chiến lược ngẫu nhiên truyền thống:
Chiến lược biến động chỉ số trơn ngẫu nhiên cũng có những rủi ro sau:
Chiến lược di động chỉ số trơn ngẫu nhiên có thể được tối ưu hóa từ các khía cạnh sau:
Chiến lược biến động chỉ số trơn ngẫu nhiên bằng cách điều chỉnh độ nhạy của chỉ số ngẫu nhiên, tạo ra tín hiệu giao dịch đáng tin cậy hơn. Chiến lược này có thể theo dõi hiệu quả xu hướng đường dài, hoặc có thể được tối ưu hóa thành chiến lược đường ngắn.
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 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/
// © faytterro
//@version=5
strategy("Exponential Stochastic Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
len=input.int(14, "length")
ex=input.int(2, title="exp", minval=1, maxval=10)
exp= ex<10? (ex)/(10-ex) : 99
s=100 * (close - ta.lowest(low, len)) / (ta.highest(high, len) - ta.lowest(low, len))
ks=s>50? math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50 :
-math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50
plot(ks, color= color.white)
bot=input.int(20)
top=input.int(80)
longCondition = ta.crossover(ks, bot) and bar_index>0
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = ta.crossunder(ks, top) and bar_index>0
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
// strategy.close("My Long Entry Id")
alertcondition(longCondition, title = "buy")
alertcondition(shortCondition, title = "sell")
h1=hline(top)
h2=hline(bot)
h3=hline(100)
h4=hline(0)
fill(h1,h3, color= color.rgb(255,0,0,200-top*2))
fill(h2,h4, color= color.rgb(0,255,0,bot*2))