Cross Moving Average Golden Cross Death Cross Strategi

Penulis:ChaoZhang, Tanggal: 2023-12-05 11:11:02
Tag:

img

Strategi ini menggunakan dua moving average, TENKAN dan KIJUN, dengan periode waktu yang berbeda untuk membentuk sinyal golden cross dan death cross untuk perdagangan panjang dan pendek.

Logika Strategi

Strategi ini terutama didasarkan pada metode analisis teknis saham Jepang yang disebut Ichimoku Kinko Hyo, menggunakan beberapa rata-rata bergerak seperti garis TENKAN dan KIJUN untuk menentukan 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 garis TENKAN melintasi di atas garis KIJUN, sinyal beli dihasilkan. Ketika garis TENKAN jatuh di bawah garis KIJUN, sinyal jual dihasilkan. Ini membentuk strategi golden cross dan death cross rata-rata bergerak klasik.

Kedua, strategi ini juga memperkenalkan garis Senkou Span A (SSA) dan garis Senkou Span B (SSB). Garis SSA adalah rata-rata garis TENKAN dan KIJUN sementara garis SSB adalah rata-rata bergerak 52 hari.

Akhirnya, untuk menyaring sinyal palsu, strategi ini juga memeriksa posisi harga dibandingkan dengan Chikou Span (harga penutupan tertunda 26 hari) hanya menghasilkan sinyal beli ketika harga di bawah Chikou dan sinyal jual ketika harga di atas Chikou.

Manfaat

Ini adalah strategi rata-rata bergerak yang sangat khas.

  1. Menggunakan dua rata-rata bergerak dari periode yang berbeda secara efektif menilai arah tren jangka pendek dan jangka menengah secara bersamaan.

  2. Tren jangka panjang ditentukan dengan pita Kumo untuk menghindari pembelian di pasar beruang jangka panjang.

  3. Membandingkan harga dengan garis Chikou tertunda menyaring banyak sinyal palsu dan mengurangi perdagangan yang tidak perlu.

Dengan menggunakan berbagai fungsi rata-rata bergerak, strategi ini dapat mengikuti tren dalam jangka waktu pendek, menengah dan panjang.

Risiko

Risiko utama dari strategi ini meliputi:

  1. Strategi rata-rata bergerak cenderung menghasilkan banyak sinyal palsu.

  2. Strategi ini sangat berfokus pada teknis tanpa mempertimbangkan fundamental. perubahan besar dalam kinerja bisnis atau kebijakan pasar dapat membatalkan sinyal teknis.

  3. Tidak ada mekanisme stop loss yang disertakan. Setelah penilaian arah pasar salah, kerugian dapat menumpuk.

Oleh karena itu, kita membutuhkan sistem rata-rata bergerak yang lebih maju, aturan stop loss yang tepat, atau sinyal fundamental tambahan, untuk lebih memperbaiki strategi ini dan mengurangi risiko.

Peluang Peningkatan

Strategi ini juga dapat ditingkatkan dalam hal berikut:

  1. Mencari set parameter yang lebih stabil dan efisien melalui lebih banyak backtest.

  2. Tambahkan aturan stop loss. Stop loss yang wajar membantu secara efektif mengendalikan kerugian maksimum.

  3. Tambahkan sinyal fundamental seperti revisi perkiraan laba yang berisi wawasan tentang prospek perusahaan.

  4. Mengoptimalkan strategi perbandingan harga jalur Chikou dengan solusi yang lebih stabil.

  5. Faktor penilaian seperti rasio PE dan ROE dapat menyaring saham berkualitas rendah.

Kesimpulan

Ini adalah strategi rata-rata bergerak yang sangat tipikal dan praktis. Dengan secara bersamaan memantau tren jangka pendek, menengah dan panjang, memanfaatkan berbagai fungsi rata-rata bergerak, ini menghasilkan sinyal perdagangan dengan kinerja yang solid. Kita dapat lebih memperbaikinya dengan menyesuaikan parameter, menambahkan stop loss, pemilihan saham dll. Secara keseluruhan ini adalah strategi kuantitatif yang menjanjikan yang layak untuk penelitian dan pelacakan.


/*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}})."
     )


Lebih banyak