Chiến lược theo dõi xu hướng chéo một giờ dựa trên ADX TENKAN KIJUN

Tác giả:ChaoZhang, Ngày: 2023-12-08 15:37:00
Tags:

img

Tổng quan

Đây là một chiến lược theo dõi xu hướng đơn giản nhưng có lợi nhuận dựa trên khung thời gian một giờ TENKAN và KIJUN chéo trong hệ thống ICHIMOKU kết hợp với chỉ số ADX để lọc các thị trường xu hướng yếu để tạo ra tín hiệu giao dịch. Nó hoạt động tốt nhất trên các cặp altcoin BTC vốn hóa thị trường lớn như ETH / BTC.

Chiến lược logic

Chiến lược này sử dụng đường chuyển đổi (TENKAN) và đường cơ sở (KIJUN) chéo trong hệ thống ICHIMOKU để xác định hướng xu hướng thị trường.

Khi TENKAN vượt qua trên KIJUN, đó là một tín hiệu tăng. Khi TENKAN vượt qua dưới KIJUN, đó là một tín hiệu giảm. Điều này nhằm mục đích nắm bắt sự đảo ngược xu hướng trung hạn.

Ngoài ra, chỉ số ADX được sử dụng để đánh giá sức mạnh của xu hướng. Chỉ khi ADX trên 20, cho thấy xu hướng mạnh, tín hiệu sẽ được kích hoạt.

Tóm lại, chiến lược này xác định hướng xu hướng trung hạn thông qua đường chéo TENKAN và KIJUN, và sử dụng ADX để lọc các đột phá sai, để theo dõi xu hướng dài hạn.

Phân tích lợi thế

Những lợi thế chính của chiến lược này là:

  1. Sử dụng hệ thống ICHIMOKU trưởng thành và đáng tin cậy để xác định hướng xu hướng và các điểm chuyển hướng.

  2. lọc ra thị trường xu hướng yếu bằng cách sử dụng ADX để tránh whipsaws trong hợp nhất.

  3. Khung thời gian một giờ lọc tiếng ồn thị trường và chỉ nắm bắt xu hướng trung và dài hạn.

  4. Lý thuyết là đơn giản và dễ dàng để làm theo cho các nhà giao dịch xu hướng.

  5. Kết quả backtesting vững chắc đặc biệt là trên các đồng tiền có vốn hóa thị trường cao như ETH / BTC.

Phân tích rủi ro

Một số rủi ro cần lưu ý về chiến lược này:

  1. Các thông số ICHIMOKU rất nhạy cảm, cần tùy chỉnh cho các cặp khác nhau.

  2. ADX có thể bị chậm trong một số trường hợp, gây ra việc không nhập.

  3. Hiệu suất thấp hơn ở các thị trường khác nhau với mức dừng lỗ thường xuyên.

  4. Hiệu suất thay đổi rất nhiều giữa các cặp và khung thời gian khác nhau.

  5. Việc nắm giữ các vị trí dài có thể có rủi ro, cần phải dừng lỗ / lấy lợi nhuận thích hợp.

Tối ưu hóa có thể được thực hiện thông qua điều chỉnh tham số ADX, thêm các bộ lọc như MACD để giảm tín hiệu sai, hoặc điều chỉnh động các tham số cho độ bền.

Hướng dẫn tối ưu hóa

Một số hướng chính để cải thiện chiến lược:

  1. Tối ưu hóa năng động các tham số TENKAN và KIJUN để thích nghi tốt hơn.

  2. Tìm kiếm các chỉ số xu hướng tốt hơn để thay thế hoặc kết hợp với ADX.

  3. Thêm stop loss / take profit để kiểm soát tỷ lệ rủi ro / lợi nhuận.

  4. Kết hợp mô hình hóa với các chỉ số bổ sung để cải thiện tính ổn định.

  5. Mô-đun hóa và linh hoạt để điều chỉnh tham số trên nhiều cặp.

  6. Quản lý rủi ro định lượng ví dụ như kiểm soát rút tiền tối đa chống lại các động thái cực đoan.

Kết luận

Kết luận, đây là một chiến lược theo dõi xu hướng đơn giản nhưng thực tế, chủ yếu dựa trên chéo TENKAN / KIJUN và ADX để xác định xu hướng trung và dài hạn và tạo ra tín hiệu. Nó đã cho thấy kết quả kiểm tra hậu quả tích cực, đặc biệt là trên các cặp BTC vốn hóa thị trường cao như ETH / BTC, với lợi nhuận tương đối ổn định. Nhưng nó cũng dựa trên điều chỉnh tham số, đòi hỏi tối ưu hóa mỗi cặp. Kiểm soát rủi ro mỗi giao dịch cũng cần thiết để hạn chế lỗ khi xu hướng đảo ngược. Nhìn chung, điều này cung cấp tham chiếu của một chiến lược theo xu hướng có giá trị cho các nhà giao dịch algo.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="Odin's Kraken (TK Cross Strategy)", shorttitle="Odin's Kraken", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

src = input(close, title="Source")

// define tk in ichimoku

conversionPeriods = input(18, minval=1, title="Conversion Line Periods (Tenkan)"),
basePeriods = input(58, minval=1, title="Base Line Periods (Kijun)")

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)

TK_Uptrend = crossover(conversionLine,baseLine)
TK_Downtrend = crossunder(conversionLine,baseLine)

plot(conversionLine, color=lime, title="Tenkan", linewidth=3)
plot(baseLine, color=red, title="Kijun", linewidth=3)

// define ADX

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", 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)
	
[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)

// backtesting range

// From Date Inputs
fromDay = input(defval = 3, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2018, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 3, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2019, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

// open long and short

longCondition = TK_Uptrend
if (longCondition and sig > 12 and time_cond)
    strategy.entry("LONG", strategy.long)

shortCondition = TK_Downtrend
if (shortCondition and sig > 12 and time_cond)
    strategy.entry("SHORT", strategy.short)

// close trade if backtesting criteria not met

if (not time_cond)
    strategy.close_all()




Thêm nữa