Chiến lược hai hướng định lượng


Ngày tạo: 2023-12-29 16:29:21 sửa đổi lần cuối: 2023-12-29 16:29:21
sao chép: 0 Số nhấp chuột: 601
1
tập trung vào
1621
Người theo dõi

Chiến lược hai hướng định lượng

Tổng quan

Chiến lược này là chiến lược kết hợp dựa trên hai chỉ số EMA và chỉ số Bull Power. Tên của chiến lược bao gồm các từ khóa “Hydrogen Citrate and Hydrogen Dioxide”, làm nổi bật tính năng sử dụng hai chỉ số độc lập.

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

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

  1. Chỉ số 220 EMA. Chỉ số này tính EMA ngày 2 và ngày 20, tạo ra tín hiệu mua khi giá vượt qua EMA từ dưới lên, tạo ra tín hiệu bán khi giá vượt qua EMA từ trên xuống.
  2. Chỉ số Bull Power. Chỉ số này dựa trên mối quan hệ của dòng K hiện tại với dòng K trước đó để tính toán sức mạnh không gian và tạo ra tín hiệu giao dịch tương ứng khi sức mạnh không gian lớn hơn ngưỡng được đặt.

Hai phần của tín hiệu cần được kích hoạt cùng một lúc để mở vị trí. Ví dụ: EMA Gold Fork và Bull Power đồng thuận để mở nhiều vị trí, EMA Dead Fork và Bull Power đồng thuận để mở vị trí trống.

Phân tích lợi thế

  1. Chỉ số kép kết hợp lọc tín hiệu giả. Chỉ số đơn dễ bị ảnh hưởng bởi các yếu tố bên ngoài để tạo ra tín hiệu giả, chỉ số kết hợp có thể xác minh lẫn nhau, lọc tín hiệu giả, cải thiện chất lượng tín hiệu.
  2. Các tham số chỉ số có thể được điều chỉnh. Chu kỳ EMA và ngưỡng Bull Power có thể được tùy chỉnh để phù hợp với môi trường thị trường khác nhau.
  3. Đơn giản và rõ ràng. Chiến lược này chỉ sử dụng hai chỉ số phổ biến, nguyên tắc đơn giản và dễ hiểu để thực hiện.

Phân tích rủi ro

  1. Rủi ro thất bại của chỉ số. Ngay cả khi chỉ số được kết hợp, trong trường hợp cực đoan, chỉ số vẫn có thể thất bại.
  2. Rủi ro tối ưu hóa tham số. Thiết lập tham số không đúng có thể dẫn đến quá nhiều và quá ít giao dịch, làm giảm hiệu quả của chiến lược.

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

  1. Tăng cơ chế dừng lỗ. Bạn có thể thiết lập dừng di chuyển hoặc dừng lại để kiểm soát tổn thất đơn lẻ.
  2. Cài đặt tham số tối ưu hóa. Bạn có thể thử nghiệm các kết hợp tham số khác nhau để tìm các tham số tối ưu để đạt được hiệu quả chiến lược tốt hơn.
  3. Thêm các điều kiện lọc. Bạn có thể thêm các điều kiện lọc tương tự như khối lượng giao dịch hoặc biến động trong điều kiện mở vị trí, để lọc ra một số trường hợp bất thường.

Tóm tắt

Chiến lược này thực hiện các quyết định giao dịch thông qua việc sử dụng kết hợp hai EMA và Bull Power. So với chỉ số đơn lẻ, chỉ số kết hợp có thể lọc hiệu quả các tín hiệu giả, trong khi vẫn duy trì chất lượng tín hiệu giao dịch và có thể điều chỉnh các tham số. Nhìn chung, chiến lược này đơn giản, dễ hiểu và linh hoạt trong thực tế, là một chiến lược giao dịch định lượng có tính thực tế mạnh mẽ.

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

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/07/2022
// This is combo strategies for get a cumulative signal.  
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
//  Bull Power Indicator
//  To get more information please see "Bull And Bear Balance Indicator" 
//  by Vadim Gimelfarb. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


BP(SellLevel) =>
    pos = 0.0
    value = close < open ?  
             close[1] < open ?  math.max(high - close[1], close - low): math.max(high - open, close - low):
              close > open ? 
               close[1] > open ?  high - low : math.max(open - close[1], high - low) : 
                 high - close > close - low ? 
                  close[1] < open ? math.max(high - close[1], close - low) : high - open : 
                   high - close < close - low ? 
                     close[1] > open ?  high - low : math.max(open - close, high - low) : 
                      close[1] > open ? math.max(high - open, close - low) :
                       close[1] < open? math.max(open - close, high - low): high - low
    val2 = ta.sma(value, 15)                   
    pos :=  val2 > SellLevel ? 1 : -1
    pos

strategy(title='Combo 2/20 EMA & Bull Power', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════  Bull Power ═════●'
SellLevel = input.float(-15, step=0.01, group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosBP = BP(SellLevel)
iff_1 = posEMA20 == -1 and prePosBP == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBP == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
    strategy.entry('Long', strategy.long)
if possig == -1
    strategy.entry('Short', strategy.short)
if possig == 0
    strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)