Biểu đồ đám mây Ichimoku Chiến lược định lượng


Ngày tạo: 2023-11-24 10:15:15 sửa đổi lần cuối: 2023-11-24 10:15:15
sao chép: 2 Số nhấp chuột: 736
1
tập trung vào
1621
Người theo dõi

Biểu đồ đám mây Ichimoku Chiến lược định lượng

Tổng quan

Đây là một chiến lược định lượng đám mây Ichimoku chỉ cần làm nhiều hơn. Chiến lược này sử dụng chỉ số Ichimoku để đánh giá hướng xu hướng, kết hợp với hình dạng K-line, đường trung bình di chuyển và Stochastic RSI để lọc tín hiệu và chọn điểm vào tốt hơn khi xu hướng đi lên.

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

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

  1. Ichimoku đi qua đường dẫn 1 trên đường dẫn 2, cho thấy xu hướng thay đổi nhiều hơn
  2. Đường K đi qua đường dẫn đầu 1 trên giá đóng cửa, phù hợp với điều kiện theo dõi xu hướng
  3. Đường K là đường dương, xu hướng lên
  4. Khi kích hoạt đường trung bình di chuyển, yêu cầu đường nhanh đi qua đường chậm
  5. Khi kích hoạt Stochastic RSI, yêu cầu dòng K đi qua dòng D

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

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

Lợi thế chiến lược

  1. Sử dụng bản đồ đám mây Ichimoku để đánh giá xu hướng chính, đánh giá lại cho thấy tính chính xác của nó rất cao
  2. Kết hợp với nhiều chỉ số phụ để lọc điểm vào, có thể cải thiện đáng kể tỷ lệ lợi nhuận
  3. Chỉ thực hiện nhiều chiến lược, áp dụng cho các loại tiền tệ được đánh giá là đa đầu
  4. Không gian tối ưu hóa tham số lớn, có thể điều chỉnh tham số chỉ số để tối ưu hóa hơn nữa

Rủi ro chiến lược

  1. Ichimoku có khả năng đánh giá thất bại, có thể đánh giá sai hướng xu hướng
  2. Các điểm dừng lỗ có thể bị phá vỡ khi xảy ra biến động, dẫn đến tổn thất lớn hơn
  3. Các đồng tiền được thiết kế cho nhiều biến động, không phù hợp với các dấu hiệu biến động tiềm ẩn
  4. Thiết lập tham số không đúng có thể dẫn đến quá mạnh vào sân hoặc quá bảo thủ

Phản ứng:

  1. Kết hợp nhiều chỉ số hơn với xu hướng đánh giá, để tăng độ chính xác đánh giá
  2. Thiết lập điểm dừng hợp lý, kiểm soát chặt chẽ lỗ đơn
  3. Lựa chọn các chiến lược phù hợp với 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 tham số để làm cho chiến lược ổn định hơn

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

  1. Tối ưu hóa các thiết lập tham số chỉ số hỗ trợ để tăng cường sự ổn định của chiến lược
  2. Thêm các cơ chế dừng lỗ, chẳng hạn như theo dõi dừng, dừng chỉ số trung bình di chuyển
  3. Thêm quản lý vị trí, chẳng hạn như vị trí cố định, vị trí trung bình.
  4. Tối ưu hóa điều chỉnh tham số cho các loại tiền tệ cụ thể

Tóm tắt

Chiến lược định lượng đồ thị đám mây của Ichimoku là một chiến lược đơn lẻ chỉ có nhiều đầu bằng cách xác định hướng xu hướng, đạt được tỷ lệ thắng cao và có thể kiểm soát rủi ro. Ưu điểm của chiến lược rõ ràng, hiệu quả nổi bật trong tình huống đa đầu. Bước tiếp theo có thể được cải thiện từ các khía cạnh tối ưu hóa chỉ số, cơ chế dừng lỗ, quản lý vị trí, v.v., để chiến lược được hoàn thiện và ổn định hơn.

Mã nguồn chiến lược
/*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)