Chiến lược giao dịch lượng tử hai yếu tố

Tác giả:ChaoZhang, Ngày: 2023-12-07 15:11:37
Tags:

img

Tổng quan

Chiến lược này kết hợp các yếu tố đảo ngược 123 và các yếu tố dao động số nguyên tố để thực hiện giao dịch định lượng được thúc đẩy bởi các yếu tố kép. Trong khi nắm bắt các cơ hội đảo ngược ngắn hạn, nó cũng xác định xu hướng dài hạn để đạt được lợi nhuận dư thừa có rủi ro thấp.

Nguyên tắc

Phần đầu tiên là chiến lược đảo ngược 123. Nó sử dụng tính năng đảo ngược giá trong 2 ngày để xác định điểm vào và ra. Khi giá tăng liên tục trong 2 ngày và stochastic chậm dưới 50, nó được coi là bán quá mức, tạo ra tín hiệu mua. Khi giá giảm liên tục trong 2 ngày và stochastic nhanh trên 50, nó được coi là tăng quá mức, tạo ra tín hiệu bán.

Phần thứ hai là chiến lược dao động số nguyên tố. Chỉ số này tính toán số nguyên tố gần nhất trên và dưới giá hiện tại trong một phạm vi xác định, và phát ra sự khác biệt từ giá hiện tại. Một giá trị dương có nghĩa là giá hiện tại gần trần số nguyên tố, trong khi một giá trị âm có nghĩa là nó gần sàn số nguyên tố.

Quy tắc hợp nhất tín hiệu là: tín hiệu giao dịch thực tế chỉ được tạo ra khi hai chiến lược con cung cấp tín hiệu theo cùng một hướng, nếu không không có vị trí mới được mở khi các tín hiệu xung đột.

Ưu điểm

Bằng cách kết hợp hai yếu tố, chiến lược này xem xét cả các hiệu ứng đảo ngược ngắn hạn và các đặc điểm xu hướng dài hạn để đưa ra các đánh giá thị trường đa góc, cải thiện khả năng chống rủi ro của chiến lược.

So với một chiến lược động lực duy nhất, chiến lược này có thể kịp thời dừng lỗ hoặc đảo ngược vị trí trong trường hợp giá đột ngột giảm, kiểm soát hiệu quả rủi ro trong ngày bằng cách sử dụng yếu tố đảo ngược.

So với một chiến lược đảo ngược duy nhất, việc giới thiệu bộ dao động số nguyên tố cho hướng xu hướng tránh giao dịch quá mức từ các giao dịch đảo ngược thường xuyên.

Rủi ro

Rủi ro lớn nhất là xung đột tín hiệu giữa hai yếu tố. Nếu 123 đảo ngược cho thấy dấu hiệu mua quá mức / bán quá mức và tạo ra tín hiệu đảo ngược, trong khi dao động số nguyên tố cho thấy nó vẫn đang trong xu hướng, việc giao dịch đảo ngược trực tiếp có thể dẫn đến tổn thất.

Để kiểm soát rủi ro này, logic bổ sung được thêm vào - giao dịch thực tế chỉ được tạo ra khi hai tín hiệu liên kết theo hướng.

Những cải tiến

  1. Tối ưu hóa các tham số Stochastic để tìm các bộ tham số đảo ngược tốt hơn cho các sản phẩm cụ thể

  2. Tối ưu hóa tỷ lệ phần trăm dung sai của bộ dao động số nguyên tố để giảm giao dịch tiếng ồn

  3. Thêm các chiến lược dừng lỗ để hạn chế sự mở rộng lỗ một chiều

  4. Thêm mô-đun kích thước vị trí để điều chỉnh vị trí cho các môi trường thị trường khác nhau

  5. Thêm các mô hình học máy để đánh giá độ tin cậy tín hiệu giữa hai yếu tố, giảm xung đột

Kết luận

Chiến lược này kết hợp thành công các yếu tố đảo ngược ngắn hạn và các yếu tố xu hướng dài hạn để đạt được giao dịch định lượng rủi ro thấp. Bằng cách sử dụng hiệu quả các yếu tố kép để lọc tiếng ồn và thiết lập logic bổ sung để kiểm soát rủi ro, đây là một chiến lược thực tế có lợi nhuận ổn định. Các tham số và chức năng sẽ được tối ưu hóa liên tục để phù hợp với các đặc điểm thị trường thực tế.


/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/04/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Determining market trends has become a science even though a high number or people 
// still believe it’s a gambling game. Mathematicians, technicians, brokers and investors 
// have worked together in developing quite several indicators to help them better understand 
// and forecast market movements.
//
// Developed by Modulus Financial Engineering Inc., the prime number oscillator indicates the 
// nearest prime number, be it at the top or the bottom of the series, and outlines the 
// difference between that prime number and the respective series.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

PrimeNumberOscillator(price, percent) =>
    res = 0.0
    res1 = 0.0
    res2 = 0.0
    for j = price to price + (price * percent / 100)
        res1 := j
	    for i = 2 to sqrt(price)
        	res1 := iff(j % i == 0 , 0, j)
            if res1 == 0 
                break
		if res1 > 0 
		    break
    for j = price to price - (price * percent / 100)
        res2 := j
	    for i = 2 to sqrt(price)
        	res2 := iff(j % i == 0 , 0, j)
            if res2 == 0 
                break
		if res2 > 0 
		    break
    res := iff(res1 - price < price - res2,  res1 - price, res2 - price)
    res := iff(res == 0, res[1], res)
    res
    
PNO(percent) =>
    pos = 0.0
    xPNO = PrimeNumberOscillator(close, percent)
    pos:= iff(xPNO > 0, 1,
           iff(xPNO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Prime Number Oscillator", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Prime Number Oscillator ----")
percent = input(5, minval=0.01, step = 0.01, title="Tolerance Percentage")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPNO = PNO(percent)
pos = iff(posReversal123 == 1 and posPNO == 1 , 1,
	   iff(posReversal123 == -1 and posPNO == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
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 )

Thêm nữa