Chiến lược này sử dụng các chỉ số động lực ADX, RSI và Bollinger Bands để xác định xu hướng thị trường và tình huống mua quá mức / bán quá mức, để thực hiện giao dịch tự động để mua thấp và bán cao.
Chỉ số ADX xác định xu hướng. Khi ADX lớn hơn 32, nó cho thấy thị trường đang có xu hướng.
Chỉ số RSI xác định mức mua quá mức / bán quá mức. Khi RSI vượt trên 30, nó báo hiệu thị trường bán quá mức. Khi RSI vượt dưới 70, nó báo hiệu thị trường mua quá mức.
Bollinger Bands xác định sự củng cố và phá vỡ. Khi giá đóng phá vỡ trên dải trên, nó báo hiệu kết thúc sự củng cố và phá vỡ tăng. Khi giá đóng phá vỡ dưới dải dưới, nó báo hiệu kết thúc sự củng cố và phá vỡ giảm.
Dựa trên các chỉ số trên, chiến lược giao dịch được xác định như sau:
Điều kiện mua:
Điều kiện bán:
Chiến lược này sử dụng nhiều chỉ số để xác định điều kiện thị trường, tránh khả năng sai lầm khi dựa vào một chỉ số duy nhất. Bằng cách xác định xu hướng và tình trạng mua quá mức / bán quá mức, nó có thể nắm bắt hiệu quả các bước ngoặt của thị trường và đạt được mức bán thấp.
So với việc sử dụng chỉ số xu hướng một mình, chiến lược này có thể nắm bắt các cơ hội ngắn hạn một cách kịp thời hơn. So với việc sử dụng chỉ các dao động, chiến lược này có thể nắm bắt tốt hơn hướng xu hướng. Do đó, nó giữ được lợi thế theo dõi xu hướng, đồng thời có tính linh hoạt của giao dịch đảo ngược trung bình. Đây là một chiến lược định lượng có khả năng hiệu quả.
Những rủi ro chính của chiến lược này bao gồm:
Rủi ro của các tín hiệu sai từ các chỉ số. Các chỉ số có thể thất bại khi thị trường gặp các sự kiện cực đoan.
Rủi ro của các điểm dừng quá chặt chẽ.
Nguy cơ quá phù hợp: Nếu các tham số chỉ số chỉ được điều chỉnh dựa trên dữ liệu lịch sử, sự ổn định sẽ đáng nghi ngờ và có thể không thích nghi với sự thay đổi của thị trường.
Các biện pháp quản lý rủi ro:
Can thiệp thủ công trong điều kiện thị trường bất thường để tạm dừng chiến lược và tránh tổn thất do tín hiệu sai.
Đặt khoảng cách dừng hợp lý, kết hợp với các đường trung bình động để xác định mức dừng, tránh bị dừng sớm.
giới thiệu mô-đun điều chỉnh tham số, tối ưu hóa các tham số bằng cách sử dụng Walk Forward Analysis để đảm bảo độ bền.
Các khía cạnh chính để cải thiện chiến lược này bao gồm:
Tối ưu hóa các thông số chỉ số, sử dụng các thuật toán học máy phù hợp với từng thị trường.
Kỹ thuật tính năng, giới thiệu nhiều chỉ số kỹ thuật và mô hình đào tạo như SVM để cải thiện độ chính xác tín hiệu.
Bao gồm các chiến lược phá vỡ dựa trên đặc điểm của mỗi thị trường bằng cách sử dụng các kênh giá, hỗ trợ / kháng cự vv để tăng cường sự ổn định.
Tối ưu hóa các cơ chế lấy lợi nhuận và dừng lỗ bằng cách giới thiệu các điểm dừng, dừng di chuyển, v.v. để tối đa hóa lợi nhuận và kiểm soát rủi ro một cách hiệu quả.
Chiến lược giao dịch định lượng trung hạn này sử dụng nhiều chỉ số kỹ thuật như ADX, RSI và Bollinger Bands để xác định điều kiện thị trường và thực hiện giao dịch khi có những thay đổi cấu trúc quan trọng được xác định.
/*backtest start: 2023-11-10 00:00:00 end: 2023-12-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("DAX Shooter 5M Strategy", overlay=true) //Creo ADX adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") th = input(title="threshold", type=input.integer, defval=20) dirmov(len) => up = change(high) down = -change(low) plusDM = na(up) ? na : up > down and up > 0 ? up : 0 minusDM = na(down) ? na : down > up and down > 0 ? down : 0 truerange = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) adx [plus, minus] = dirmov(dilen) sig = adx(dilen, adxlen) //Creo RSI src = close len = input(7, minval=1, title="Periodo RSI") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) bandainf = input(30, title="Livello Ipervenduto") bandasup = input(70, title="Livello Ipercomprato") //Creo Bande di Bollinger source = close length = input(50, minval=1, title="Periodo BB") mult = input(2.0, minval=0.001, maxval=50, title="Dev BB") basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev plot(basis, color=color.white) p1 = plot(upper, color=color.aqua) p2 = plot(lower, color=color.aqua) fill(p1, p2) //Stabilisco regole di ingresso if crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower strategy.entry("COMPRA", strategy.long, limit=upper, oca_name="DaxShooter", comment="COMPRA") else //strategy.exit("exit", "COMPRA", loss = 90) strategy.cancel(id="COMPRA") if crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper strategy.entry("VENDI", strategy.short, limit=lower, oca_name="DaxShooter",comment="VENDI") else //strategy.exit("exit", "VENDI", loss = 90) strategy.cancel(id="VENDI") //Imposto gli alert buy= crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower sell= crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper alertcondition(buy, title='Segnale Acquisto', message='Compra DAX') alertcondition(sell, title='Segnale Vendita', message='Vendi DAX') //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)