Crossover Moving Average Golden Cross dan Death Cross Strategi


Tarikh penciptaan: 2023-12-05 11:11:02 Akhirnya diubah suai: 2023-12-05 11:11:02
Salin: 0 Bilangan klik: 716
1
fokus pada
1621
Pengikut

Crossover Moving Average Golden Cross dan Death Cross Strategi

Ini adalah strategi moving average yang sangat klasik. Strategi ini menggunakan TENKAN dan KIJUN dua purata bergerak yang berbeza untuk membentuk isyarat garpu emas dan garpu mati untuk operasi panjang dan pendek.

Prinsip Strategi

Strategi ini adalah berdasarkan kepada satu kaedah analisis teknikal saham Jepun yang dikenali sebagai “tabel keseimbangan pertama”, menggunakan pelbagai purata bergerak seperti garis TENKAN dan garis KIJUN untuk menilai arah trend pasaran.

Pertama, garis TENKAN adalah garis 9 hari, yang mewakili trend jangka pendek; garis KIJUN adalah garis 26 hari, yang mewakili trend jangka menengah. Apabila jangka pendek melintasi pertengahan, ia menghasilkan isyarat beli; apabila jangka pendek melintasi pertengahan, ia menghasilkan isyarat jual.

Kemudian, strategi ini juga memperkenalkan garis udara dan garis awan cahaya. Garis udara adalah purata purata bergerak jangka pendek dan jangka menengah, dan garis awan cahaya B adalah purata bergerak 52 hari. Mereka membentuk pita awan bergelombang dan menentukan arah trend jangka panjang.

Akhirnya, untuk menyaring isyarat palsu, strategi ini juga mengesan sama ada harga berkaitan dengan garis OTO (garis kelewatan harga 26 hari). Isyarat beli dihasilkan hanya apabila harga berada di bawah garis OTO; isyarat jual dihasilkan hanya apabila harga berada di atas garis OTO.

Kelebihan Strategik

Ini adalah strategi purata bergerak yang sangat tipikal, dengan kelebihan dalam tiga aspek utama:

  1. Menggunakan garis purata untuk dua tempoh yang berbeza, ia dapat menentukan dengan berkesan arah trend dalam dua dimensi masa jangka pendek dan pertengahan.

  2. Menggunakan garis awan cahaya untuk menilai trend jangka panjang, mengelakkan melihat lebih banyak dalam pasaran turun lama.

  3. Mengesan hubungan harga dengan harga kelewatan boleh menyaring banyak isyarat palsu dan mengurangkan transaksi yang tidak perlu.

Oleh itu, strategi ini menggunakan pelbagai fungsi garis rata untuk menangkap peluang trend dalam tiga dimensi masa pendek, sederhana dan panjang.

Risiko Strategik

Risiko utama strategi ini ialah:

  1. Strategi garis rata mudah menghasilkan banyak isyarat palsu. Jika anda tidak dapat menetapkan parameter dengan baik, anda akan dipenjarakan kerana sering berdagang.

  2. Strategi ini memfokuskan kepada aspek teknikal dan tidak mempertimbangkan faktor asas. Isyarat teknikal juga mungkin tidak berkesan jika terdapat perubahan besar dalam prestasi syarikat atau dasar pasaran.

  3. Strategi ini hanya mengambil kira keputusan membeli dan menjual, tanpa menetapkan mekanisme hentian kerugian. Jika salah, kerugian boleh meningkat.

Oleh itu, kita perlu mencari sistem linear yang lebih maju, atau menetapkan stop loss yang munasabah, atau menambah isyarat asas, untuk menyempurnakan lagi strategi ini dan mengurangkan risiko.

Arah pengoptimuman strategi

Strategi ini juga boleh dioptimumkan dalam beberapa aspek:

  1. Mencari kombinasi parameter yang lebih stabil dan cekap. Kita boleh mencari nilai parameter yang menjadikan prestasi strategi lebih baik dengan lebih banyak pengulangan data.

  2. Peningkatan mekanisme hentian kerugian. Hentian kerugian yang munasabah dapat mengawal kerugian maksimum strategi yang berkesan.

  3. Menambah isyarat asas. Sebagai contoh, data dari revisi jangkaan prestasi dapat menilai prospek syarikat, sehingga meningkatkan keberkesanan strategi.

  4. Mengoptimumkan strategi garis OTO. Implementasi yang sedia ada adalah mudah, kita boleh mencari kaedah yang lebih stabil dan tepat untuk menilai hubungan harga dengan harga sejarah.

  5. Gabungan dengan isyarat pilihan saham. Dengan penambahan penarafan faktor seperti PE, ROE, dan lain-lain, penyaringan boleh dilakukan untuk beberapa penarafan yang kurang berkualiti.

ringkaskan

Ini adalah strategi purata bergerak yang sangat tipikal dan praktikal. Ia memberi perhatian kepada trend dalam tiga dimensi masa pendek, sederhana, dan panjang, menggunakan fungsi yang berbeza dari garis rata untuk merancang isyarat perdagangan, dan ia berfungsi dengan baik.

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