Không có Offset Ichimoku Cloud với Chiến lược lọc RSI

Tác giả:ChaoZhang, Ngày: 2023-11-07 15:31:06
Tags:

img

Tổng quan

Đây là một chiến lược theo xu hướng sử dụng chỉ số Ichimoku Cloud để xác định xu hướng và chỉ số RSI để lọc tín hiệu.

Chiến lược logic

Chiến lược này chủ yếu dựa trên chỉ số đám mây Ichimoku để xác định hướng xu hướng. Mây Ichimoku bao gồm đường chuyển đổi, đường cơ sở, trải dài dẫn đầu 1, trải dài dẫn đầu 2 và trải dài trễ. Chiến lược sử dụng đám mây Ichimoku không cân bằng, có nghĩa là các đường như đường chuyển đổi và đường cơ sở áp dụng số liệu tương lai để tránh xác định xu hướng trễ do sự cân bằng quan sát.

Chiến lược đầu tiên kiểm tra xem giá có vượt qua đường mây hay không. Xu hướng tăng được xác định khi khoảng thời gian chậm vượt qua trên đám mây, trong khi xu hướng giảm được xác định khi khoảng thời gian chậm vượt qua dưới đám mây. Sau khi xu hướng bắt đầu, chiến lược tiếp tục theo dõi mối quan hệ của giá với đám mây để xác định hướng xu hướng bền vững. Xu hướng tăng vẫn còn nguyên vẹn khi khoảng thời gian chậm vượt qua đám mây và ngược lại.

Ngoài việc xác định xu hướng, chiến lược cũng tạo ra tín hiệu mua và bán khi đường chuyển đổi và đường cơ sở có đường chéo vàng và đường chéo chết.

Cuối cùng, chỉ số RSI được sử dụng để lọc các tín hiệu giao dịch. Chỉ có tín hiệu mua với RSI dưới mức bán quá mức và bán tín hiệu với RSI trên mức mua quá mức được chấp nhận. Điều này giúp lọc ra các đột phá sai ở một mức độ nào đó.

Phân tích lợi thế

  • Mây Ichimoku không bù có thể xác định kịp thời sự thay đổi xu hướng mà không bỏ lỡ cơ hội đảo ngược

  • Nhiều điều kiện làm việc cùng nhau để lọc hiệu quả các tín hiệu thoát sai

  • RSI tránh sự gia nhập thị trường không mong muốn trong các tình huống mua quá mức và bán quá mức

  • Chiến lược được tối ưu hóa với dữ liệu trong tương lai và cũng có thể đạt được kết quả tốt trong giao dịch trực tiếp

Phân tích rủi ro

  • Sử dụng dữ liệu tương lai có thể gây ra lỗi và cần tối ưu hóa mã trước khi giao dịch trực tiếp

  • Mây Ichimoku nhạy cảm với các tham số và yêu cầu điều chỉnh tham số cho các sản phẩm khác nhau

  • Kết quả tốt hơn khi giao dịch một sản phẩm duy nhất.

  • Nhiều quy tắc xác định xu hướng yêu cầu thời gian kiểm tra hậu quả đầy đủ để xác nhận

Các thông số có thể được tối ưu hóa để tìm ra sự kết hợp tốt nhất. Có thể xem xét giao dịch các sản phẩm cụ thể hoặc giảm kích thước vị trí để kiểm soát rủi ro trong giao dịch trực tiếp. Các chiến lược dừng lỗ cũng có thể được giới hạn để hạn chế lỗ cho mỗi giao dịch.

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

