Chiến lược giao dịch Double Moving Average Golden Cross và Dead Cross


Ngày tạo: 2023-10-07 16:39:01 sửa đổi lần cuối: 2023-10-07 16:39:01
sao chép: 0 Số nhấp chuột: 678
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này sử dụng hai đường trung bình di chuyển để đánh giá xu hướng để phát ra tín hiệu mua và bán. Khi đường trung bình di chuyển nhanh từ phía dưới xuyên qua đường trung bình di chuyển chậm, nó tạo ra một dấu hiệu mua. Khi đường trung bình di chuyển nhanh từ phía trên xuyên qua đường trung bình di chuyển chậm, nó tạo ra một dấu hiệu mua.

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

Chiến lược này bao gồm:

  1. Giá trị của dao động được tính dưới dạng tỷ lệ phần trăm của giá. Giá trị của dao động là tỷ lệ phần trăm của giá trừ đi một giá trung bình. Giá trung bình được tính bằng trung bình của giá cao nhất và giá thấp nhất trong 20 ngày.

  2. Tính trung bình di chuyển của giá trị dao động, chẳng hạn như trung bình di chuyển của vỏ tàu 20 ngày.

  3. Tính toán độ trễ của trung bình di chuyển, chẳng hạn như độ trễ 12 ngày.

  4. Xác định xem đường trung bình di chuyển có bị trượt lên hay xuống hay không, có dấu hiệu trượt chậm đường trung bình di chuyển, có dấu hiệu trượt vàng hoặc trượt chết.

  5. Gửi tín hiệu mua và bán.

Cụ thể, chiến lược này tính toán đầu tiên giá trị dao động của giá, sau đó tính toán trung bình di chuyển của dao động, và sau đó tính toán độ trễ của trung bình di chuyển đó.

Khi oscillator di chuyển trên đường trung bình di chuyển, tạo ra một tín hiệu vàng, làm nhiều; khi oscillator di chuyển dưới đường trung bình di chuyển, tạo ra một tín hiệu chết, làm trống.

Do đó, bằng cách đánh giá sự giao nhau của hai đường trung bình di chuyển, quyết định hướng giao dịch.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Sử dụng trung bình di chuyển kép để lọc tín hiệu giả, tăng độ tin cậy của tín hiệu.

  2. Sử dụng sự kết hợp giữa đường trung bình nhanh và đường trung bình chậm để nắm bắt xu hướng trung bình. Đường trung bình nhanh nhạy cảm với sự thay đổi giá, đường trung bình chậm có độ trễ, sử dụng kết hợp có thể nắm bắt sự đảo ngược xu hướng trung bình trong khi loại bỏ tiếng ồn ngắn hạn.

  3. Việc sử dụng dao động có thể làm nổi bật điểm đột phá và tạo ra tín hiệu giao dịch rõ ràng hơn.

  4. Các thuật toán và tham số trung bình di chuyển có thể tùy chỉnh để phù hợp với các môi trường thị trường khác nhau.

  5. Chiến lược logic đơn giản và rõ ràng, dễ hiểu và thực hiện, phù hợp cho người mới học.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro sau:

  1. Xuyên qua các đường trung bình di chuyển đôi gây ra sự chậm trễ tín hiệu và có thể bỏ lỡ điểm vào tốt nhất.

  2. Đường trung bình di chuyển đôi dễ gây ra tín hiệu sai trong thị trường.

  3. Trong khi đó, các nhà đầu tư khác cũng có xu hướng tăng giá cao hơn trong những năm tới, trong khi các nhà đầu tư khác có xu hướng giảm giá cao hơn.

  4. PARAMETERS có quá nhiều tham số có thể điều chỉnh, không dễ để tối ưu hóa để tìm sự kết hợp tham số tối ưu.

  5. Không có cơ chế dừng lỗ, không thể kiểm soát tổn thất đơn lẻ.

