Ichimoku Yin Yang Candlestick Breakout Strategi

Penulis:ChaoZhang, Tanggal: 2023-12-21 10:44:37
Tag:

img

Gambaran umum

Strategi ini didasarkan pada indikator yang sangat terkenal dalam analisis teknis - Ichimoku Kinko Hyo, menggunakan bentuk awan dan hubungan antara harga dan awan untuk menentukan arah tren dan menemukan peluang perdagangan.

Prinsip Strategi

Strategi ini menggunakan beberapa komponen dari indikator Ichimoku Kinko Hyo, termasuk Tenkan-Sen (Garis Konversi), Kijun-Sen (Garis Dasar), Senkou Span A (Leading Span A), Senkou Span B (Leading Span B) dan Chikou Span (Lagging Span).

Secara khusus, strategi ini menilai apakah harga menembus lapisan awan terutama berdasarkan garis Senkou Span A dan Senkou Span B. Area antara kedua garis ini membentuk lapisan awan. Ketika harga penutupan menembus tepi atas lapisan awan, sinyal beli dihasilkan; ketika harga penutupan menembus tepi bawah lapisan awan, sinyal jual dihasilkan.

Selain itu, strategi juga menetapkan harga stop loss dan take profit. Ini menggunakan syminfo.pointvalue dan informasi posisi strategi untuk menghitung poin profit dan loss, dan kemudian mengubahnya menjadi harga tertentu.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggunakan indikator Ichimoku untuk menentukan arah tren dapat secara efektif menyaring kebisingan pasar dan mengidentifikasi tren jangka menengah dan panjang
  2. Menembus lapisan awan membentuk sinyal yang dapat menghindari kerugian yang disebabkan oleh pecah palsu
  3. Menggabungkan pengaturan stop loss dan take profit dapat membatasi kerugian tunggal dan mengunci keuntungan
  4. Parameter yang dapat disesuaikan memungkinkan pengujian dampak dari parameter yang berbeda pada kinerja strategi
  5. Lapisan awan dan komponen Ichimoku lainnya membentuk sinyal perdagangan grafis yang intuitif

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Posisi jangka menengah hingga panjang dapat menyebabkan kerugian mengambang yang lebih besar
  2. Sinyal keluar mungkin terlambat, kehilangan titik masuk terbaik
  3. Pengepungan palsu dapat menyebabkan sinyal dan kerugian yang salah
  4. Periode kepemilikan yang terlalu lama menimbulkan biaya yang lebih tinggi
  5. Harga stop loss dan take profit yang ditetapkan dapat dipecahkan melalui

Pengendalian:

  1. Singkatnya memperpendek periode kepemilikan untuk mengurangi risiko kerugian variabel tunggal
  2. Masukkan indikator lain untuk menentukan efektivitas sinyal pecah
  3. Meningkatkan efektivitas stop loss dan mengambil keuntungan untuk menghindari terjebak dalam posisi yang salah
  4. Mengoptimalkan periode penyimpanan untuk mengurangi biaya

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Uji kombinasi parameter yang berbeda untuk menemukan parameter yang optimal
  2. Masukkan indikator lain untuk penyaringan sinyal untuk menghindari gangguan palsu
  3. Dinamis menyesuaikan stop loss dan mengambil tingkat keuntungan, jejak stop loss
  4. Sesuaikan kriteria keluar: sinyal terbalik mematahkan lapisan awan, pemicu retracement harga
  5. Tambahkan mekanisme manajemen posisi

Kesimpulan

Secara umum, Strategi Breakout Lilin Ichimoku Yin Yang adalah strategi khas yang menggunakan indikator Ichimoku Kinko Hyo untuk menentukan arah tren jangka menengah-panjang untuk breakout. Strategi ini memiliki keuntungan seperti parameter yang dapat disesuaikan, bentuk yang intuitif, dan sinyal yang dapat dilihat. Strategi ini juga memiliki beberapa risiko seperti breakout palsu dan risiko kepemilikan. Dengan optimalisasi parameter, penyaringan sinyal, pengaturan stop loss / take profit, dll., Risiko dapat dikurangi dan stabilitas strategi ditingkatkan. Strategi ini cocok untuk perdagangan posisi jangka menengah-panjang, terutama memasuki arah tren secara efisien ketika sinyal terbentuk dengan memecahkan lapisan awan. Secara keseluruhan, ini adalah strategi dengan nilai kuantitatif yang praktis.


/*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))

Lebih banyak