Chiến lược có thể được tối ưu hóa thêm trong các khía cạnh sau:

  1. Tối ưu hóa các tham số Ichimoku Cloud để tìm các cài đặt tốt nhất cho các sản phẩm giao dịch khác nhau

  2. Thêm các chiến lược dừng lỗ để hạn chế lỗ cho mỗi giao dịch đến mức chấp nhận được

  3. Thiết lập các chiến lược định kích thước vị trí để quản lý rủi ro tổng thể một cách chính xác

  4. Thêm thêm các chỉ số kỹ thuật như biến động và khối lượng để xác minh tín hiệu toàn diện

  5. Tối ưu hóa các kỹ thuật nhập như xác nhận hoặc thu hồi nhập để thực hiện tốt hơn

  6. Thực hiện tối ưu hóa bước đi trước để xác định thời gian xem lại Bollinger Bands tối ưu dựa trên các đặc điểm của sản phẩm

Kết luận

Tóm lại, đây là một chiến lược theo xu hướng khá mạnh mẽ. Nó áp dụng đám mây Ichimoku để xác định xu hướng và đường chuyển đổi / đường cơ sở vượt qua các tín hiệu giao dịch, được lọc bởi RSI. Vẫn còn nhiều chỗ để tối ưu hóa thông qua điều chỉnh tham số, dừng lỗ, kích thước vị trí vv. Logic rõ ràng và dễ hiểu. Nó xem xét cả xu hướng và rủi ro. Đây là một chiến lược đáng để xác minh trong giao dịch trực tiếp.


