
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.
Strategi super 1 didasarkan pada beberapa faktor berikut untuk menentukan arah perdagangan:
Hubungan antara garis konversi dan garis acuan:Ketika garis konversi naik naik, turun turun
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.
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.
Tanda kosong:
Ketika sinyal melakukan lebih / kosong pada saat yang sama, operasi posisi terbuka dilakukan sesuai dengan situasi posisi.
Strategi Super 1 memiliki keuntungan sebagai berikut:
Menggunakan kombinasi indikator super 1 untuk menentukan arah tren, akurasi yang lebih tinggi
Garis konversi dan garis acuan dapat dengan jelas menilai tren jangka pendek dan menengah, dan pita awan dapat menilai tren jangka panjang
Kondisi yang mengharuskan harga untuk menarik kembali garis pivot, untuk menghindari kerugian yang ditimbulkan oleh false breakout
Pengendalian risiko menggunakan harga set stop loss tertinggi dan terendah dalam periode terakhir, yang dapat secara efektif mengendalikan kerugian tunggal
Keuntungan Lebih Baik Dari Kerugian, Keuntungan Lebih Stabil
Dapat diterapkan dalam berbagai siklus, cocok untuk perdagangan tren lini tengah dan panjang
Strategi yang jelas dan mudah dipahami, parameter yang dapat dioptimalkan
Dapat bekerja dengan baik dalam berbagai lingkungan pasar
Strategi super 1 juga memiliki risiko sebagai berikut:
Dalam pasar yang bergejolak, stop loss dapat sering dipicu dan mempengaruhi efek profit
Ketika tren berubah dengan cepat, tidak dapat membalikkan posisi tepat waktu dapat menyebabkan kerugian
Rasio keuntungan dan kerugian yang ditetapkan tidak cocok untuk semua varietas dan perlu menyesuaikan parameter untuk standar yang berbeda
Ketika ada ruang yang terbatas untuk naik ke atas setelah melintasi awan, kemungkinan keuntungan yang terbatas.
Parameter indikator membutuhkan pengoptimalan pengujian berulang, tidak cocok untuk varietas yang sering menyesuaikan parameter
Risiko dapat dikurangi dengan:
Optimalisasi parameter agar lebih sesuai dengan karakteristik siklus dan varietas yang berbeda
Kombinasi dengan indikator lain untuk memfilter sinyal masuk untuk menghindari terobosan palsu di pasar yang bergejolak
Dinamika penyesuaian posisi stop loss untuk mengurangi probabilitas terjadinya stop loss
Uji pengaturan profit dan loss yang berbeda
Menggunakan metode seperti bentuk grafik untuk menentukan kekuatan sinyal tren
Strategi Super 1 dapat dioptimalkan dengan:
Optimalkan parameter garis konversi dan garis acuan agar lebih sesuai dengan karakteristik varietas yang diperdagangkan
Optimalkan parameter CloudBand untuk menilai tren jangka panjang dengan lebih akurat
Algoritma pengoptimalan stop loss, seperti stop loss yang ditetapkan berdasarkan ATR atau stop loss yang dinamis
Menyaring sinyal dalam kombinasi dengan indikator lainnya, mengkonfigurasi lebih banyak kondisi penyaringan, mengurangi kemungkinan masuk yang salah
Mengoptimalkan setelan rasio untung rugi, menyesuaikan strategi untuk varietas dan siklus yang berbeda
Menggunakan metode Martingale untuk mengelola posisi yang beradaptasi dengan frekuensi pergerakan pasar yang berbeda
Menggunakan metode pembelajaran mesin untuk mengoptimalkan parameter dan mencapai stabilitas yang lebih tinggi
Menetapkan periode perdagangan yang berbeda untuk menyesuaikan dengan karakteristik perdagangan di malam hari dan di antara perdagangan
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.
/*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))