
Ini adalah strategi moving average linear yang sangat klasik. Strategi ini menggunakan TENKAN dan KIJUN dua periode yang berbeda dari moving average untuk membentuk sinyal forks dan forks untuk operasi panjang dan pendek.
Strategi ini terutama didasarkan pada metode analisis teknis saham Jepang yang disebut “tabel keseimbangan pertama”, yang menggunakan beberapa rata-rata bergerak seperti garis TENKAN dan garis KIJUN untuk menilai arah tren pasar.
Pertama, garis TENKAN adalah garis 9 hari, yang mewakili tren jangka pendek; garis KIJUN adalah garis 26 hari, yang mewakili tren jangka menengah. Ketika jangka pendek melewati pertengahan, menghasilkan sinyal beli; ketika jangka pendek melewati pertengahan, menghasilkan sinyal jual.
Kemudian, strategi ini juga memperkenalkan garis udara dan garis awan cahaya. Garis udara adalah rata-rata rata-rata bergerak jangka pendek dan menengah, dan garis awan cahaya B adalah rata-rata bergerak 52 hari.
Akhirnya, untuk memfilter sinyal palsu, strategi ini juga mendeteksi apakah harga terkait dengan garis OTO (garis keterlambatan harga 26 hari) dan hanya menghasilkan sinyal beli ketika harga berada di bawah garis OTO; hanya menghasilkan sinyal jual ketika harga berada di atas garis OTO.
Ini adalah strategi rata-rata bergerak yang sangat khas, dengan tiga keuntungan utama:
Dengan menggunakan garis rata-rata dari dua periode yang berbeda, dapat secara efektif menilai arah tren dalam dua dimensi waktu jangka pendek dan menengah.
Menggunakan garis awan cahaya untuk menilai tren jangka panjang, untuk menghindari melihat lebih banyak di pasar bearish jangka panjang.
Dengan mendeteksi hubungan antara harga dan harga penundaan, Anda dapat menyaring banyak sinyal palsu dan mengurangi transaksi yang tidak perlu.
Oleh karena itu, strategi ini memanfaatkan berbagai fungsi garis rata-rata secara komprehensif, sehingga dapat secara berurutan dan tepat waktu menangkap peluang tren dalam tiga dimensi waktu pendek, menengah, dan panjang.
Risiko utama dari strategi ini adalah:
Strategi rata-rata mudah menghasilkan banyak sinyal palsu. Jika tidak dapat mengatur parameter dengan baik, Anda akan dipenjara karena sering berdagang.
Strategi ini berfokus pada aspek teknis dan tidak mempertimbangkan faktor-faktor mendasar. Jika ada perubahan besar dalam kinerja perusahaan atau kebijakan pasar, sinyal teknis juga dapat gagal.
Strategi ini hanya mempertimbangkan keputusan untuk membeli dan menjual, tanpa pengaturan mekanisme stop loss. Jika penilaian salah, kerugian dapat meningkat.
Oleh karena itu, kita perlu mencari sistem linear yang lebih canggih, atau menetapkan stop loss yang masuk akal, atau menambahkan sinyal fundamental, untuk lebih menyempurnakan strategi ini dan mengurangi risiko.
Strategi ini juga dapat dioptimalkan dalam beberapa hal:
Mencari kombinasi parameter yang lebih stabil dan efisien. Kita dapat menemukan nilai parameter yang membuat kinerja strategi lebih baik dengan lebih banyak pengulangan data.
Peningkatan mekanisme stop loss. Stop loss yang masuk akal dapat secara efektif mengontrol kerugian maksimum dari strategi.
Menambahkan sinyal mendasar. Data seperti revisi ekspektasi kinerja dapat menilai prospek perusahaan, sehingga meningkatkan efektivitas strategi.
Optimalkan strategi garis OTO. Implementasi yang ada sangat sederhana, dan kita dapat mencari cara yang lebih stabil dan akurat untuk menilai hubungan harga dengan harga historis.
Sinyal pilihan saham yang digabungkan dengan rating dari faktor-faktor seperti PE, ROE, dan lain-lain, dapat menyaring beberapa indikator yang memiliki kualitas yang lebih buruk.
Ini adalah strategi rata-rata bergerak yang sangat khas dan praktis. Ini memperhatikan tren dalam tiga dimensi waktu pendek, menengah, dan panjang, dan menggunakan fungsi yang berbeda dari rata-rata untuk merancang sinyal perdagangan.
/*backtest
start: 2022-11-28 00:00:00
end: 2023-12-04 00:00:00
period: 1d
basePeriod: 1h
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/
// © mdeous
//@version=4
strategy(
title="Ichimoku Kinko Hyo Strategy",
shorttitle="Ichimoku Strategy",
overlay=true,
pyramiding=0,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
initial_capital=1000,
currency="USD",
commission_type=strategy.commission.percent,
commission_value=0.0
)
//
// SETTINGS
//
// Ichimoku
int TENKAN_LEN = input(title="Tenkan-Sen Length", defval=9, minval=1, step=1)
int KIJUN_LEN = input(title="Kijun-Sen Length", defval=26, minval=1, step=1)
int SSB_LEN = input(title="Senkou Span B Length", defval=52, minval=1, step=1)
int OFFSET = input(title="Offset For Chikou Span / Kumo", defval=26, minval=1, step=1)
// Strategy
int COOLDOWN = input(title="Orders Cooldown Period", defval=5, minval=0, step=1)
bool USE_CHIKOU = input(title="Use Imperfect Chikou Position Detection", defval=false)
//
// HELPERS
//
color _red = color.red
color _blue = color.blue
color _lime = color.lime
color _fuchsia = color.fuchsia
color _silver = color.silver
color _aqua = color.aqua
f_donchian(_len) => avg(lowest(_len), highest(_len))
//
// ICHIMOKU INDICATOR
//
float tenkan = f_donchian(TENKAN_LEN)
float kijun = f_donchian(KIJUN_LEN)
float ssa = avg(tenkan, kijun)
float ssb = f_donchian(SSB_LEN)
plot(tenkan, title="Tenkan", color=_silver)
plot(close, title="Chikou", offset=-OFFSET+1, color=_aqua)
_ssa = plot(ssa, title="SSA", offset=OFFSET-1, color=_lime)
_ssb = plot(ssb, title="SSB", offset=OFFSET-1, color=_red)
fill(_ssa, _ssb, color=ssa > ssb ? _lime : _fuchsia, transp=90)
//
// STRATEGY
//
// Check if price is "above or below" Chikou (i.e. historic price line):
// This detection is highly imperfect, as it can only know what Chikou position
// was 2*offset candles in the past, therefore if Chikou crossed the price
// line in the last 2*offset periods it won't be detected.
// Use of this detection is disabled by default,
float _chikou_val = close[OFFSET*2+1]
float _last_val = close[OFFSET+1]
bool above_chikou = USE_CHIKOU ? _last_val > _chikou_val : true
bool below_chikou = USE_CHIKOU ? _last_val < _chikou_val : true
// Identify short-term trend with Tenkan
bool _above_tenkan = min(open, close) > tenkan
bool _below_tenkan = max(open, close) < tenkan
// Check price position compared to Kumo
bool _above_kumo = min(open, close) > ssa
bool _below_kumo = max(open, close) < ssb
// Check if Kumo is bullish or bearish
bool bullish_kumo = ssa > ssb
bool bearish_kumo = ssa < ssb
// Correlate indicators to confirm the trend
bool bullish_trend = _above_tenkan and _above_kumo and bullish_kumo
bool bearish_trend = _below_tenkan and _below_kumo and bearish_kumo
// Build signals
bool buy1 = (close > open) and ((close > ssa) and (open < ssa)) // green candle crossing over SSA
bool buy2 = bullish_kumo and bearish_kumo[1] // bullish Kumo twist
bool sell1 = (close < open) and ((close < ssb) and (open > ssb)) // red candle crossing under SSB
bool sell2 = bearish_kumo and bullish_kumo[1] // bearish Kumo twist
bool go_long = below_chikou and (bullish_trend and (buy1 or buy2))
bool exit_long = above_chikou and (bearish_trend and (sell1 or sell2))
//
// COOLDOWN
//
f_cooldown() =>
_cd_needed = false
for i = 1 to COOLDOWN by 1
if go_long[i]
_cd_needed := true
break
_cd_needed
go_long := f_cooldown() ? false : go_long
//
// ORDERS
//
strategy.entry("buy", strategy.long, when=go_long)
strategy.close_all(when=exit_long)
//
// ALERTS
//
alertcondition(
condition=go_long,
title="Buy Signal",
message="{{exchange}}:{{ticker}}: A buy signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
)
alertcondition(
condition=exit_long,
title="Sell Signal",
message="{{exchange}}:{{ticker}}: A sell signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
)