Pengoptimuman Strategi Trend Berdasarkan Carta Awan Ichimoku

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

img

Ringkasan

Strategi ini menggabungkan carta awan Ichimoku dengan pelbagai penunjuk tambahan untuk mengesan trend. Ia terutamanya menggunakan awan Ichimoku untuk menentukan arah trend dan MACD, CMF, TSI dan penunjuk lain untuk menapis untuk meningkatkan kualiti isyarat. Ini adalah strategi trend yang kuat berdasarkan penilaian komprehensif pelbagai faktor.

Prinsip-prinsip

Strategi ini terutamanya menggunakan transformasi awan Ichimoku untuk menilai arah trend. Ia pergi lama apabila Tenkan-sen melintasi di atas awan dan pergi pendek apabila Tenkan-sen melintasi di bawah. Sementara itu, ia menggunakan Chikou Span, histogram MACD, CMF dan TSI untuk penapisan pelbagai lapisan untuk memastikan kualiti isyarat.

Khususnya, isyarat panjang dicetuskan apabila:

  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 daripada 0,1
  7. TSI melebihi 0

Isyarat pendek diaktifkan apabila keadaan di atas terbalik. Dengan kriteria yang komprehensif, kebanyakan isyarat palsu dapat disaring dan trend utama di pasaran ditangkap.

Kelebihan

Kelebihan terbesar strategi ini adalah menapis isyarat palsu dan menangkap trend yang kuat dengan menggabungkan beberapa penunjuk.

  1. Awan Ichimoku menentukan arah trend utama
  2. Penunjuk tambahan lebih banyak menapis isyarat dan mengurangkan risiko
  3. Secara komprehensif mempertimbangkan pelbagai jangka masa untuk isyarat yang lebih boleh dipercayai
  4. Peraturan yang ketat untuk berdagang hanya setup berkualiti tinggi dan mengelakkan pasaran bergelombang
  5. Mekanisme mengikut trend untuk memaksimumkan keuntungan trend

Melalui pertimbangan sedemikian, strategi dapat mengenal pasti sektor panas jangka menengah dan panjang dengan berkesan dan mendapat keuntungan daripada perdagangan trend.

Risiko

Risiko utama strategi ini termasuk:

  1. Risiko pecah palsu yang menyebabkan isyarat yang salah
  2. Risiko pembalikan trend yang membawa kepada kehilangan semua keuntungan
  3. Peluang yang hilang dengan kekerapan dagangan yang agak rendah

Penyelesaian:

  1. Meredakan kriteria penapisan dengan betul untuk meningkatkan kekerapan perdagangan
  2. Tambah keadaan stop loss untuk mengehadkan saiz kerugian
  3. Mengoptimumkan parameter untuk meningkatkan ketepatan isyarat

Peningkatan

Arah pengoptimuman utama:

  1. Pengoptimuman parameter melalui lebih banyak backtests untuk mencari kombinasi parameter yang lebih baik

  2. Tambah mekanisme stop loss untuk mengawal risiko

  3. Tambah stop loss untuk mengunci keuntungan

  4. Uji lebih banyak penunjuk untuk mencari gabungan penapis yang lebih baik

  5. Tambah peraturan untuk membezakan pelarian sebenar

Kesimpulan

Strategi ini menggabungkan awan Ichimoku dengan berkesan dan pelbagai penunjuk tambahan. Penambahbaikan lanjut pada pengoptimuman parameter, mekanisme stop loss, pemilihan penunjuk dapat meningkatkan kestabilan dan kualiti isyarat untuk pulangan yang lebih tinggi. Strategi ini mempunyai nilai praktikal 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 lanjut