Sumber dimuat naik... memuat...

Palang Pindah Purata Palang Emas Strategi Palang Kematian

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

img

Strategi ini menggunakan dua purata bergerak, TENKAN dan KIJUN, dengan tempoh masa yang berbeza untuk membentuk isyarat salib emas dan salib kematian untuk perdagangan panjang dan pendek.

Logika Strategi

Strategi ini terutamanya berdasarkan kaedah analisis teknikal saham Jepun yang dipanggil Ichimoku Kinko Hyo, menggunakan pelbagai purata bergerak seperti garis TENKAN dan KIJUN untuk menentukan 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 sederhana. Apabila garis TENKAN melintasi di atas garis KIJUN, isyarat beli dihasilkan. Apabila garis TENKAN jatuh di bawah garis KIJUN, isyarat jual dihasilkan. Ini membentuk strategi salib emas dan salib kematian purata bergerak klasik.

Kedua, strategi ini juga memperkenalkan garis Senkou Span A (SSA) dan garis Senkou Span B (SSB). Garis SSA adalah purata garis TENKAN dan KIJUN manakala garis SSB adalah purata bergerak 52 hari. Bersama-sama mereka membentuk pita Kumo (awan) yang menentukan hala tuju trend jangka panjang - harga di atas awan menandakan trend menaik manakala harga di bawah awan menandakan trend menurun.

Akhirnya, untuk menapis isyarat palsu, strategi ini juga mengkaji kedudukan harga berbanding Chikou Span (harga penutupan ditangguhkan 26 hari) hanya menghasilkan isyarat beli apabila harga di bawah Chikou dan isyarat jual apabila harga di atas Chikou.

Manfaat

Ini adalah strategi purata bergerak yang sangat tipikal.

  1. Menggunakan dua purata bergerak dari tempoh yang berbeza dengan berkesan menilai arah trend jangka pendek dan jangka menengah secara serentak.

  2. Trend jangka panjang ditentukan dengan pita Kumo untuk mengelakkan membeli di pasaran beruang jangka panjang.

  3. Membandingkan harga dengan garis Chikou yang tertunda menapis banyak isyarat palsu dan mengurangkan perdagangan yang tidak perlu.

Dengan menggunakan pelbagai fungsi purata bergerak dengan mahir, strategi ini dapat mengikuti trend dalam jangka masa pendek, sederhana dan panjang.

Risiko

Risiko utama strategi ini termasuk:

  1. Strategi purata bergerak cenderung menghasilkan banyak isyarat palsu. Perdagangan yang kerap disebabkan oleh parameter yang tidak tepat boleh menyebabkan kerugian.

  2. Strategi ini sangat memberi tumpuan kepada teknikal tanpa mempertimbangkan asas. Perubahan besar dalam prestasi perniagaan atau dasar pasaran boleh membatalkan isyarat teknikal.

  3. Tiada mekanisme stop loss termasuk. Apabila penilaian arah pasaran salah, kerugian boleh terkumpul.

Oleh itu, kita memerlukan sistem purata bergerak yang lebih maju, peraturan stop loss yang betul, atau isyarat asas tambahan, untuk memperbaiki lagi strategi ini dan mengurangkan risiko.

Peluang Peningkatan

Strategi ini juga boleh ditingkatkan dalam aspek berikut:

  1. Cari set parameter yang lebih stabil dan cekap melalui lebih banyak backtest.

  2. Tambah peraturan stop loss. Stop loss yang munasabah membantu mengawal kerugian maksimum dengan berkesan.

  3. Menambah isyarat asas seperti penilaian anggaran pendapatan yang mengandungi wawasan mengenai prospek syarikat.

  4. Mengoptimumkan strategi perbandingan harga barisan Chikou dengan penyelesaian yang lebih stabil.

  5. Menggabungkan isyarat pemilihan saham. Faktor penarafan seperti nisbah PE dan ROE boleh menapis stok berkualiti rendah.

Kesimpulan

Ini adalah strategi purata bergerak yang sangat tipikal dan praktikal. Dengan secara serentak memantau trend jangka pendek, sederhana dan jangka panjang, menggunakan pelbagai fungsi purata bergerak, ia menghasilkan isyarat perdagangan dengan prestasi yang kukuh. Kita boleh meningkatkannya dengan penyesuaian parameter, menambah stop loss, pemilihan stok dll. Secara keseluruhan ini adalah strategi kuantitatif yang menjanjikan yang layak untuk penyelidikan dan penjejakan.


/*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 lanjut