Chiến lược giao cắt đường trung bình động Golden Cross và Death Cross


Ngày tạo: 2023-12-05 11:11:02 sửa đổi lần cuối: 2023-12-05 11:11:02
sao chép: 0 Số nhấp chuột: 713
1
tập trung vào
1619
Người theo dõi

Chiến lược giao cắt đường trung bình động Golden Cross và Death Cross

Đây là một chiến lược chuyển động trung bình rất cổ điển. Chiến lược này sử dụng trung bình chuyển động của hai chu kỳ khác nhau của TENKAN và KIJUN để tạo ra tín hiệu vàng và chết, để hoạt động ngắn và dài.

Nguyên tắc chiến lược

Chiến lược này chủ yếu dựa trên một phương pháp phân tích kỹ thuật chứng khoán Nhật Bản được gọi là bảng cân bằng một mắt, sử dụng nhiều đường trung bình di chuyển như đường TENKAN và đường KIJUN để đánh giá xu hướng của thị trường.

Đầu tiên, đường TENKAN là đường 9 ngày, đại diện cho xu hướng ngắn hạn; đường KIJUN là đường 26 ngày, đại diện cho xu hướng trung hạn. Khi ngắn hạn vượt qua trung hạn, tạo ra tín hiệu mua; khi ngắn hạn vượt qua trung hạn, tạo ra tín hiệu bán. Như vậy, tạo thành một chiến lược cổ điển của đường trung bình di chuyển.

Sau đó, chiến lược này cũng giới thiệu các đường không khí và đường mây quang. Đường không khí là số trung bình của các đường trung bình di chuyển ngắn hạn và trung hạn, đường mây quang B là đường trung bình di chuyển 52 ngày. Chúng tạo thành các dải mây thạch, xác định hướng xu hướng dài hạn.

Cuối cùng, để lọc các tín hiệu giả mạo, chiến lược này cũng phát hiện xem giá có liên quan đến đường OTO (đường trì hoãn giá 26 ngày) hay không. Chỉ khi giá dưới đường OTO mới tạo ra tín hiệu mua; chỉ khi giá trên đường OTO mới tạo ra tín hiệu bán.

Lợi thế chiến lược

Đây là một chiến lược trung bình di chuyển rất điển hình, và lợi thế của nó được thể hiện qua ba khía cạnh:

  1. Sử dụng đường trung bình của hai chu kỳ khác nhau, có thể xác định hiệu quả hướng xu hướng trong hai chiều thời gian ngắn hạn và trung hạn.

  2. Sử dụng đường quang điện để đánh giá xu hướng dài hạn, tránh nhìn nhiều hơn trong thị trường giảm giá dài hạn.

  3. Việc phát hiện mối quan hệ giữa giá và giá trì hoãn có thể lọc ra nhiều tín hiệu giả và giảm các giao dịch không cần thiết.

Vì vậy, chiến lược này tích hợp nhiều tính năng của đường trung bình, có thể bắt kịp các cơ hội xu hướng ngắn, trung và dài ba chiều.

Rủi ro chiến lược

Những rủi ro chính của chiến lược này là:

  1. Chiến lược đường trung bình dễ tạo ra rất nhiều tín hiệu giả. Nếu không thiết lập các tham số tốt, bạn sẽ bị giam giữ vì giao dịch thường xuyên.

  2. Chiến lược này tập trung vào các khía cạnh kỹ thuật mà không xem xét các yếu tố cơ bản. Các tín hiệu kỹ thuật cũng có thể bị mất hiệu lực nếu có sự thay đổi đáng kể trong hoạt động của công ty hoặc chính sách thị trường.

  3. Chiến lược này chỉ tính đến các quyết định mua và bán mà không có cơ chế dừng lỗ. Nếu phán đoán sai, tổn thất có thể tăng lên.

Vì vậy, chúng ta cần phải tìm kiếm một hệ thống thống nhất định tiên tiến hơn, hoặc thiết lập một lệnh dừng hợp lý, hoặc thêm các tín hiệu cơ bản để cải thiện chiến lược này hơn nữa và giảm thiểu rủi ro.

Hướng tối ưu hóa chiến lược

Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:

  1. Chúng ta có thể tìm ra các giá trị tham số làm cho chiến lược hoạt động tốt hơn thông qua nhiều dữ liệu phản hồi.

  2. Tăng cơ chế ngăn chặn thiệt hại. Hạn chế thiệt hại hợp lý có thể kiểm soát hiệu quả các chiến lược thiệt hại tối đa.

  3. Thêm tín hiệu cơ bản. Ví dụ, dữ liệu về kỳ vọng hiệu suất có thể đánh giá triển vọng của công ty, do đó cải thiện hiệu quả chiến lược.

  4. Tối ưu hóa chiến lược đường OTO. Các thực hiện hiện có rất đơn giản, chúng ta có thể tìm cách để xác định chính xác và ổn định hơn về mối quan hệ giữa giá và giá lịch sử.

  5. Kết hợp với tín hiệu chọn cổ phiếu. Thêm các yếu tố đánh giá như PE, ROE, có thể lọc ra một số chỉ số chất lượng kém hơn.

Tóm tắt

Đây là một chiến lược trung bình di chuyển rất điển hình và thực tế. Nó đồng thời chú ý đến các xu hướng trong ba chiều thời gian ngắn, trung bình và dài, sử dụng các tính năng khác nhau của đường trung bình để thiết kế tín hiệu giao dịch, hiệu quả rất tốt.

Mã nguồn chiến lược
/*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}})."
     )