Chiến lược giao dịch định lượng dựa trên so sánh giá đóng cửa dài-ngắn của K-line và lọc EMA


Ngày tạo: 2023-12-27 14:38:28 sửa đổi lần cuối: 2023-12-27 14:38:28
sao chép: 1 Số nhấp chuột: 755
1
tập trung vào
1623
Người theo dõi

Chiến lược giao dịch định lượng dựa trên so sánh giá đóng cửa dài-ngắn của K-line và lọc EMA

1. Ghi chú về chiến lược

Chiến lược này được gọi là chiến lược giao dịch định lượng dựa trên so sánh giá đóng cửa K-line với lọc EMA. Chiến lược này được đánh giá bằng cách tính toán số lượng K-line đa đầu và K-line trống được tạo thành từ giá đóng cửa K-line trong một khoảng thời gian nhất định gần đây, kết hợp với lọc EMA, để đánh giá tín hiệu tháo lỗ khi phù hợp với khoảng thời gian giao dịch.

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

Lập luận cốt lõi của chiến lược này là số lượng K-line tăng lên và đóng cửa trong giai đoạn lookback gần đây upCloseCount và số lượng K-line giảm xuống CloseCount, nếu số lượng upCloseCount cao hơn thì được đánh giá là thị trường nhiều đầu, nếu số lượng đóng cửa giảm nhiều hơn thì được đánh giá là thị trường trống. Đồng thời kết hợp với chỉ số EMA để đánh giá xu hướng giá và làm bộ lọc, chỉ xem xét nhiều khi giá cao hơn EMA và xem xét trống khi giá thấp hơn EMA. Ngoài ra, chiến lược cũng thiết lập các giai đoạn giao dịch session1 và session2, trong đó chỉ giao dịch trong hai giai đoạn.

Lý do của việc này là:

Điều kiện kích hoạt tín hiệu đa đầu: inSession là true (trong khoảng thời gian giao dịch) và upCloseCount > downCloseCount (có nhiều dòng K của lệnh thu hồi) và close > ema (giá thu hồi cao hơn EMA) và currentSignal không phải là “long” (không có vị trí hiện tại)

Điều kiện kích hoạt tín hiệu đầu trống: inSession là true và downCloseCount > upCloseCount ((những dòng K đóng cửa giảm nhiều hơn) và close < ema ((giá đóng cửa thấp hơn EMA) và currentSignal không “short” ((không có vị trí hiện tại))

Ba, phân tích lợi thế chiến lược.

  1. Xác định xu hướng giá và tâm lý thị trường bằng cách so sánh nhiều điểm so với giá đóng cửa K trong một khoảng thời gian lịch sử nhất định, có hiệu quả theo xu hướng nhất định
  2. Kiểm tra xu hướng giá kết hợp với chỉ số EMA để tránh giao dịch sai trong tình trạng biến động
  3. Thiết lập một khoảng thời gian giao dịch cụ thể để tránh giao dịch trong môi trường ồn ào của các khoảng thời gian giao dịch không chính
  4. Cân bằng giữa xu hướng và giao dịch thường xuyên

Đánh giá rủi ro chiến lược

  1. Trong một thị trường trục xuất ngang, giá trục xuất trục xuất có thể dễ bị sai lệch, dẫn đến tổn thất không cần thiết.
  2. Các tham số EMA được thiết lập không chính xác cũng có thể gây ra hiệu ứng lọc kém.
  3. Không thiết lập đúng khoảng thời gian giao dịch, bạn sẽ mất rất nhiều cơ hội giao dịch hoặc giao dịch sai
  4. Không thể theo dõi hiệu quả các sự kiện do Gap gây ra

Phản ứng:

  1. Tối ưu hóa các tham số EMA để tìm sự cân bằng tốt nhất
  2. Tối ưu hóa thời gian giao dịch
  3. Kiểm soát tổn thất đơn lẻ kết hợp với chiến lược dừng lỗ

V. Chiến lược tối ưu hóa

  1. Tối ưu hóa thời gian giao dịch để tìm thời gian giao dịch tốt nhất
  2. Tối ưu hóa tham số cho chu kỳ EMA và độ trơn
  3. Tăng cơ chế dừng lỗ dựa trên ATR
  4. Thêm mô-đun nhận diện các sự kiện đột ngột để tránh rủi ro của Gap
  5. Xem xét kết hợp với các chỉ số khác để tìm các điều kiện lọc tốt hơn
  6. Kiểm tra sự khác biệt về hiệu suất của các giống khác nhau, điều chỉnh tham số cho sự khác biệt

VI. Kết luận

Chiến lược này xác định tín hiệu xu hướng trong thời gian giao dịch cụ thể được thiết lập bằng cách thống kê số lượng K-line nhiều đầu và K-line trống trong một khoảng thời gian lịch sử nhất định, kết hợp với hiệu quả lọc của chỉ số EMA. Có hiệu quả theo dõi xu hướng nhất định. Tuy nhiên, cũng có một số rủi ro giao dịch sai, cần được cải thiện bằng các phương pháp tối ưu hóa tham số, chiến lược dừng lỗ, tín hiệu lọc và các phương pháp khác để xác minh hiệu quả trong đo lại.

Mã nguồn chiến lược
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Up vs Down Close Candles Strategy with EMA and Session Time Frames", shorttitle="UvD Strat EMA Session", overlay=true)

// User input to define the lookback period, EMA period, and session strings for time frames
int lookback = input(20, title="Lookback Period")
int emaPeriod = input(50, title="EMA Period")
string session1 = input("0900-1200", title="Time Frame 1 Session")
string session2 = input("1300-1600", title="Time Frame 2 Session")

// Calculate the EMA
float ema = ta.ema(close, emaPeriod)

// State variable to track the current signal
var string currentSignal = na

// Counting up-close and down-close candles within the lookback period
int upCloseCount = 0
int downCloseCount = 0

if barstate.isnew
    upCloseCount := 0
    downCloseCount := 0
    for i = 0 to lookback - 1
        if close[i] > close[i + 1]
            upCloseCount += 1
        else if close[i] < close[i + 1]
            downCloseCount += 1

// Define the long (buy) and short (sell) conditions with EMA filter and session time frame
bool inSession = time(timeframe.period, session1) or time(timeframe.period, session2)
bool longCondition = inSession and upCloseCount > downCloseCount and close > ema and currentSignal != "long"
bool shortCondition = inSession and downCloseCount > upCloseCount and close < ema and currentSignal != "short"

// Enter or exit the market based on conditions
if longCondition
    currentSignal := "long"
    strategy.entry("Buy", strategy.long)

if shortCondition
    currentSignal := "short"
    strategy.entry("Sell", strategy.short)

// Exit logic for long and short positions
if currentSignal == "long" and strategy.position_size <= 0
    strategy.close("Sell")

if currentSignal == "short" and strategy.position_size >= 0
    strategy.close("Buy")

plot(ema, color=color.blue, title="EMA")