Dựa trên chiến lược chênh lệch giá đảo ngược kép


Ngày tạo: 2024-02-06 09:58:04 sửa đổi lần cuối: 2024-02-06 09:58:04
sao chép: 2 Số nhấp chuột: 689
1
tập trung vào
1617
Người theo dõi

Dựa trên chiến lược chênh lệch giá đảo ngược kép

Tổng quan

Chiến lược mạo hiểm đảo ngược kép là một thuật toán mạo hiểm kết hợp hai chỉ số đảo ngược. Nó tích hợp cả hai chiến lược con của hệ thống 123 và Gann, tạo ra tín hiệu giao dịch khi cả hai chiến lược con phát ra tín hiệu cùng một lúc, thực hiện hoạt động mạo hiểm.

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

Chiến lược này bao gồm hai chiến lược con:

  1. 123 hệ thống đảo ngược: nó bắt nguồn từ Ulf Jensen’s How to Make Three Times as Much in the Futures Market, trang 183. Quy tắc giao dịch của nó là: khi giá đóng cửa cao hơn giá đóng cửa ngày trước và thấp hơn giá đóng cửa hai ngày trước, làm nhiều khi đường K chậm thấp hơn 50; khi giá đóng cửa thấp hơn giá đóng cửa ngày trước và cao hơn giá đóng cửa hai ngày trước, làm rỗng khi đường K nhanh hơn 50.

  2. Chỉ số dao động đường Gann: Nó bắt nguồn từ cuốn sách của W.D. Gann về kho báu của Robert Krausz. Nó đánh giá xu hướng dao động của thị trường bằng cách tính toán mức giá cao nhất và giá thấp nhất trong một chu kỳ nhất định.

Lập luận giao dịch của chiến lược này là: khi hai chiến lược con đồng bộ về hướng tín hiệu, sẽ tạo ra tín hiệu giao dịch thực tế. Giao dịch đa tín hiệu là khi hai chiến lược con phát đi nhiều tín hiệu cùng một lúc; Giao dịch trống là khi hai chiến lược con phát đi tín hiệu trống cùng một lúc.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là kết hợp các tín hiệu của hai chiến lược con, có thể lọc hiệu quả các tín hiệu giả và cải thiện độ chính xác của tín hiệu giao dịch. Mỗi chiến lược con đều có lợi thế riêng của mình. Hệ thống đảo ngược 123 có thể nắm bắt các hành động đảo ngược đột ngột, trong khi chỉ số dao động đường dao động Gann có thể đánh giá thời gian chín muồi của sự đảo ngược xu hướng. Kết hợp cả hai, có thể làm cho tín hiệu giao dịch đáng tin cậy hơn, do đó cải thiện sự ổn định của chiến lược.

Phân tích rủi ro

Rủi ro chính của chiến lược này là có nhiều khả năng các tín hiệu giao dịch của hai chiến lược con không phù hợp với nhau, dẫn đến vấn đề tín hiệu giao dịch ít hơn. Ngoài ra, chính chiến lược con cũng có một số rủi ro tín hiệu giả.

Để giảm rủi ro, bạn có thể điều chỉnh các tham số của các chiến lược con để tăng tần số giao dịch của nó một cách thích hợp, hoặc kết hợp với các chỉ số khác để hỗ trợ phán đoán, lọc tín hiệu giả. Khi có sự lệch tín hiệu lớn giữa hai chiến lược con, bạn cũng có thể xem xét chỉ theo một bên đáng tin cậy hơn.

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

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Điều chỉnh các tham số của các chiến lược con để tối ưu hóa tần suất giao dịch;
  2. Tăng khả năng đánh giá các chỉ số kỹ thuật khác để cải thiện chất lượng tín hiệu;
  3. Cân nhắc các chiến lược cho các loại cây khác nhau và các loại cây có tuổi thọ tốt nhất.
  4. Tham gia vào hệ thống ngăn chặn tổn thất để kiểm soát tổn thất đơn lẻ.

Tóm tắt

Chiến lược lợi nhuận đảo ngược kép tạo ra tín hiệu giao dịch mạnh mẽ hơn bằng cách tích hợp hai loại chiến lược đảo ngược khác nhau. Nó có thể loại bỏ tiếng ồn hiệu quả, cải thiện chất lượng tín hiệu và phù hợp để nắm bắt cơ hội đảo ngược trong thị trường. Tuy nhiên, chiến lược con có khả năng phát ra tín hiệu không nhất quán, có thể dẫn đến vấn đề tần suất giao dịch không đủ. Ngoài ra, chính các tham số của chiến lược kết hợp rất phức tạp và cần được kiểm tra đầy đủ và tối ưu hóa để có hiệu quả tối đa.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 04/11/2020
// 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
// The Gann Swing Oscillator has been adapted from Robert Krausz's book, 
// "A W.D. Gann Treasure Discovered". The Gann Swing Oscillator helps 
// define market swings. 
//
// 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

    
GannSO(Length) =>
    pos = 0.0
    xGSO = 0.0
    xHH = highest(Length)
    xLL = lowest(Length)
    xGSO:= iff(xHH[2] > xHH[1] and xHH[0] > xHH[1], 1,
             iff(xLL[2] < xLL[1] and xLL[0] < xLL[1], -1, nz(xGSO[1],0)))
    pos := iff(xGSO > 0, 1,
    	     iff(xGSO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Gann Swing Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthGSO = input(5, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posGannSO = GannSO(LengthGSO)
pos = iff(posReversal123 == 1 and posGannSO == 1 , 1,
	   iff(posReversal123 == -1 and posGannSO == -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 )