Chiến lược này là một chiến lược giao dịch tiền điện tử dựa trên MACD kết hợp với các chỉ số ngẫu nhiên. Nó tạo ra tín hiệu giao dịch để nắm bắt sự thay đổi xu hướng của thị trường tiền điện tử bằng cách tính toán MACD của giá Bitcoin và áp dụng các chỉ số ngẫu nhiên.
Chiến lược này bắt đầu bằng cách tính toán MACD. MACD đại diện cho đường trung bình di chuyển, một loại chỉ số theo dõi xu hướng. Nó bao gồm đường nhanh và đường chậm, đường nhanh là đường trung bình di chuyển chỉ số ngắn hơn và đường chậm là đường trung bình di chuyển chỉ số dài hơn.
Sau khi tính toán MACD, chiến lược này áp dụng chỉ số ngẫu nhiên% K vào MACD. Công thức tính toán của chỉ số ngẫu nhiên% K là:
%K = (giá đóng cửa hiện tại - giá thấp nhất trong N ngày) / (giá lớn nhất trong N ngày - giá thấp nhất trong N ngày) * 100
Chỉ số ngẫu nhiên phản ánh sự thay đổi của giá cổ phiếu ra khỏi phạm vi gần nhất. Định mức% K dao động từ 20 đến 80 đại diện cho việc giá cổ phiếu đang ở trong phạm vi cân bằng.
Chiến lược này kết hợp tín hiệu giao dịch của chỉ số MACD và chỉ số ngẫu nhiên% K để giao dịch trong thị trường tiền điện tử. Nó tạo ra tín hiệu mua khi chỉ số ngẫu nhiên% K vượt qua 20 lên; nó tạo ra tín hiệu bán khi chỉ số ngẫu nhiên% K vượt qua 80 xuống.
Chiến lược này kết hợp phân tích xu hướng và chỉ số mua bán quá mức để xác định hiệu quả các điểm biến động quan trọng của thị trường. So với việc sử dụng chỉ số MACD hoặc chỉ số ngẫu nhiên, việc sử dụng kết hợp %K và MACD có thể làm tăng độ tin cậy của tín hiệu và giảm tín hiệu giả.
Ngoài ra, chiến lược này áp dụng các chỉ số kỹ thuật thường được sử dụng trong thị trường chứng khoán cho giao dịch tiền điện tử, một cách sử dụng trên khắp thị trường. Chỉ số này cũng áp dụng cho thị trường tiền kỹ thuật số và thậm chí có hiệu quả tốt hơn do sự biến động cao của tiền kỹ thuật số.
Rủi ro lớn nhất của chiến lược này là thị trường tiền điện tử biến động rất cao, dễ tạo ra tín hiệu giả dẫn đến tổn thất giao dịch. Ngoài ra, khi các chỉ số kỹ thuật phát đi tín hiệu, giá có thể đã có một sự thay đổi lớn, có nguy cơ không thể nắm bắt được xu hướng ban đầu.
Để kiểm soát những rủi ro này, nên sử dụng dừng di chuyển để khóa lợi nhuận và tránh tổn thất mở rộng hơn nữa. Đồng thời, bạn cũng có thể điều chỉnh các tham số thích hợp, sử dụng độ dài chu kỳ khác nhau để khám phá nhiều cơ hội tiềm năng hơn.
Đầu tiên, chiến lược này có thể thử kết hợp các đường trung bình di chuyển với các chỉ số dao động, chẳng hạn như Brinband, để thiết lập các tham số dao động để xác định tính hiệu quả của đột phá và tránh các tín hiệu giả.
Thứ hai, có thể đưa vào mô hình học máy để đào tạo dữ liệu lịch sử, xây dựng mô hình rừng ngẫu nhiên hoặc mạng lưới thần kinh LSTM, hỗ trợ đánh giá hiệu quả của tín hiệu chỉ số.
Thứ ba, tăng cơ chế dừng lỗ. Khi giá chuyển động theo hướng bất lợi vượt quá một mức độ nhất định, hãy tự động thực hiện dừng lỗ để kiểm soát rủi ro.
Chiến lược này kết hợp chỉ số MACD và chỉ số ngẫu nhiên %K, sử dụng phương pháp hai chỉ số xác nhận tín hiệu lẫn nhau để xây dựng chiến lược giao dịch tiền điện tử. Chiến lược chỉ số kết hợp này có thể nâng cao độ chính xác của tín hiệu đến một mức độ nhất định. Nhưng chúng tôi cũng cần cảnh giác về hiệu ứng nhiễu và lagging có thể gây ra bởi sự kết hợp chỉ số quá phức tạp.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Schaff Trend Cycle Strategy", shorttitle="STC Backtest", overlay=true)
fastLength = input(title="MACD Fast Length", defval=23)
slowLength = input(title="MACD Slow Length", defval=50)
cycleLength = input(title="Cycle Length", defval=10)
d1Length = input(title="1st %D Length", defval=3)
d2Length = input(title="2nd %D Length", defval=3)
src = input(title="Source", defval=close)
highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true)
macd = ema(src, fastLength) - ema(src, slowLength)
k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))
d = ema(k, d1Length)
kd = nz(fixnan(stoch(d, d, d, cycleLength)))
stc = ema(kd, d2Length)
stc := stc > 100 ? 100 : stc < 0 ? 0 : stc
upper = input(75, defval=75)
lower = input(25, defval=25)
long = crossover(stc, lower) ? lower : na
short = crossunder(stc, upper) ? upper : na
long_filt = long and not short
short_filt = short and not long
prev = 0
prev := long_filt ? 1 : short_filt ? -1 : prev[1]
long_final = long_filt and prev[1] == -1
short_final = short_filt and prev[1] == 1
//alertcondition(long_final, "Long", message="Long")
//alertcondition(short_final,"Short", message="Short")
//plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar)
//plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar)
strategy.entry("long", strategy.long, when = long )
strategy.entry("short", strategy.short, when = short)