Tài nguyên đang được tải lên... tải...

Chiến lược giao dịch giao dịch chéo giữa hai mức trung bình động

Tác giả:ChaoZhang, Ngày: 2023-10-07 16:39:01
Tags:

Tổng quan

Chiến lược này sử dụng đường chéo vàng và đường chéo chết của các đường trung bình chuyển động kép để xác định xu hướng và tạo ra tín hiệu mua và bán. Khi đường chéo nhanh vượt qua đường chéo chậm từ dưới, một đường chéo vàng xảy ra và một tín hiệu mua được tạo ra. Khi đường chéo nhanh vượt qua đường chéo chết và một tín hiệu bán được tạo ra.

Chiến lược logic

Chiến lược bao gồm các thành phần sau:

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

  2. Tính toán trung bình động của các giá trị dao động, chẳng hạn như trung bình động Hull 20 ngày.

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

  4. Xác định liệu đường trung bình động vượt trên hoặc dưới đường trung bình động bị tụt hậu, tạo ra tín hiệu chữ thập vàng hoặc chữ thập chết.

  5. Phát hành tín hiệu mua và bán.

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

Khi đường trung bình động của dao động vượt qua đường trung bình di chuyển bị tụt hậu, một tín hiệu chéo vàng được tạo ra để đi dài. Khi đường trung bình di chuyển của dao động vượt qua đường trung bình di chuyển bị tụt hậu, một tín hiệu chéo chết được tạo ra để đi ngắn.

Bằng cách đánh giá sự chéo chéo của các đường trung bình động kép, hướng giao dịch được xác định.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. Sử dụng đường trung bình động kép lọc tín hiệu sai và cải thiện độ tin cậy tín hiệu.

  2. Kết hợp các đường trung bình di chuyển nhanh và chậm nắm bắt xu hướng trung hạn. MA nhanh nhạy với sự thay đổi giá trong khi MA chậm có chất lượng chậm. Kết hợp cả hai loại bỏ tiếng ồn ngắn hạn trong khi nắm bắt sự đảo ngược xu hướng trung hạn.

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

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

  5. Logic chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện, thân thiện với người mới bắt đầu.

Phân tích rủi ro

Những rủi ro của chiến lược này bao gồm:

  1. Hai MA crossover có tín hiệu chậm, có khả năng bỏ lỡ các điểm vào tốt nhất.

  2. Có xu hướng nhận tín hiệu sai trong các thị trường giới hạn phạm vi.

  3. Không thể xác định sức mạnh xu hướng, có nguy cơ thoát sớm trong thời gian thị trường tăng.

  4. Quá nhiều thông số điều chỉnh, khó tối ưu hóa cho kết hợp thông số tốt nhất.

  5. Không có cơ chế dừng lỗ, không thể kiểm soát lỗ giao dịch duy nhất.

Hướng dẫn tối ưu hóa

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

  1. Tối ưu hóa các loại và tham số MA, kiểm tra tính ổn định trên các thị trường khác nhau.

  2. Thêm các chỉ số xác định xu hướng như ADX để tránh giao dịch không cần thiết từ các tín hiệu sai.

  3. Thêm các cơ chế dừng lỗ như dừng lại hoặc dừng phần trăm để kiểm soát lỗ giao dịch duy nhất.

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

  5. Sử dụng máy học để tự động tối ưu hóa các tham số cho các thiết lập mạnh mẽ hơn.

  6. Xem xét điều kiện nhập cảnh nhẹ nhàng để giảm các giao dịch bị bỏ lỡ.

Tóm lại

Chiến lược chuyển động trung bình kép này nắm bắt các điểm đảo ngược xu hướng trung hạn bằng cách kết hợp trung bình chuyển động nhanh và chậm, lọc ra tiếng ồn thị trường ngắn hạn. Nó có lợi thế đơn giản, dễ hiểu và thân thiện với người mới bắt đầu. Nhưng nó cũng có những nhược điểm như tạo ra tín hiệu sai và không thể xác định sức mạnh xu hướng. Chiến lược có thể được cải thiện bằng cách tối ưu hóa các thông số MA, thêm các bộ lọc xu hướng, thiết lập các điều kiện dừng lỗ vv để phù hợp với môi trường thị trường khác nhau. Nhìn chung, chiến lược MA kép là một chiến lược dựa trên chỉ số kỹ thuật thực tế đáng được xác minh thông qua tối ưu hóa và thử nghiệm trực tiếp.


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

Thêm nữa