Hệ thống giao dịch Ichimoku Keltner tích hợp dựa trên chiến lược đường trung bình động


Ngày tạo: 2023-12-20 13:40:08 sửa đổi lần cuối: 2023-12-20 13:40:08
sao chép: 0 Số nhấp chuột: 745
1
tập trung vào
1621
Người theo dõi

Hệ thống giao dịch Ichimoku Keltner tích hợp dựa trên chiến lược đường trung bình động

Tổng quan

Chiến lược này tích hợp các chiến lược đường thẳng, biểu đồ đám mây Ichimoku và chỉ số kỹ thuật Keltner channel, cho phép theo dõi xu hướng và giao dịch đột phá, áp dụng cho giao dịch thuật toán tần số cao.

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

  1. Sử dụng Keltner Channel để xác định giá cổ phiếu vượt qua đường dẫn lên xuống, như một tín hiệu để đặt hàng
  2. Bản đồ đám mây Ichimoku để xác định xu hướng, được sử dụng cùng với Keltner Channel
  3. Chiến lược đường trung bình phát tín hiệu đồng bằng

Phân tích lợi thế

  1. Tích hợp nhiều chỉ số kỹ thuật, đánh giá tổng hợp, cải thiện tính chính xác của quyết định
  2. Keltner cho rằng việc mua và bán quá mức là một cách để tránh việc đặt hàng theo đuổi giá cao và giá thấp.
  3. Ichimoku Cloud Chart: Kiểm tra xu hướng lớn, tránh giao dịch ngược
  4. Chiến lược lọc sóng bằng đường thẳng để tránh quá nhạy cảm

Phân tích rủi ro

  1. Tích hợp đa chỉ số, thiết lập tham số phức tạp, cần kiểm tra cẩn thận
  2. Chuyển đổi đường và đường chuẩn không phải lúc nào cũng là tín hiệu giao dịch đáng tin cậy
  3. Keltner Channel cần điều chỉnh các tham số để phù hợp với các đặc điểm khác nhau của cổ phiếu

Hướng tối ưu hóa

  1. Đánh giá hiệu suất máy chủ, giảm chu kỳ trung bình thích hợp, tăng tần suất giao dịch
  2. Kiểm tra độ nhạy của các cổ phiếu khác nhau đối với các tham số, đặt các tham số thích ứng
  3. Tăng chiến lược dừng lỗ, giảm tổn thất đơn lẻ

Tóm tắt

Chiến lược này tích hợp nhiều chỉ số kỹ thuật của biểu đồ đám mây Ichimoku, Keltner Channel và chiến lược đường thẳng, cho phép theo dõi xu hướng và giao dịch phá vỡ hiệu quả cao. So với chỉ số đơn, chiến lược này phán đoán toàn diện và chính xác hơn, tránh một số tín hiệu giả.

Mã nguồn chiến lược
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Author: Persio Flexa
// Description: Ichimoku Clouds with Keltner Channel, perfect for margin trading 
strategy("Ichimoku Keltner Strategy", overlay=true) 

// -- Keltner ------------------------------------------------------------------
source = close

useTrueRange = input(true)
length = input(18, minval=1) 
mult = input(1.8)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

plot(ma, title="BASE", color=orange,transp=85)
plot(upper, title="UPPER", color=red)
plot(lower, title="LOWER", color=green)

//crossUpper = crossover(source, upper)
//crossLower = crossunder(source, lower)
crossUpper = source > upper
crossLower = source  < lower

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

// ---------------------------------------------------------------------


// -- Ichimoku

ATRlength = input(200, minval=1)
ATRMult = input(2.272, minval=1)

ATR = rma(tr(true), ATRlength)

len = input(26, minval=1, title="EMA Length")
src = input(close, title="Source")
out = ema(src, len)

emaup = out+(ATR*ATRMult)
emadw = out-(ATR*ATRMult)

conversionPeriods = input(15, minval=1),
basePeriods = input(35, minval=1)
laggingSpan2Periods = input(52, minval=1),
displacement = input(26, minval=1)

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, color=green,transp=85, title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red,transp=85, title="Lead 2")
fill(p1, p2,silver) 

longCond    = crossover(conversionLine, baseLine)
shortCond   = crossunder(conversionLine, baseLine)
// -------------------------------------------------------------------------

if (crossUpper and (conversionLine > baseLine))
    strategy.entry("long", strategy.long, stop=bprice, comment="LONG")

if (crossLower and (conversionLine < baseLine))
    strategy.entry("short", strategy.short, stop=sprice, comment="SHORT")
    
strategy.close("long", when = (shortCond and source < lower))
strategy.close("short", when = (longCond and source > upper))