Chuyển đổi trung bình với chiến lược gia nhập gia tăng

Tác giả:ChaoZhang, Ngày: 2024-01-29 15:47:24
Tags:

img

Tổng quan

Chiến lược đảo ngược trung bình với mục nhập gia tăng được thiết kế bởi HedgerLabs là một kịch bản chiến lược giao dịch tiên tiến tập trung vào kỹ thuật đảo ngược trung bình trên thị trường tài chính.

Chiến lược logic

Trung tâm của chiến lược này là Đường trung bình di chuyển đơn giản (SMA) mà tất cả các bước vào và ra đều xoay quanh. Các nhà giao dịch có thể tùy chỉnh chiều dài MA để phù hợp với các phong cách giao dịch và khung thời gian khác nhau.

Khá độc đáo với chiến lược này là hệ thống nhập khẩu gia tăng. Nó bắt đầu một vị trí đầu tiên khi giá lệch khỏi MA bằng một tỷ lệ phần trăm được chỉ định. Các mục nhập tiếp theo sau đó được thực hiện theo các bước gia tăng, theo định nghĩa của nhà giao dịch, khi giá di chuyển xa hơn khỏi MA. Điều này nhằm mục đích tận dụng sự biến động ngày càng tăng.

Chiến lược quản lý các vị trí một cách thông minh bằng cách đi dài khi giá dưới MA và ngắn khi trên để thích nghi với các điều kiện thị trường thay đổi.

Các bước ra được xác định khi giá chạm vào MA, với mục tiêu đóng các vị trí tại các điểm đảo ngược tiềm năng để tối ưu hóa kết quả.

Với calc_on_every_tick được bật, chiến lược liên tục đánh giá thị trường để đảm bảo phản ứng nhanh chóng.

Phân tích lợi thế

Chiến lược đảo ngược trung bình với bước gia tăng có những lợi thế chính sau:

  1. Rất có hệ thống để giảm can thiệp cảm xúc
  2. Việc gia tăng nhập khẩu thu được lợi nhuận cao hơn trong thời gian biến động cao
  3. Các tham số có thể tùy chỉnh như thời gian MA phù hợp với các công cụ khác nhau
  4. Quản lý vị trí thông minh tự động điều chỉnh dài / ngắn
  5. Đặt mục tiêu thoát tối ưu để khôi phục các vị trí đóng

Phân tích rủi ro

Những rủi ro cần xem xét bao gồm:

  1. Những thất bại từ sự phụ thuộc vào chỉ số kỹ thuật
  2. Không có xu hướng gây ra việc rút tiền kéo dài
  3. Cài đặt MA kém dẫn đến dừng thường xuyên
  4. Kích thước vị trí lớn hơn từ việc nhập từng bước

Các lối ra có thể được tối ưu hóa, thêm các bộ lọc xu hướng, giảm kích thước vị trí để giảm thiểu các rủi ro trên.

Cơ hội gia tăng

Chiến lược có thể được tăng cường bằng cách:

  1. Thêm bộ lọc xu hướng để tránh giao dịch không thuận lợi
  2. Tối ưu hóa sự gia tăng nhập cảnh với sự biến động
  3. Bao gồm các điểm dừng để khóa lợi nhuận
  4. Thử nghiệm với các đường trung bình động khác nhau
  5. Sử dụng bộ lọc để giảm tín hiệu sai

Kết luận

Chiến lược đảo ngược trung bình với bước gia tăng tập trung vào các kỹ thuật đảo ngược trung bình bằng cách sử dụng phương pháp định kích thước vị trí gia tăng có hệ thống. Với các cài đặt tùy chỉnh, nó có thể thích nghi với các công cụ giao dịch khác nhau. Nó hoạt động tốt trong các thị trường và phù hợp với các nhà giao dịch có hệ thống ngắn hạn.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Mean Reversion with Incremental Entry by HedgerLabs", overlay=true, calc_on_every_tick=true)

// Input for adjustable settings
maLength = input.int(30, title="MA Length", minval=1)
initialPercent = input.float(5, title="Initial Percent for First Order", minval=0.01, step=0.01)
percentStep = input.float(1, title="Percent Step for Additional Orders", minval=0.01, step=0.01)

// Calculating Moving Average
ma = ta.sma(close, maLength)

// Plotting the Moving Average
plot(ma, "Moving Average", color=color.blue)

var float lastBuyPrice = na
var float lastSellPrice = na

// Function to calculate absolute price percentage difference
pricePercentDiff(price1, price2) =>
    diff = math.abs(price1 - price2) / price2 * 100
    diff

// Initial Entry Condition Check Function
initialEntryCondition(price, ma, initialPercent) =>
    pricePercentDiff(price, ma) >= initialPercent

// Enhanced Entry Logic for Buy and Sell
if (low < ma)
    if (na(lastBuyPrice))
        if (initialEntryCondition(low, ma, initialPercent))
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low
    else
        if (low < lastBuyPrice and pricePercentDiff(low, lastBuyPrice) >= percentStep)
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low

if (high > ma)
    if (na(lastSellPrice))
        if (initialEntryCondition(high, ma, initialPercent))
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high
    else
        if (high > lastSellPrice and pricePercentDiff(high, lastSellPrice) >= percentStep)
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high

// Exit Conditions - Close position if price touches the MA
if (close >= ma and strategy.position_size > 0)
    strategy.close("Buy")
    lastBuyPrice := na

if (close <= ma and strategy.position_size < 0)
    strategy.close("Sell")
    lastSellPrice := na

// Reset last order price when position is closed
if (strategy.position_size == 0)
    lastBuyPrice := na
    lastSellPrice := na


Thêm nữa