Hướng tối ưu hóa

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

  1. Tối ưu hóa các loại và tham số của các trung bình di chuyển, kiểm tra sự ổn định của các kết hợp khác nhau trong các thị trường khác nhau.

  2. Tăng các chỉ số định hướng, như ADX, để tránh mở giao dịch không cần thiết vì tín hiệu sai.

  3. Thêm chiến lược dừng lỗ, chẳng hạn như dừng di chuyển hoặc dừng phần trăm, kiểm soát tổn thất đơn lẻ.

  4. Kết hợp với các chỉ số khác như năng lượng khối lượng giao dịch, RSI, v.v. để cải thiện chất lượng tín hiệu giao dịch.

  5. Sử dụng phương pháp học máy để tự động tối ưu hóa các tham số và có được các thiết lập tham số ổn định hơn.

  6. Xem xét việc nới lỏng các điều kiện nhập học để giảm thiểu khả năng bị bỏ phiếu.

Tóm tắt

Chiến lược này có lợi thế là đơn giản, dễ thực hiện, dễ hiểu và thân thiện với người mới. Nhưng cũng có những nhược điểm như tạo ra tín hiệu sai và không thể đánh giá được cường độ của xu hướng. Bằng cách tối ưu hóa tham số trung bình di chuyển, thêm các chỉ số đánh giá xu hướng, thiết lập các điều kiện dừng lỗ, v.v., chiến lược có thể được cải thiện để phù hợp hơn với môi trường thị trường khác nhau.

Mã nguồn chiến lược
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 4h
basePeriod: 15m
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/
// © EvoCrypto

//@version=4
strategy("Distance Oscillator Strategy- evo", shorttitle="Distance Oscillator Strategy")

// INPUTS {
na_1                =   input(false,    title="────────────{ Oscillator }──────────────")

// Osc_Src             =   input(close,    title="Oscillator Source                                ")

Example_Length      =   input(20,       title="Example Length", minval=1)
Osc_Src             =   (highest(Example_Length) + lowest(Example_Length)) / 2

// Strategy can not let you choose a Moving Average to connect with like the study version, so I use the MA above as example

Osc_Format          =   input("Percent",title="Oscillator Format",              options=["Percent", "Currency"]) 

na_2                =   input(false,    title="─────────────{ Average }──────────────")
Average_Type        =   input("Hull",   title="Average Type",                   options=["Hull", "Sma", "Ema", "Wma"])
Length              =   input(50,       title="Average Length", minval=1)
Lagg                =   input(12,       title="Average Lagg",   minval=1)
Display_MA          =   input(true,     title="Display Average")
// }

// SETTINGS {
Osc_Sum             =   
 Osc_Format == "Percent"  ? (close - Osc_Src) / close * 100 :
 Osc_Format == "Currency" ? (close - Osc_Src)               : na

Osc_MA              =   Display_MA == false ? na:
 Average_Type == "Hull"? hma(Osc_Sum, Length)   :
 Average_Type == "Sma" ? sma(Osc_Sum, Length)   :
 Average_Type == "Ema" ? ema(Osc_Sum, Length)   :
 Average_Type == "Wma" ? wma(Osc_Sum, Length)   : na
Osc_MA_1            =   Osc_MA[Lagg]

Cross_Up            =   crossover( Osc_MA, Osc_MA_1)
Cross_Down          =   crossunder(Osc_MA, Osc_MA_1)

Osc_Color           =   Osc_Sum > 0         ? color.new(#bbdefb, 70)  : Osc_Sum < 0          ? color.new(#000000, 70)  : na
Average_Color       =   Osc_MA  > Osc_MA_1  ? color.new(#311b92, 100) : Osc_MA  < Osc_MA_1   ? color.new(#b71c1c, 100) : na
// }

// PLOT {
plot(Osc_Sum,                           title="Oscillator", color=Osc_Color, style=plot.style_histogram, linewidth=2)

Plot_0              =   plot(Osc_MA,    title="Osc Average",color=#b71c1c, linewidth=2)
Plot_1              =   plot(Osc_MA_1,  title="Osc Average",color=#311b92, linewidth=2)
fill(Plot_0, Plot_1,                    title="Average",    color=Average_Color)

plotshape(Cross_Up   ? Osc_MA_1 : na,   title="Cross Up",   color=#bbdefb, location=location.absolute, size=size.tiny, style=shape.circle)
plotshape(Cross_Down ? Osc_MA_1 : na,   title="Cross Down", color=#000000, location=location.absolute, size=size.tiny, style=shape.circle)
// }

// STRATEGY {
if (Cross_Up)
    strategy.entry("Long", strategy.long)
if (Cross_Down)
    strategy.entry("Short", strategy.short)
// }