Strategi Tren Super Ichimoku


Tanggal Pembuatan: 2023-11-06 16:32:11 Akhirnya memodifikasi: 2023-11-06 16:32:11
menyalin: 0 Jumlah klik: 1427
1
fokus pada
1617
Pengikut

Strategi Tren Super Ichimoku

Ringkasan

Strategi super 1 adalah strategi perdagangan tren yang didasarkan pada indikator super 1 untuk membuat keputusan perdagangan. Strategi ini menggunakan garis konversi, garis acuan, dan hubungan pita awan dari indikator super 1 untuk menilai arah tren saat ini, dan menggabungkan penarikan kembali harga untuk masuk.

Strategi super 1 terutama digunakan untuk perdagangan tren di garis tengah dan panjang, dan dapat menghasilkan keuntungan dari tren yang lebih besar. Strategi ini juga memiliki kemampuan identifikasi tren yang kuat.

Prinsip Strategi

Strategi super 1 didasarkan pada beberapa faktor berikut untuk menentukan arah perdagangan:

  1. Hubungan antara garis konversi dan garis acuan:Ketika garis konversi naik naik, turun turun

  2. Warna dari awan:Ketika awan berwarna hijau, Anda akan melihat mata uang yang lebih tinggi, dan jika merah, Anda akan melihat mata uang yang lebih rendah.

  3. Harga kembali naik:Untuk masuk ke dalam pasar, harga harus berada di luar garis konversi dan garis acuan.

Secara khusus, sinyal perdagangan strategi adalah:

Saya tidak tahu apa yang harus saya lakukan.

  • Garis konversi lebih tinggi dari garis acuan
  • Harga lebih tinggi dari garis konversi dan garis acuan
  • Garis konversi dan garis acuan di atas zona awan
  • Harga kembali di bawah garis konversi dan garis acuan

Tanda kosong:

  • Garis konversi di bawah garis acuan
  • Harga di bawah garis konversi dan garis acuan
  • Garis konversi dan garis acuan di bawah zona awan
  • Harga kembali di atas garis konversi dan garis acuan

Ketika sinyal melakukan lebih / kosong pada saat yang sama, operasi posisi terbuka dilakukan sesuai dengan situasi posisi.

Analisis Keunggulan

Strategi Super 1 memiliki keuntungan sebagai berikut:

  1. Menggunakan kombinasi indikator super 1 untuk menentukan arah tren, akurasi yang lebih tinggi

  2. Garis konversi dan garis acuan dapat dengan jelas menilai tren jangka pendek dan menengah, dan pita awan dapat menilai tren jangka panjang

  3. Kondisi yang mengharuskan harga untuk menarik kembali garis pivot, untuk menghindari kerugian yang ditimbulkan oleh false breakout

  4. Pengendalian risiko menggunakan harga set stop loss tertinggi dan terendah dalam periode terakhir, yang dapat secara efektif mengendalikan kerugian tunggal

  5. Keuntungan Lebih Baik Dari Kerugian, Keuntungan Lebih Stabil

  6. Dapat diterapkan dalam berbagai siklus, cocok untuk perdagangan tren lini tengah dan panjang

  7. Strategi yang jelas dan mudah dipahami, parameter yang dapat dioptimalkan

  8. Dapat bekerja dengan baik dalam berbagai lingkungan pasar

Analisis risiko

Strategi super 1 juga memiliki risiko sebagai berikut:

  1. Dalam pasar yang bergejolak, stop loss dapat sering dipicu dan mempengaruhi efek profit

  2. Ketika tren berubah dengan cepat, tidak dapat membalikkan posisi tepat waktu dapat menyebabkan kerugian

  3. Rasio keuntungan dan kerugian yang ditetapkan tidak cocok untuk semua varietas dan perlu menyesuaikan parameter untuk standar yang berbeda

  4. Ketika ada ruang yang terbatas untuk naik ke atas setelah melintasi awan, kemungkinan keuntungan yang terbatas.

  5. Parameter indikator membutuhkan pengoptimalan pengujian berulang, tidak cocok untuk varietas yang sering menyesuaikan parameter

