
Chiến lược này dựa trên một tổ hợp các chỉ số đa dạng để tìm kiếm cơ hội giao dịch trong khoảng thời gian Bitcoin. Các chỉ số như MACD, RSI, Stoch RSI được sử dụng để đánh giá xu hướng hiện tại để phát ra tín hiệu mua và bán.
Chiến lược này sử dụng các chỉ số sau:
MACD (快线-慢线)Dòng tín hiệu của nó. Khi MACD đi qua dây tín hiệu, nó là tín hiệu mua, khi đi qua 0 là tín hiệu bán.
Chỉ số RSI tương đối mạnh yếu.
Stoch RSI. Stoch RSI phản ánh tình trạng RSI mua và bán quá mức. Stoch RSI cung cấp tín hiệu mua khi nó thấp hơn ngưỡng đặt và tín hiệu bán khi nó cao hơn ngưỡng đặt.
Hướng đường trung bình. Đánh dấu bán khi giá đóng cửa dưới đường trung bình
Dựa trên các chỉ số này, tín hiệu giao dịch của chiến lược này là:
Giao thức muaKhi:(Stoch RSI < 设定阈值) 且 (MACD上穿阈值 或 RSI上穿阈值)Thời gian
Bán tín hiệuKhi:(MACD下穿0) 且 (收盘价下穿均线 或 Stoch RSI > 设定阈值)Thời gian
Bằng cách kết hợp nhiều chỉ số, bạn có thể đánh giá chính xác hơn về hướng xu hướng hiện tại và phát ra tín hiệu giao dịch tại các điểm biến xu hướng.
Sử dụng nhiều chỉ số kết hợp có thể cải thiện độ chính xác phán đoán và tránh các tín hiệu sai do chỉ số đơn lẻ.
Chỉ số MACD có thể xác định hướng và sức mạnh của xu hướng hiện tại. Chỉ số RSI phản ánh tình trạng quá mua quá bán.
Các tín hiệu mua và bán được thiết lập với các điều kiện kết hợp của nhiều chỉ số, có thể lọc ra một số tín hiệu giả và tránh giao dịch không cần thiết.
Chiến lược này được đánh giá lại bắt đầu từ ngày 1 tháng 1 năm 2017 và bao gồm các tình huống tăng giá lớn của Bitcoin vào cuối năm 2017 để kiểm tra hiệu quả của chiến lược trong tình huống này.
Chiến lược này bao gồm các thiết lập dừng lỗ để kiểm soát tổn thất của một giao dịch.
Mặc dù kết hợp nhiều chỉ số có thể giúp tăng độ chính xác, nhưng các chỉ số có thể khác nhau, dẫn đến nguy cơ sai lầm.
Mức dừng lỗ tối ưu hóa chiến lược, có thể cần điều chỉnh theo các tình huống khác nhau. Việc dừng lỗ quá rộng sẽ làm tăng tổn thất đơn lẻ, và dừng lỗ quá hẹp sẽ bị cắt giảm.
Chiến lược cấp ngày, không thể thực hiện các hoạt động chi tiết trong một khoảng thời gian ngắn hơn. Không thể phản ứng khi sự kiện bất ngờ gây ra biến động lớn trong thời gian ngắn.
Chiến lược này chỉ phản ánh một phần lịch sử và có thể có nguy cơ quá phù hợp. Cần thử nghiệm trong một phạm vi thời gian dài hơn và trong nhiều thị trường hơn để xác minh hiệu quả của chiến lược.
Kiểm tra nhiều hơn các kết hợp của các chỉ số để tìm kiếm chiến lược kết hợp tốt hơn.
Các tham số chỉ số được tối ưu hóa để tìm các giá trị tham số phù hợp hơn.
Kiểm tra các mức độ dừng khác nhau để tìm ra sự kết hợp tốt nhất giữa tỷ lệ dừng và dừng.
Các nhà khoa học đã nghiên cứu về sự tương đồng giữa các trường hợp này trong lịch sử.
Cố gắng sử dụng chiến lược này trong một khoảng thời gian cao hơn và giao dịch thường xuyên hơn.
Chiến lược này kết hợp nhiều chỉ số như MACD, RSI, Stoch RSI để xác định hướng xu hướng hiện tại của Bitcoin, và phát ra tín hiệu giao dịch tại điểm biến động xu hướng. Trong khi thiết lập lệnh dừng để kiểm soát rủi ro giao dịch. Chiến lược này đã thực hiện tốt, nhưng vẫn cần được kiểm chứng trong thời gian dài hơn và trên nhiều thị trường hơn để tránh rủi ro phù hợp.
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Original code is from CredibleHulk and modified by bennef
strategy("BTC Daily Strategy BF", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)
/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
/////////////// Input Params ///////////////
rsi_threshold = input(30)
rsi_length = input(4)
srsi_length = input(8)
srsi_smooth = input(4)
srsi_sell_threshold = input(57)
length = input(14)
dma_signal_threshold = input(-1)
fastLength = input(11)
slowlength = input(18)
MACDLength = input(6)
MACD_signal_threshold = input(-2)
short_loss_tol = input(5)
long_loss_tol = input(5)
stop_level_long = strategy.position_avg_price * (1 - long_loss_tol / 100.0)
stop_level_short = strategy.position_avg_price * (1 + short_loss_tol / 100.0)
/////////////// Signal generation ///////////////
// MACD
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
// RSI and Stochastic RSI
rs = rsi(close, rsi_length)
k = sma(stoch(rs, rs, rs, srsi_length), srsi_smooth)
// SMA
norm = sma(ohlc4, length)
threshold = close - norm
/////////////// Strategy ///////////////
long = ((crossover(delta, MACD_signal_threshold) or crossover(rs, rsi_threshold)) and k < srsi_sell_threshold)
short = (crossunder(delta, 0) or (crossunder(threshold, dma_signal_threshold) and k > srsi_sell_threshold))
if testPeriod()
strategy.entry("L", strategy.long, when = long)
strategy.entry("S", strategy.short, when = short)
strategy.exit("stop loss L", from_entry = "L", stop = stop_level_long)
strategy.exit("stop loss S", from_entry = "S", stop = stop_level_short)
/////////////// Plotting ///////////////
// MACD
plot(delta, color = delta > MACD_signal_threshold ? color.lime : delta < 0 ? color.red : color.yellow)
MACD_signal_threshold_line = hline(MACD_signal_threshold, color = color.yellow, title = "MACD Signal Threshold")
// RSI
plot(rs, color = rs > rsi_threshold ? color.lime : color.fuchsia)
rsi_threshold_line = hline(rsi_threshold, color = color.fuchsia, title = "RSI Threshold")
// Stochastic RSI
plot(k, color = k > srsi_sell_threshold ? color.lime : color.red)
srsi_sell_threshold_line = hline(srsi_sell_threshold, color = color.white, title = "Stoch RSI Threshold")
// SMA
plot(threshold / 100, color = threshold < dma_signal_threshold ? color.red : color.blue)
dma_signal_threshold_line = hline (dma_signal_threshold, color = color.blue, title = "DMA Signal Threshold")
bgcolor(long ? color.lime : short ? color.red : na, transp=50)