Chiến lược thoát trung bình di chuyển

Tác giả:ChaoZhang, Ngày: 23-11-2018 13:50:49
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch đột phá dựa trên đường trung bình động. Nó tính giá trung bình trong một khoảng thời gian nhất định như đường trung bình động. Khi giá vượt qua đường trung bình động, các tín hiệu giao dịch được tạo ra.

Chiến lược logic

Chiến lược này chủ yếu dựa trên chỉ số trung bình động. Nó sử dụng hàm sma để tính giá đóng trung bình trong một khoảng thời gian để có được trung bình động. Khi giá đóng gần nhất phá vỡ trung bình động lên, một tín hiệu mua được tạo ra. Khi giá đóng gần nhất phá vỡ trung bình động xuống, một tín hiệu bán được tạo ra.

Cụ thể, nó xác định nguồn (giá đóng gần đây) và độ dài của đường trung bình động trong chiến lược để có được chuỗi dữ liệu đường trung bình động. Sau đó nó đặt ra hai điều kiện: tạo lệnh dài khi giá vượt trên đường trung bình động; tạo lệnh ngắn khi giá vượt dưới đường trung bình động. Sau khi tạo các lệnh, nó cũng thiết lập lấy lợi nhuận và dừng lỗ: nó đóng một phần vị trí khi lệnh đạt tỷ lệ lợi nhuận cố định và đóng toàn bộ vị trí khi lệnh đạt đến giá lấy lợi nhuận hoặc dừng lỗ được đặt trước.

Phân tích lợi thế

Đây là một xu hướng đơn giản và thực tế theo chiến lược.

  1. Logic là rõ ràng và dễ hiểu và điều chỉnh các thông số.
  2. Mức trung bình động là một chỉ số kỹ thuật được sử dụng phổ biến và đáng tin cậy có thể lọc tiếng ồn thị trường và xác định xu hướng.
  3. Thiết lập lấy lợi nhuận và dừng lỗ cùng một lúc có thể khóa một số lợi nhuận và kiểm soát rủi ro.
  4. Nó chỉ có thể chạy với các tham số đơn giản, phù hợp với mức nhập lượng lượng tử.

Phân tích rủi ro

Mặc dù chiến lược này có nhiều lợi thế, nhưng vẫn có một số rủi ro:

  1. Mức trung bình động có xu hướng chậm lại và có thể bỏ lỡ sự đảo ngược ngắn hạn.
  2. Nó không xem xét môi trường thị trường tổng thể và dễ bị mắc kẹt.
  3. Không có tối ưu hóa tham số nào có thể ảnh hưởng đến hiệu suất chiến lược.
  4. Nó có thể có một số tín hiệu sai vì không có chỉ số nào khác được sử dụng để lọc.

Để kiểm soát những rủi ro này, chúng ta có thể tối ưu hóa bằng cách kết hợp các chỉ số khác để lọc, giới thiệu đánh giá xu hướng thị trường ngắn hạn hoặc sử dụng các phương pháp học máy để tìm các kết hợp tham số tối ưu.

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. Thêm các chỉ số kỹ thuật khác để đánh giá để xây dựng một hệ thống giao dịch và cải thiện tỷ lệ thắng.

  2. Thêm cơ chế dừng lỗ. Sử dụng dừng lỗ hoặc dừng lỗ dựa trên thời gian để khóa lợi nhuận và tránh tổn thất lớn hơn.

  3. Thực hiện tối ưu hóa tham số. Thay đổi tham số thời gian trung bình động để tìm kết hợp tốt nhất. Các loại trung bình động khác nhau cũng có thể được thử nghiệm.

  4. Sử dụng các thuật toán như random forest và LSTM kết hợp với nhiều yếu tố để xác định hướng xu hướng.

  5. Tối ưu hóa logic vào và ra. Thiết lập điều kiện lọc xu hướng để tránh giao dịch chống lại xu hướng gần cuối của nó. Xem xét sử dụng logic thoát giai đoạn.

Tóm lại

Nhìn chung, chiến lược breakout trung bình động này rất phù hợp như một chiến lược giao dịch lượng mới bắt đầu. Nó có logic đơn giản, dễ hiểu và vận hành, với một số hiệu ứng thực tế. Đồng thời, nó để lại nhiều không gian để thử nghiệm và tối ưu hóa hơn nữa. Chúng ta có thể giới thiệu nhiều chỉ số và mô hình kỹ thuật hơn trên cơ sở này để phát triển các chiến lược lượng tốt hơn.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-22 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  |-- Initialize Strategy Parameters:
strategy( 
     // |-- Strategy Title.
     title='[Tutorial][RS]Working with orders', 
     // |-- if shorttitle is specified, it will overwrite the name on the chart window.
     shorttitle='WwO', 
     // |-- if true it overlays current chart window, otherwise it creates a drawer to display plotting outputs.
     overlay=true, 
     // |-- Strategy unit type for default quantity, possible arguments: (strategy.cash, strategy.fixed, strategy.percent_of_equity)
     default_qty_type=strategy.cash, 
     // |-- Value to use for default trade size
     default_qty_value=1000, 
     // |-- Default Account size 
     initial_capital=100000, 
     // |-- Account Currency parameter
     currency=currency.USD
     )

//  |-- Strategy Profit/loss parameters:
profit = input(defval=5000, title='Take Profit')
loss = input(defval=5000, title='Stop Loss')
ratio = input(defval=2.0, title='Ratio at wich to take out a percentage off the table (take profit / ratio).')
percent = input(defval=50.0, title='Percentage of position to take profit.')
//  |-- Signal Parameters:
//  |
//  |-- Moving Average input source and length parameters.
src = input(defval=close)
length = input(defval=100)
//  |-- Moving Average Data series.
ma = sma(src, length)

//  |-- Condition for triggering a buy(long) order(trade).
if crossover(src, ma)
    //  |-- Create the order.
    strategy.order(id='Buy', long=true)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Buy Half Exit', from_entry='Buy', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Buy Full Exit', from_entry='Buy', qty_percent=100, profit=profit, loss=loss)
if crossunder(src, ma)
    //  |-- Create the order.
    strategy.order(id='Sell', long=false)
    //  |-- Issue a exit order to close a percentage of the trade when a specified ratio(take profit / ratio) is reached.
    strategy.exit(id='Sell Half Exit', from_entry='Sell', qty_percent=percent, profit=profit/ratio)
    //  |-- Issue a exit order to close the full position, when take profit or stop loss's are reached.
    strategy.exit(id='Sell Full Exit', from_entry='Sell Half Exit', qty_percent=100, profit=profit, loss=loss)

//  |-- Output Functions.
plot(series=ma, title='MA', color=black)


Thêm nữa