Chiến lược này dựa trên một chỉ số rất nổi tiếng trong phân tích kỹ thuật - Ichimoku Kinko Hyo, sử dụng hình dạng đám mây và mối quan hệ giữa giá và đám mây để xác định hướng xu hướng và khám phá cơ hội giao dịch.
Chiến lược này sử dụng một số thành phần của chỉ số Ichimoku Kinko Hyo, bao gồm Tenkan-Sen (đường chuyển đổi), Kijun-Sen (đường cơ sở), Senkou Span A (đường dẫn A), Senkou Span B (đường dẫn B) và Chikou Span (đường chậm).
Cụ thể, chiến lược đánh giá giá liệu giá có vượt qua lớp đám mây chủ yếu dựa trên đường Senkou Span A và đường Senkou Span B. Khu vực giữa hai đường này tạo thành lớp đám mây. Khi giá đóng vượt qua cạnh trên của lớp đám mây, một tín hiệu mua được tạo ra; khi giá đóng vượt qua cạnh dưới của lớp đám mây, một tín hiệu bán được tạo ra.
Ngoài ra, chiến lược cũng đặt giá dừng lỗ và lấy lợi nhuận. Nó sử dụng syminfo.pointvalue và thông tin vị trí của chiến lược để tính điểm lợi nhuận và lỗ, và sau đó chuyển đổi chúng thành giá cụ thể.
Chiến lược có những lợi thế sau:
Chiến lược này cũng có một số rủi ro:
Các biện pháp đối phó:
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Nói chung, chiến lược breakout nến Ichimoku Yin Yang là một chiến lược điển hình sử dụng chỉ số Ichimoku Kinko Hyo để xác định hướng xu hướng trung dài cho các breakout. Nó có những lợi thế như các thông số điều chỉnh, hình dạng trực quan và tín hiệu có thể hiển thị. Nó cũng có một số rủi ro như breakout sai và giữ rủi ro. Bằng cách tối ưu hóa tham số, lọc tín hiệu, thiết lập stop loss / take profit, v.v., rủi ro có thể được giảm và ổn định chiến lược được cải thiện. Chiến lược này phù hợp với giao dịch vị trí trung dài hạn, đặc biệt là hiệu quả vào hướng xu hướng khi các tín hiệu được hình thành bằng cách phá vỡ các lớp mây. Nhìn chung, đây là một chiến lược có giá trị thực tế.
/*backtest start: 2022-12-14 00:00:00 end: 2023-12-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © moneyofthegame // Basado en estrategias con el indicador ICHIMOKU KINKO HIYO // El tiempo es oro colega :) //@version=5 strategy('Ichimoku Cloud Estrategia Ruptura Nubes SWING TRADER (By Insert Cheese)', shorttitle='Ichimoku Cloud Estrategia Ruptura Nubes SWING TRADER (By Insert Cheese)', overlay=true, initial_capital=500, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.05, currency=currency.NONE) // Inputs: Ichimoku parametros ts_bars = input.int(9, minval=1, title='Tenkan-Sen ', group='Parámetros Ichimoku') ks_bars = input.int(26, minval=1, title='Kijun-Sen ', group='Parámetros Ichimoku') ssb_bars = input.int(52, minval=1, title='Senkou-Span B ', group='Parámetros Ichimoku') cs_offset = input.int(26, minval=1, title='Chikou-Span', group='Parámetros Ichimoku') ss_offset = input.int(26, minval=1, title='Senkou-Span A', group='Parámetros Ichimoku') middle(len) => // LONGITITUD Ichimoku (SenkouB) math.avg(ta.lowest(len), ta.highest(len)) // Ichimoku Componentes tenkan = middle (ts_bars) kijun = middle (ks_bars) senkouA = math.avg(tenkan, kijun) senkouB = middle (ssb_bars) // Plot Ichimoku Kinko Hyo plot(tenkan, color=color.rgb(171, 128, 0), title="Tenkan-Sen", display = display.none) plot(kijun, color=color.rgb(39, 0, 112), title="Kijun-Sen", display = display.none) plot(close, offset=-cs_offset+1, color=color.rgb(224, 200, 251), title="Chikou-Span", display = display.none) sa=plot(senkouA, offset=ss_offset-1, color=color.rgb(68, 128, 0), title="Senkou-Span A", display = display.none) sb=plot(senkouB, offset=ss_offset-1, color=color.rgb(131, 0, 120), title="Senkou-Span B", display = display.none) fill(sa, sb, color = senkouA > senkouB ? color.rgb(0, 211, 11, 82) : color.rgb(75, 0, 126, 82), title="Cloud color") // Calculating ss_high = math.max(senkouA[ss_offset - 1], senkouB[ss_offset - 1]) //parte alta de la nube ss_low = math.min(senkouA[ss_offset - 1], senkouB[ss_offset - 1]) //parte baja de la nube ss_medium = ss_low + (ss_high - ss_low) / 2 //parte intermedia // Input para seleccionar largos o cortos long_entry_enable = input.bool(true, title='Entradas Largo', group='Backtest Operativa', inline='SP20') short_entry_enable = input.bool(true, title='Entradas Corto', group='Backtest Operativa', inline='SP20') // Input backtest rango de fechas fromMonth = input.int (defval=1, title='Desde Mes', minval=1, maxval=12, group='Backtest rango de fechas') fromYear = input.int (defval=2000, title='Desde Año', minval=1970, group='Backtest rango de fechas') fromDay = input.int (defval=1, title='Desde Día', minval=1, maxval=31, group='Backtest rango de fechas') thruDay = input.int (defval=1, title='Hasta Día', minval=1, maxval=31, group='Backtest rango de fechas') thruMonth = input.int (defval=1, title='Hasta Mes', minval=1, maxval=12, group='Backtest rango de fechas') thruYear = input.int (defval=2099, title='Hasta Año', minval=1970, group='Backtest rango de fechas') inDataRange = time >= timestamp(syminfo.timezone, fromYear, fromMonth, fromDay, 0, 0) and time < timestamp(syminfo.timezone, thruYear, thruMonth, thruDay, 0, 0) //Estrategia // Señales de entrada y salida price_above_kumo = close > ss_high // precio cierra arriba de la nube price_below_kumo = close < ss_low // precio cierra abajo de la nube price_cross_above_kumo = ta.crossover (close , ss_high ) //precio cruza la nube parte alta price_cross_below_kumo = ta.crossunder (close , ss_low ) // precio cruza la nube parte baja bullish = (price_above_kumo and price_cross_above_kumo) bearish = (price_below_kumo and price_cross_below_kumo) comprado = strategy.position_size > 0 vendido = strategy.position_size < 0 sl_long = price_above_kumo sl_short = price_below_kumo if ( not comprado and bullish and inDataRange and long_entry_enable) //realizar compra strategy.entry("Buy", strategy.long) //realizar salida long if (comprado and bearish and inDataRange and long_entry_enable) strategy.close ("Buy", comment = "cerrado") if ( not vendido and bearish and inDataRange and short_entry_enable) //realizar venta strategy.entry("Sell", strategy.short) //realizar salida long if (vendido and bullish and inDataRange and short_entry_enable) strategy.close ("Buy", comment = "cerrado") // Función Calcular TP y SL // Inputs para SL y TP tpenable = input.bool(true, title = "SL y TP metodo") moneyToSLPoints(money) => strategy.position_size !=0 and tpenable ? (money / syminfo.pointvalue / math.abs (strategy.position_size)) / syminfo.mintick : na p = moneyToSLPoints(input.float( 100.0, minval=0.1, step=10.0, title = "Take Profit $$")) l = moneyToSLPoints(input.float( 100.0, minval=0.1, step=10.0, title = "Stop Loss $$")) strategy.exit("Close", profit = p, loss = l) // debug plots for visualize SL & TP levels pointsToPrice(pp) => na(pp) ? na : strategy.position_avg_price + pp * math.sign(strategy.position_size) * syminfo.mintick pp = plot(pointsToPrice(p),color = color.rgb(76, 175, 79, 96), style = plot.style_linebr ) lp = plot(pointsToPrice(-l),color = color.rgb(76, 175, 79, 96), style = plot.style_linebr ) avg = plot( strategy.position_avg_price, color = color.rgb(76, 175, 79, 96), style = plot.style_linebr ) fill(pp, avg, color = color.rgb(76, 175, 79, 96)) fill(avg, lp, color = color.rgb(255, 82, 82, 97))