Risiko dapat dikurangi dengan:

  1. Optimalisasi parameter agar lebih sesuai dengan karakteristik siklus dan varietas yang berbeda

  2. Kombinasi dengan indikator lain untuk memfilter sinyal masuk untuk menghindari terobosan palsu di pasar yang bergejolak

  3. Dinamika penyesuaian posisi stop loss untuk mengurangi probabilitas terjadinya stop loss

  4. Uji pengaturan profit dan loss yang berbeda

  5. Menggunakan metode seperti bentuk grafik untuk menentukan kekuatan sinyal tren

Arah optimasi

Strategi Super 1 dapat dioptimalkan dengan:

  1. Optimalkan parameter garis konversi dan garis acuan agar lebih sesuai dengan karakteristik varietas yang diperdagangkan

  2. Optimalkan parameter CloudBand untuk menilai tren jangka panjang dengan lebih akurat

  3. Algoritma pengoptimalan stop loss, seperti stop loss yang ditetapkan berdasarkan ATR atau stop loss yang dinamis

  4. Menyaring sinyal dalam kombinasi dengan indikator lainnya, mengkonfigurasi lebih banyak kondisi penyaringan, mengurangi kemungkinan masuk yang salah

  5. Mengoptimalkan setelan rasio untung rugi, menyesuaikan strategi untuk varietas dan siklus yang berbeda

  6. Menggunakan metode Martingale untuk mengelola posisi yang beradaptasi dengan frekuensi pergerakan pasar yang berbeda

  7. Menggunakan metode pembelajaran mesin untuk mengoptimalkan parameter dan mencapai stabilitas yang lebih tinggi

  8. Menetapkan periode perdagangan yang berbeda untuk menyesuaikan dengan karakteristik perdagangan di malam hari dan di antara perdagangan

Meringkaskan

Strategi super 1 secara keseluruhan adalah strategi yang sangat cocok untuk perdagangan tren lini tengah dan panjang. Ini menggunakan indikator super 1 untuk menentukan arah tren yang jelas, dan masuk dengan penyesuaian harga dapat secara efektif mencegah masuk yang salah. Dengan pengaturan parameter optimasi, strategi dapat mencapai keuntungan yang stabil pada lebih banyak varietas dan lebih banyak siklus.

