Chiến lược giao dịch BTC dựa trên hệ thống đường trung bình động Ichimoku


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

Chiến lược giao dịch BTC dựa trên hệ thống đường trung bình động Ichimoku

Tổng quan

Chiến lược này được gọi là Ichimoku Kinko Hyo Strategy, tức là chiến lược hệ thống đường trung bình một mắt. Nó là một chiến lược giao dịch BTC dựa trên đường trung bình một mắt kết hợp với các chỉ số kỹ thuật khác.

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

Chiến lược này chủ yếu dựa trên hệ thống đường trung bình một mắt, một hệ thống chiến lược giao dịch xu hướng tổng hợp nhiều chỉ số kỹ thuật. Nó bao gồm các chỉ số sau:

Đường chuẩn ((Kijun Sen): đại diện cho xu hướng thị trường, là điểm trung bình của mức cao và thấp trong 26 ngày qua, có thể được sử dụng như đường hỗ trợ và kháng cự. Khi giá đóng cửa phá vỡ đường chuẩn, tạo ra tín hiệu mua và bán.

Đường chuyển đổi ((Tenkan Sen): đại diện cho động lực của giá cổ phiếu, là điểm trung bình của mức cao và thấp trong 9 ngày qua, có thể được sử dụng để xác định thời gian mua và bán.

Tương lai SPAN A: đại diện cho đường trung bình trung bình, là giá trị trung bình của đường chuẩn và đường chuyển đổi, có thể được sử dụng như đường cảnh báo của đường trung bình.

Tương lai SPAN B: đại diện cho đường xu hướng dài hạn, là điểm trung bình của 52 ngày qua, có thể tạo thành biểu đồ đám mây để đánh giá xu hướng dài hạn.

Ngoài ra, chiến lược này kết hợp với chỉ số RSI để phát tín hiệu giao dịch ở khu vực quá mua quá bán.

Một tín hiệu mua được tạo ra khi giá đóng cửa phá vỡ đường chuẩn và nằm trên biểu đồ đám mây; và một tín hiệu bán được tạo ra khi giá đóng cửa rơi xuống đường chuẩn và nằm dưới biểu đồ đám mây.

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

  1. Hệ thống đường trung bình một mắt đánh giá xu hướng chính xác, tỷ lệ thắng cao

  2. Kết hợp nhiều chỉ số để tránh bỏ lỡ cơ hội

  3. Chỉ số RSI có thể đánh giá hiệu quả điểm đảo chiều

  4. Đồ họa đám mây trực quan cho thấy xu hướng dài hạn

Phân tích rủi ro

  1. Một hệ thống đường trung bình bị tụt hậu, cần phải kết hợp với các chỉ số khác

  2. Thị trường có xu hướng hoạt động tốt, nhưng thị trường chấn động thường hoạt động

  3. Cài đặt RSI cần điều chỉnh theo thị trường

  4. Khung đồ phức tạp và cần có kỹ năng sử dụng

Có thể được tối ưu hóa bằng cách điều chỉnh tham số đường trung bình, hoặc kết hợp với nhiều chỉ số kỹ thuật.

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

  1. Tối ưu hóa các tham số của đường trung bình để có thể đánh giá xu hướng nhanh hơn

  2. Tăng các chỉ số như trung bình di chuyển để cải thiện độ chính xác của tín hiệu

  3. Cài đặt tham số RSI cho các thị trường khác nhau

  4. Có thể xem xét việc áp dụng các biện pháp ngăn chặn thiệt hại, kiểm soát rủi ro

Tóm tắt

Chiến lược tổng hợp sử dụng nhiều chỉ số phán đoán xu hướng như đường trung bình, RSI, và có độ chính xác cao trong việc phán đoán xu hướng tăng. Tuy nhiên, hệ thống đường trung bình chậm trễ hơn, không thể đánh giá biến động, đây là rủi ro chính của chiến lược. Bằng cách tối ưu hóa các tham số thiết lập, hoặc thêm các chỉ số khác có thể bù đắp tốt cho thiếu sót này, làm cho chiến lược ổn định và đáng tin cậy hơn.

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

//@version=3
strategy("My Ichimoku Strat v2", overlay=true,default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.EUR,commission_type=strategy.commission.percent,commission_value=0.05)
// === BACKTEST RANGE ===
FromMonth = input(defval = 3, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// === SERIES SETUP ===



//**** Inputs *******
KijunSenLag = input(6,title="KijunSen Lag",minval=1)

//Kijun-sen
//Support resistance line, buy signal when price crosses it
KijunSen = sma((high+low)/2,26)
buy2 = crossover(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))
sell2= crossunder(close,KijunSen) and (rising(KijunSen,KijunSenLag) or falling(KijunSen,KijunSenLag))


//Tenkan-Sen
TenkanSen = sma((high+low)/2,9)

//Senkou Span A 
SenkouSpanA = (KijunSen + TenkanSen)/2

//Senkou Span B 
SenkouSpanB = sma((high+low)/2,52)

//Cloud conditions : ignore buy if price is under the cloud
// Huge cloud means safe support and resistance. Little cloud means danger.
buy3 = close > SenkouSpanA and close > SenkouSpanB
sell3 = close < SenkouSpanA and close < SenkouSpanB


//Chikou Span
//Buy signal : crossover(ChikouSpan,close)
//Sell Signal : crossunder(ChikouSpan,close)
ChikouSpan = close
buy1=crossover(ChikouSpan,close[26])
sell1=crossunder(ChikouSpan,close[26])

plotshape(buy1,style=shape.diamond,color=lime,size=size.small)
plotshape(sell1,style=shape.diamond,color=orange,size=size.small)

//Alerts

buyCompteur = -1
buyCompteur := nz(buyCompteur[1],-1)
buyCompteur := buy2 or buy3 ? 1 : buyCompteur
buyCompteur := buyCompteur > 0 ? buyCompteur + 1 : buyCompteur
buyCompteur := sell2 or sell3 ? -1 : buyCompteur

sellCompteur = -1
sellCompteur := nz(sellCompteur[1],-1)
sellCompteur := sell2 or sell3 ? 1 : sellCompteur
sellCompteur := sellCompteur > 0 ? sellCompteur + 1 : sellCompteur
sellCompteur := buy2 or buy3 ? -1 : sellCompteur



//RSI
src = close, len = input(14, minval=1, title="RSI Length")
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))
buyRSI = crossover(rsi,40) and close > TenkanSen and rsi[5]<30 and (rsi-rsi[1])>5
sellRSI = crossunder(rsi,60) and close < TenkanSen and rsi[5]>70 and (rsi[1]-rsi)>5
plotshape(buyRSI,style=shape.triangleup,color=lime,transp=0,location=location.belowbar,size=size.small)

sell= sell2 and sell3 or (sell1 and buyCompteur <= 8) or sellRSI
buy=buy2 and buy3 or (buy1 and sellCompteur <=8) or buyRSI
plotchar(buy,char='B',size=size.small,color=lime) 
plotchar(sell,char='S',size=size.small,color=orange)


//plots
plot(KijunSen,title="Kijun-Sen",color=blue,linewidth=4)
plot(TenkanSen,title="Tenkan-Sen",color=red,linewidth=2)
cloudA = plot(SenkouSpanA,title="cloud A", color=lime,offset=26,linewidth=2)
cloudB = plot(SenkouSpanB,title="cloud B", color=orange,offset=26,linewidth=2)
plot(ChikouSpan,title="lag span",color=fuchsia, linewidth=2,offset=-26)
//plot()
fill(cloudA,cloudB,color=SenkouSpanA>SenkouSpanB?lime:orange)
//plot(close,color=silver,linewidth=4)

// === ALERTS ===
strategy.entry("L", strategy.long, when=(buy and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.close("L", when=(sell and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))