Optimasi Strategi Tren Berdasarkan Bagan Awan Ichimoku

Penulis:ChaoZhang, Tanggal: 2024-01-19 14:45:21
Tag:

img

Gambaran umum

Strategi ini menggabungkan grafik awan Ichimoku dengan berbagai indikator tambahan untuk melacak tren. Ini terutama menggunakan awan Ichimoku untuk menentukan arah tren dan MACD, CMF, TSI dan indikator lain untuk menyaring untuk meningkatkan kualitas sinyal. Ini adalah strategi tren yang kuat berdasarkan penilaian komprehensif dari beberapa faktor.

Prinsip-prinsip

Strategi ini terutama memanfaatkan transformasi awan Ichimoku untuk menilai arah tren. Ini panjang ketika Tenkan-sen melintasi di atas awan dan pendek ketika Tenkan-sen melintasi di bawah. Sementara itu, menggunakan Chikou Span, histogram MACD, CMF dan TSI untuk penyaringan multi-lapisan untuk memastikan kualitas sinyal.

Secara khusus, sinyal panjang diaktifkan ketika:

  1. Tenkan-sen melintasi awan
  2. Awan luas dan Tenkan-sen berada di atas Kijun-sen
  3. Chikou Span berada di atas garis 0
  4. Harga penutupan di atas awan
  5. Histogram MACD di atas 0
  6. CMF lebih besar dari 0,1
  7. TSI di atas 0

Sinyal pendek dipicu ketika kondisi di atas dibalik. Dengan kriteria komprehensif seperti itu, sebagian besar sinyal palsu dapat disaring dan tren utama di pasar ditangkap.

Keuntungan

Keuntungan terbesar dari strategi ini adalah menyaring sinyal palsu dan menangkap tren yang kuat dengan menggabungkan beberapa indikator.

  1. Awan Ichimoku menentukan arah tren utama
  2. Indikator bantu lebih lanjut menyaring sinyal dan mengurangi risiko
  3. Secara komprehensif mempertimbangkan beberapa kerangka waktu untuk sinyal yang lebih andal
  4. Aturan yang ketat untuk hanya berdagang setup berkualitas tinggi dan menghindari pasar bergolak
  5. Mekanisme mengikuti tren untuk memaksimalkan keuntungan tren

Melalui penilaian semacam itu, strategi dapat secara efektif mengidentifikasi sektor panas jangka menengah dan panjang dan mendapatkan keuntungan dari perdagangan tren.

Risiko

Risiko utama dari strategi ini meliputi:

  1. Risiko terjadinya kebocoran palsu yang menyebabkan sinyal yang salah
  2. Risiko pembalikan tren yang menyebabkan hilangnya semua keuntungan
  3. Kesempatan yang hilang dengan frekuensi perdagangan yang relatif rendah

Solusi:

  1. Meredakan kriteria penyaringan dengan benar untuk meningkatkan frekuensi perdagangan
  2. Tambahkan kondisi stop loss untuk membatasi ukuran kerugian
  3. Mengoptimalkan parameter untuk meningkatkan akurasi sinyal

Peningkatan

Arah utama optimasi:

  1. Optimasi parameter melalui lebih banyak backtest untuk menemukan kombinasi parameter yang lebih baik

  2. Menambahkan mekanisme stop loss untuk mengendalikan risiko

  3. Tambahkan stop loss untuk mengunci keuntungan

  4. Uji lebih banyak indikator untuk menemukan kombinasi filter yang lebih baik

  5. Tambahkan aturan untuk membedakan real breakout

Kesimpulan

Strategi ini secara efektif menggabungkan awan Ichimoku dan beberapa indikator tambahan. Perbaikan lebih lanjut pada optimasi parameter, mekanisme stop loss, pemilihan indikator dapat meningkatkan stabilitas dan kualitas sinyal untuk pengembalian yang lebih tinggi. Strategi ini memiliki nilai praktis yang kuat.


/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-13 14:00:00
period: 1m
basePeriod: 1m
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/
// © exlux99

//@version=4
strategy("Ichimoku with MACD/ CMF/ TSI", overlay=true, margin_long=0, margin_short=0)



//Inputs
ts_bars = input(10, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(30, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(52, minval=1, title="Senkou-Span B Bars")
cs_offset = input(26, minval=1, title="Chikou-Span Offset")
ss_offset = input(26, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)


ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
fast_length = input(title="Fast Length", type=input.integer, defval=17)
slow_length = input(title="Slow Length", type=input.integer, defval=28)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(close, cs_offset-1) > 0
cs_cross_bear = mom(close, cs_offset-1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low


//CMF
lengthA = input(8, minval=1, title="CMF Length")
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthA) / sum(volume, lengthA)


//TSI
long = input(title="Long Length", type=input.integer, defval=8)
short = input(title="Short Length", type=input.integer, defval=8)
price = close
double_smooth(src, long, short) =>
	fist_smooth = ema(src, long)
	ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)



bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and hist > 0 and mf > 0.1 and tsi_value > 0
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and hist < 0  and mf < -0.1 and tsi_value < 0



strategy.entry("Long", strategy.long, when=bullish and long_entry)
strategy.entry("Short", strategy.short, when=bearish and short_entry)

strategy.close("Long", when=bearish and not short_entry)
strategy.close("Short", when=bullish and not long_entry)

Lebih banyak