Chiến lược lượng mây Ichimoku

Tác giả:ChaoZhang, Ngày: 2023-11-24 10:15:15
Tags:

img

Tổng quan

Đây là một chiến lược lượng mây Ichimoku dài. Chiến lược đánh giá hướng xu hướng thông qua chỉ số Ichimoku, kết hợp với các mẫu đường K, đường trung bình động và chỉ số RSI Stochastic để lọc tín hiệu và đi dài tại các điểm đầu vào tốt hơn khi xu hướng tăng.

Nguyên tắc chiến lược

Các tiêu chí đánh giá chính của chiến lược là:

  1. Ichimoku dẫn đường 1 vượt qua trên dẫn đường 2, cho thấy xu hướng tăng
  2. Giá đóng K-line vượt qua đường dẫn 1, đáp ứng điều kiện theo xu hướng
  3. K-line là một ngọn nến xanh, xu hướng tăng lên
  4. Khi các đường trung bình động được bật, MA nhanh vượt qua MA chậm
  5. Khi Stochastic RSI được bật, đường %K vượt trên đường %D

Khi tất cả các điều kiện trên được đáp ứng cùng một lúc, chiến lược sẽ mở các vị trí dài. Khi giá giảm dưới đường dẫn 1, chiến lược sẽ đóng các vị trí.

Chiến lược chủ yếu sử dụng đám mây Ichimoku để xác định hướng xu hướng chính, kết hợp với các chỉ số phụ để lọc tín hiệu và mua dài tại các điểm tốt hơn khi xu hướng tăng.

Ưu điểm của Chiến lược

  1. Sử dụng đám mây Ichimoku để xác định xu hướng chính, backtest cho thấy độ chính xác cao
  2. Kết hợp với nhiều chỉ số phụ trợ để lọc các điểm nhập cảnh, có thể cải thiện đáng kể tỷ lệ lợi nhuận
  3. Chiến lược chỉ dài, phù hợp với các loại tiền tệ được đánh giá là ở thị trường tăng
  4. Không gian lớn cho tối ưu hóa tham số, có thể điều chỉnh các tham số chỉ số để tối ưu hóa hơn nữa

Rủi ro của chiến lược

  1. Có khả năng đám mây Ichimoku đánh giá sai xu hướng
  2. Điểm dừng lỗ có thể bị phá vỡ trong những thay đổi đột ngột của thị trường, dẫn đến tổn thất lớn hơn
  3. Được thiết kế cho thị trường tăng, không phù hợp với các loại tiền tệ có dấu hiệu biến động xu hướng ẩn
  4. Cài đặt tham số không chính xác có thể dẫn đến các mục nhập quá hung hăng hoặc hành động quá thận trọng

Các biện pháp đối phó:

  1. Kết hợp nhiều chỉ số hơn để đánh giá xu hướng, cải thiện độ chính xác
  2. Đặt các điểm dừng lỗ hợp lý để kiểm soát chặt chẽ lỗ đơn
  3. Chọn các chiến lược phù hợp theo điều kiện thị trường của các loại tiền tệ khác nhau
  4. Kiểm tra cẩn thận và tối ưu hóa các thông số để làm cho chiến lược ổn định hơn

Hướng dẫn tối ưu hóa chiến lược

  1. Tối ưu hóa các thiết lập tham số của các chỉ số phụ trợ để cải thiện sự ổn định hơn nữa
  2. Thêm các cơ chế dừng lỗ như dừng lỗ sau, dừng lỗ trung bình động theo cấp số nhân, vv.
  3. Thêm quản lý vị trí như định dạng vị trí cố định, trung bình vị trí, vv
  4. Thực hiện điều chỉnh tham số và tối ưu hóa cho các loại tiền tệ cụ thể

Tóm lại

Chiến lược lượng đám mây Ichimoku đạt được tỷ lệ thắng cao nhưng chỉ có thể kiểm soát rủi ro bằng cách đánh giá hướng xu hướng. Những lợi thế của chiến lược là hiển nhiên và nó cho thấy hiệu suất xuất sắc trong thị trường tăng. Bước tiếp theo là cải thiện các khía cạnh như tối ưu hóa chỉ số, cơ chế dừng lỗ, quản lý vị trí để làm cho chiến lược toàn diện và ổn định hơn.


/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="Ichimoku only Long Strategy", shorttitle="Ichimoku only Long", overlay = true, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=10000, currency=currency.USD)

// Time Range
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2017,title="FromYear",minval=2017)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true
// See if this bar's time happened on/after start date
afterStartDate = time >= start and time<=finish?true:false

//Enable RSI
enableema = input(true, title="Enable EMA?")
enablestochrsi = input(false, title="Enable Stochastik RSI?")

//EMA
emasrc = close, 
len1 = input(24, minval=1, title="EMA 1")
len2 = input(90, minval=1, title="EMA 2")

ema1 = ema(emasrc, len1)
ema2 = ema(emasrc, len2)

col1 = color.lime
col2 = color.red

//EMA Plots
plot(ema1, title="EMA 1", linewidth=1, color=col1)
plot(ema2, title="EMA 2", linewidth=1, color=col2)

//STOCH RSI
smoothK = input(3, minval=1, title="RSI K Line")
smoothD = input(3, minval=1, title="RSI D Line")
lengthRSI = input(14, minval=1, title="RSI Length")
lengthStoch = input(14, minval=1, title="Stochastik Length")
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

//Ichimoku
conversionPeriods = input(9, minval=1, title="Ichi Conversion Line Length")
basePeriods = input(26, minval=1, title="Ichi Base Line Length")
laggingSpan2Periods = input(52, minval=1, title="Ichi Lagging Span 2 Length")
displacement = input(1, minval=0, title="Ichi Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
p1 = plot(leadLine1, offset = displacement - 1, color=color.green,
	 title="Lead 1")
p2 = plot(leadLine2, offset = displacement - 1, color=color.red,
	 title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red)


//Long Condition
crossup = k[0] > d[0] and k[1] <= d[1]
ichigreenabovered = leadLine1 > leadLine2
ichimokulong = close > leadLine1
greencandle =  close > open
redcandle = close < open
emacond = ema1 > ema2
longcondition = ichigreenabovered and ichimokulong and greencandle

//Exit Condition
ichimokuexit = close < leadLine1

exitcondition = ichimokuexit and redcandle

//Entrys

if (enablestochrsi == false) and (enableema == false) and (longcondition) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)
    
if (enablestochrsi == true) and (enableema == false) and (longcondition) and (crossup) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)

if (enableema == true) and (enablestochrsi == false) and (longcondition) and (emacond) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)

if (enableema == true) and (enablestochrsi == true) and (longcondition) and (emacond) and (crossup) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)


//Exits
if (afterStartDate)
    strategy.close(id = "Long", when = exitcondition)









Thêm nữa