/*backtest
start: 2022-10-31 00:00:00
end: 2023-02-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KryptoNight

//@version=4
// comment/uncomment Study/Strategy to easily switch modes
// study("Ichimoku Kinko Hyo Cloud - no offset - no repaint - RSI filter - alerts", shorttitle="IchiCloud + RSI - alerts", overlay=true)
// ============================================================================== Strategy mode - uncomment to activate
strategy("Ichimoku Kinko Hyo Cloud - no offset - no repaint - RSI filter - strategy", shorttitle="IchiCloud + RSI - Strategy Tester Mode", overlay=true, pyramiding = 0,
  currency = currency.USD, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100,
  calc_on_every_tick = true, calc_on_order_fills = true, commission_type = strategy.commission.percent, commission_value = 0.075)
// ==============================================================================

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

ichiCloud_offset   = input(false, title="Standard Ichimoku Cloud")                  // with the visual offset
ichiCloud_noOffset = input(true,  title="Ichimoku Cloud - no offset - no repaint")  // without the visual offset

conversion_prd = input(9, minval=1, title="Conversion Line Period - Tenkan-Sen")
baseline_prd   = input(26, minval=1, title="Base Line Period - Kijun-Sen")
baselineA_prd  = input(52, minval=1, title="Base Line Period - Kijun-Sen (auxiliary)")
leadingSpan_2prd = input(52, minval=1, title="Lagging Span 2 Periods - Senkou Span B")
displacement = input(26, minval=0, title="Displacement: (-) Chikou Span; (+) Senkou Span A")
extra_bars = input(1, minval=0, title="Displacement: additional bars")
laggingSpan_src = input(close, title="Lagging Span price source - Chikou-Span")

donchian(len) => avg(lowest(len), highest(len))
displ = displacement-extra_bars
// ------------------------------------------------------------------------------
// OFFSET:
conversion = donchian(conversion_prd)   // Conversion Line - Tenkan-Sen (9 Period)
baseline  = donchian(baseline_prd)      // Base Line - Kijun-Sen (26 Period)
baselineA = donchian(baselineA_prd)     // Base Line Period - Kijun-Sen (auxiliary)
leadingSpanA = avg(conversion, baseline)
leadingSpanB = donchian(leadingSpan_2prd)
laggingSpan = laggingSpan_src

// Color - bullish, bearish
col_cloud = leadingSpanA>=leadingSpanB ? color.green : color.red

// Cloud Lines
spanA = plot(ichiCloud_offset? leadingSpanA : na, offset=displ, title="Offset: Lead Line 1 - Senkou Span A cloud", color=color.green)
spanB = plot(ichiCloud_offset? leadingSpanB : na, offset=displ, title="Offset: Lead Line 2 - Senkou Span B cloud", color=color.red)
fill(spanA, spanB, color=col_cloud, transp=80, title="Offset: Ichimoku Cloud - Leading Span 1 & 2 based coloring")

// Other Lines
conversion_p = plot(ichiCloud_offset? conversion : na, title="Offset: Conversion Line - Tenkan-Sen", color=#0496ff)
standard_p = plot(ichiCloud_offset? baseline : na, title="Offset: Base Line - Kijun-Sen", color=#991515)
standardA_p = plot(ichiCloud_offset? baselineA : na, title="Offset: Base Line - Kijun-Sen (auxiliary)", color=color.teal)
lagging_Span_p = plot(ichiCloud_offset? laggingSpan : na, offset=-displ, title="Offset: Chikou Span (Lagging Span)", color=#459915)

// ------------------------------------------------------------------------------
// NO OFFSET:
conversion_noOffset = conversion[displ] // Conversion Line - Tenkan-Sen (9 Period)
baseline_noOffset  = baseline[displ]    // Base Line - Kijun-Sen (26 Period)
baselineA_noOffset = baselineA[displ]   // Base Line Period - Kijun-Sen (auxiliary)
leadingSpanA_noOffset = leadingSpanA[displ*2]
leadingSpanB_noOffset = leadingSpanB[displ*2]
laggingSpan_noOffset = laggingSpan[0]

// Color - bullish, bearish
col_cloud_noOffset = leadingSpanA_noOffset>=leadingSpanB_noOffset ? color.green : color.red

// Cloud Lines
spanA_noOffset = plot(ichiCloud_noOffset? leadingSpanA_noOffset : na, title="No offset: Lead Line 1 - Senkou Span A cloud", color=color.green, transp=0)
spanB_noOffset = plot(ichiCloud_noOffset? leadingSpanB_noOffset : na, title="No offset: Lead Line 2 - Senkou Span B cloud", color=color.red, transp=0)
fill(spanA_noOffset, spanB_noOffset, color=col_cloud_noOffset, transp=80, title="No offset: Ichimoku Cloud - Leading Span 1 & 2 based coloring")

// Other Lines
conversion_p_noOffset = plot(ichiCloud_noOffset? conversion_noOffset : na, title="No offset: Conversion Line - Tenkan-Sen", color=#0496ff, transp=0)
baseline_p_noOffset = plot(ichiCloud_noOffset? baseline_noOffset : na, title="No offset: Base Line - Kijun-Sen", color=#991515, transp=0)
baselineA_p_noOffset = plot(ichiCloud_noOffset? baselineA_noOffset : na, title="No offset: Base Line - Kijun-Sen (auxiliary)", color=color.teal, transp=0)
laggingSpan_p_noOffset = plot(ichiCloud_noOffset? laggingSpan_noOffset : na, title="No offset: Chikou Span (Lagging Span)", color=#459915, transp=0)

// ==============================================================================
// Conditions & Alerts (based on the lines without offset)

maxC = max(leadingSpanA_noOffset,leadingSpanB_noOffset)
minC = min(leadingSpanA_noOffset,leadingSpanB_noOffset)

// Trend start signals: crosses between Chikou Span (Lagging Span) and the Cloud (Senkou Span A, Senkou Span B)
uptrend_start   = crossover(laggingSpan_noOffset,maxC)
downtrend_start = crossunder(laggingSpan_noOffset,minC)

// Trends
uptrend   = laggingSpan_noOffset>maxC // Above Cloud
downtrend = laggingSpan_noOffset<minC // Below Cloud

// No trend: choppy trading - the price is in transition
notrend = maxC>=laggingSpan_noOffset and laggingSpan_noOffset>=minC

// Confirmations
uptrend_confirm   = crossover(leadingSpanA_noOffset,leadingSpanB_noOffset)
downtrend_confirm = crossunder(leadingSpanA_noOffset,leadingSpanB_noOffset)

// Signals - crosses between Conversion Line (Tenkan-Sen) and Base Line (Kijun-Sen)
bullish_signal = crossover(conversion_noOffset,baseline_noOffset)
bearish_signal = crossunder(conversion_noOffset,baseline_noOffset)

// Various alerts
alertcondition(uptrend_start,   title="Uptrend Started",   message="Uptrend Started")
alertcondition(downtrend_start, title="Downtrend Started", message="Downtrend Started")

alertcondition(uptrend_confirm,   title="Uptrend Confirmed",   message="Uptrend Confirmed")
alertcondition(downtrend_confirm, title="Downtrend Confirmed", message="Downtrend Confirmed")

alertcondition(bullish_signal, title="Buy Signal",  message="Buy Signal")
alertcondition(bearish_signal, title="Sell Signal", message="Sell Signal")

rsi_OBlevel = input(50, title="RSI Filter: Overbought level (0 = off)")
rsi_OSlevel = input(100,title="RSI Filter: Oversold level (100 = off)")
rsi_len = input(14,title="RSI Length")
rsi_src = input(close,title="RSI Price source")
rsi = rsi(rsi_src,rsi_len)

// Strategy -------------------------------
long_signal  = bullish_signal and uptrend   and rsi<=rsi_OSlevel // breakout filtered by the rsi
exit_long    = bearish_signal and uptrend
short_signal = bearish_signal and downtrend and rsi>=rsi_OBlevel // breakout filtered by the rsi
exit_short   = bullish_signal and downtrend

// Strategy alerts
alertcondition(long_signal, title="Long Signal - Uptrend",      message="Long Signal - Uptrend")
alertcondition(exit_long,   title="Long Exit Signal - Uptrend", message="Long Exit Signal - Uptrend")

alertcondition(short_signal, title="Long Signal - Downtrend",       message="Long Signal - Downtrend")
alertcondition(exit_short,   title="Short Exit Signal - Downtrend", message="Short Exit Signal - Downtrend")

// Plot areas for trend and transition
color_trend = uptrend? #00FF00 : downtrend? #FF0000 : notrend? color.new(#FFFFFF, 50) : na
fill(spanA_noOffset, spanB_noOffset, color=color_trend, transp=90, title="No offset: Ichimoku Cloud - Lagging Span & Cloud based coloring")

plotshape(ichiCloud_noOffset?uptrend_start:na, title="No offset: Uptrend Started", color=color.green, style=shape.circle, location=location.belowbar, size=size.tiny, text="Up")
plotshape(ichiCloud_noOffset?downtrend_start:na, title="No offset: Downtrend Started", color=color.red, style=shape.circle,location=location.abovebar, size=size.tiny, text="Down")

plotshape(ichiCloud_noOffset?uptrend_confirm:na, title="No offset: Uptrend Confirmed", color=color.green, style=shape.circle, location=location.belowbar, size=size.small, text="Confirm Up")
plotshape(ichiCloud_noOffset?downtrend_confirm:na, title="No offset: Downtrend Confirmed", color=color.red, style=shape.circle, location=location.abovebar, size=size.small, text="Confirm Down")

plotshape(ichiCloud_noOffset?long_signal:na, title="No offset: Long Signal", color=#00FF00, style=shape.triangleup, location=location.belowbar, size=size.small, text="Long")
plotshape(ichiCloud_noOffset?exit_long:na, title="No offset: Exit Long Signal", color=color.fuchsia, style=shape.triangledown, location=location.abovebar, size=size.small, text="Exit long")

plotshape(ichiCloud_noOffset?short_signal:na, title="No offset: Short Signal", color=#FF0000, style=shape.triangledown, location=location.abovebar, size=size.small, text="Short")
plotshape(ichiCloud_noOffset?exit_short:na, title="No offset: Exit Short Signal", color=color.fuchsia, style=shape.triangleup, location=location.belowbar, size=size.small, text="Exit short")

// ============================================================================== Strategy Component - uncomment to activate
if (long_signal)
    strategy.entry("Long",strategy.long)
if (exit_long)
    strategy.close("Long")
if (short_signal)
    strategy.entry("Short",strategy.short)
if (exit_short)
    strategy.close("Short")
// ==============================================================================


Thêm nữa