Kode Sumber Strategi
/*backtest
start: 2022-11-05 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// Strategy based on the the SuperIchi indicator.
//
// Strategy was designed for the purpose of back testing. 
// See strategy documentation for info on trade entry logic.
// 
// Credits:
//  - SuperIchi [LUX]: LuxAlgo (https://www.tradingview.com/script/vDGd9X9y-SuperIchi-LUX/)

//@version=5
strategy("SuperIchi Strategy", overlay=true, initial_capital=1000, currency=currency.NONE, max_labels_count=500, default_qty_type=strategy.cash, commission_type=strategy.commission.percent, commission_value=0.01)

// =============================================================================
// STRATEGY INPUT SETTINGS
// =============================================================================

// ---------------
// Risk Management
// ---------------
swingLength = input.int(15, "Swing High/Low Lookback Length", group='Strategy: Risk Management', tooltip='Stop Loss is calculated by the swing high or low over the previous X candles')
accountRiskPercent = input.float(2, "Account percent loss per trade", step=0.1, group='Strategy: Risk Management', tooltip='Each trade will risk X% of the account balance')
profitFactor = input.float(2, "Profit Factor (R:R Ratio)", step = 0.1, group='Strategy: Risk Management')
useAtrOverride = input.bool(true, "Use Swing High/Low ATR Override", group='Strategy: Risk Management', tooltip='In some cases price may not have a large enough (if any) swing withing previous X candles. Turn this on to use an ATR value when swing high/low is lower than the given ATR value')
atrMultiplier = input.int(1, "Swing High/Low ATR Override Multiplier", group='Strategy: Risk Management')
atrLength = input.int(14, "Swing High/Low ATR Override Length", group='Strategy: Risk Management')

// -----------------
// Strategy Settings
// -----------------
pullbackLength = input.int(5, "Pullback Lookback Length", group='Strategy: Settings', tooltip='Number of candles to consider for a pullback into the moving averages (prerequisite for trade entry)')

// ----------
// Date Range
// ----------
start_year = input.int(title='Start Date', defval=2022, minval=2010, maxval=3000, group='Strategy: Date Range', inline='1')
start_month = input.int(title='', defval=1, group='Strategy: Date Range', inline='1', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
start_date = input.int(title='', defval=1, group='Strategy: Date Range', inline='1', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
end_year = input.int(title='End Date', defval=2023, minval=1800, maxval=3000, group='Strategy: Date Range', inline='2')
end_month = input.int(title='', defval=1, group='Strategy: Date Range', inline='2', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
end_date = input.int(title='', defval=1, group='Strategy: Date Range', inline='2', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
in_date_range = time >= timestamp(syminfo.timezone, start_year, start_month, start_date, 0, 0) and time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0)

// =============================================================================
// INDICATORS
// =============================================================================

// ---------------
// SuperIchi [LUX]
// ---------------
tenkan_len  = input(9,'Tenkan          ',inline='SuperIchi', group='Indicator: SuperIchi Settings')
tenkan_mult = input(2.,'',inline='SuperIchi', group='Indicator: SuperIchi Settings')

kijun_len   = input(26,'Kijun             ',inline='SuperIchi', group='Indicator: SuperIchi Settings')
kijun_mult  = input(4.,'',inline='SuperIchi', group='Indicator: SuperIchi Settings')

spanB_len   = input(52,'Senkou Span B ',inline='SuperIchi', group='Indicator: SuperIchi Settings')
spanB_mult  = input(6.,'',inline='SuperIchi', group='Indicator: SuperIchi Settings')

offset      = input(26,'Displacement', inline='SuperIchi', group='Indicator: SuperIchi Settings')
//------------------------------------------------------------------------------
avg(src,length,mult)=>
    atr = ta.atr(length)*mult
    up = hl2 + atr
    dn = hl2 - atr
    upper = 0.,lower = 0.
    upper := src[1] < upper[1] ? math.min(up,upper[1]) : up
    lower := src[1] > lower[1] ? math.max(dn,lower[1]) : dn
    
    os = 0,max = 0.,min = 0.
    os := src > upper ? 1 : src < lower ? 0 : os[1]
    spt = os == 1 ? lower : upper
    max := ta.cross(src,spt) ? math.max(src,max[1]) : os == 1 ? math.max(src,max[1]) : spt
    min := ta.cross(src,spt) ? math.min(src,min[1]) : os == 0 ? math.min(src,min[1]) : spt
    math.avg(max,min)
//------------------------------------------------------------------------------
tenkan = avg(close,tenkan_len,tenkan_mult)
kijun = avg(close,kijun_len,kijun_mult)

senkouA = math.avg(kijun,tenkan)
senkouB = avg(close,spanB_len,spanB_mult)
//------------------------------------------------------------------------------
tenkan_css = #2157f3 //blue
kijun_css = #ff5d00 //red

cloud_a = color.new(color.teal,80)
cloud_b = color.new(color.red,80)

chikou_css = #7b1fa2

plot(tenkan,'Tenkan-Sen',tenkan_css)
plot(kijun,'Kijun-Sen',kijun_css)

plot(ta.crossover(tenkan,kijun) ? kijun : na,'Crossover',#2157f3,3,plot.style_circles)
plot(ta.crossunder(tenkan,kijun) ? kijun : na,'Crossunder',#ff5d00,3,plot.style_circles)

A = plot(senkouA,'Senkou Span A',na,offset=offset-1)
B = plot(senkouB,'Senkou Span B',na,offset=offset-1)
fill(A,B,senkouA > senkouB ? cloud_a : cloud_b)

plot(close,'Chikou',chikou_css,offset=-offset+1,display=display.none)


// =============================================================================
// STRATEGY LOGIC
// =============================================================================
plotchar(kijun, "kijun", "", location = location.top)
plotchar(senkouA[offset-1], "senkouA", "", location = location.top)


plotchar(tenkan > kijun, "line above", "", location = location.top)
plotchar(close > tenkan, "price above", "", location = location.top)
plotchar(kijun > senkouA[offset-1], "above cloud", "", location = location.top)
// blue line above red line + price above both lines + both lines above cloud
longSen = tenkan > kijun and close > tenkan and kijun > senkouA[offset-1]
// red line below blue line + price below both lines + both lines below cloud
shortSen = tenkan < kijun and close < tenkan and kijun < senkouA[offset-1]

plotchar(longSen, "longSen", "", location = location.top)
plotchar(shortSen, "shortSen", "", location = location.top)

// Cloud is green
longSenkou = senkouA[offset-1] > senkouB[offset-1]
// Cloud is red
shortSenkou = senkouA[offset-1] < senkouB[offset-1]

// price must have pulled back below sen lines before entry
barsSinceLongPullback = ta.barssince(close < kijun and close < tenkan)
longPullback = barsSinceLongPullback <= pullbackLength
// price must have pulled back above sen lines before entry
barsSinceShortPullback = ta.barssince(close > kijun and close > tenkan)
shortPullback = barsSinceShortPullback <= pullbackLength

// plotchar(lowestClose, "lowestClose", "", location = location.top)
// plotchar(highestClose, "highestClose", "", location = location.top)

inLong = strategy.position_size > 0
inShort = strategy.position_size < 0

longCondition = longSen and longSenkou and longPullback and in_date_range
shortCondition = shortSen and shortSenkou and shortPullback and in_date_range

swingLow = ta.lowest(source=low, length=swingLength)
swingHigh = ta.highest(source=high, length=swingLength)

atr = useAtrOverride ? ta.atr(atrLength) * atrMultiplier : 0
longSl = math.min(close - atr, swingLow)
shortSl = math.max(close + atr, swingHigh)

longStopPercent = math.abs((1 - (longSl / close)) * 100)
shortStopPercent = math.abs((1 - (shortSl / close)) * 100)

longTpPercent = longStopPercent * profitFactor
shortTpPercent = shortStopPercent * profitFactor
longTp = close + (close * (longTpPercent / 100))
shortTp = close - (close * (shortTpPercent / 100))

// Position sizing (default risk 2% per trade)
riskAmt = strategy.equity * accountRiskPercent / 100
longQty = math.abs(riskAmt / longStopPercent * 100) / close
shortQty = math.abs(riskAmt / shortStopPercent * 100) / close

if (longCondition and not inLong)
    strategy.entry("Long", strategy.long, qty=longQty)
    strategy.exit("Long  SL/TP", from_entry="Long", stop=longSl, limit=longTp, alert_message='Long SL Hit')
    buyLabel = label.new(x=bar_index, y=high[1], color=color.green, style=label.style_label_up)
    label.set_y(id=buyLabel, y=low)
    label.set_tooltip(id=buyLabel, tooltip="Risk Amt: " + str.tostring(riskAmt) + "\nQty: " + str.tostring(longQty) + "\nSwing low: " + str.tostring(swingLow) + "\nStop Percent: " + str.tostring(longStopPercent) + "\nTP Percent: " + str.tostring(longTpPercent))

if (shortCondition and not inShort)
    strategy.entry("Short", strategy.short, qty=shortQty)
    strategy.exit("Short  SL/TP", from_entry="Short", stop=shortSl, limit=shortTp, alert_message='Short SL Hit')
    sellLabel = label.new(x=bar_index, y=high[1], color=color.red, style=label.style_label_up)
    label.set_y(id=sellLabel, y=low)
    label.set_tooltip(id=sellLabel, tooltip="Risk Amt: " + str.tostring(riskAmt) + "\nQty: " + str.tostring(shortQty) + "\nSwing high: " + str.tostring(swingHigh) + "\nStop Percent: " + str.tostring(shortStopPercent) + "\nTP Percent: " + str.tostring(shortTpPercent))