Chiến lược giao dịch định lượng xác nhận kép


Ngày tạo: 2024-01-15 15:21:39 sửa đổi lần cuối: 2024-01-15 15:21:39
sao chép: 0 Số nhấp chuột: 628
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch định lượng xác nhận kép

Tổng quan

Chiến lược giao dịch định lượng xác nhận kép làm giảm rủi ro giao dịch bằng cách kết hợp hai chiến lược con 123 reversal và tỷ lệ phần trăm giao dịch (PVO) để xác nhận kép tín hiệu giao dịch. Chiến lược này chủ yếu áp dụng cho giao dịch giữ vị trí dài và trung bình.

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

123 Chiến lược đảo ngược

Chiến lược đảo ngược được thực hiện dựa trên hình thức K-line của chỉ số ngẫu nhiên. Cụ thể, khi giá đóng cửa thấp hơn giá đóng cửa ngày hôm trước trong 2 ngày liên tiếp và chỉ số ngẫu nhiên chậm hơn 50 trong 9 ngày; khi giá đóng cửa cao hơn giá đóng cửa ngày hôm trước trong 2 ngày liên tiếp và chỉ số ngẫu nhiên nhanh hơn 50 trong 9 ngày.

Chỉ số biến động tỷ lệ phần trăm giao dịch (PVO)

PVO là chỉ số biến động động động dựa trên số lượng giao dịch. Nó đo lường sự chênh lệch giữa các trung bình di chuyển của chỉ số số giao dịch của hai chu kỳ khác nhau với tỷ lệ của các trung bình thời gian dài, được thể hiện dưới dạng phần trăm.

Phân tích lợi thế

Chiến lược này kết hợp các chỉ số giá cả và khối lượng giao dịch, có thể lọc hiệu quả phá vỡ giả mạo. Đồng thời, thông qua cơ chế xác nhận kép, có thể giảm tần suất giao dịch, giảm rủi ro giao dịch.

Phân tích rủi ro

Chiến lược này phụ thuộc vào chu kỳ giữ vị trí dài, có nguy cơ rút lui. Ngoài ra, cài đặt tham số không đúng cũng có thể dẫn đến tần số giao dịch quá cao hoặc tín hiệu bị lỗi.

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

Hiệu suất của các chiến lược con có thể được tối ưu hóa bằng cách điều chỉnh các tham số của chỉ số ngẫu nhiên và PVO. Các cơ chế dừng lỗ cũng có thể được giới thiệu để kiểm soát rủi ro. Ngoài ra, kết hợp với các tín hiệu lọc của các chỉ số khác có thể làm tăng thêm sự ổn định của chiến lược.

Tóm tắt

Chiến lược giao dịch định lượng xác nhận kép tổng hợp các yếu tố giá cả và khối lượng giao dịch, hiệu quả phản hồi là lý tưởng. Chiến lược này có khả năng tăng cường sự ổn định hơn nữa bằng cách điều chỉnh tham số và lọc tín hiệu tối ưu hóa, trở thành một công cụ mạnh mẽ cho giao dịch định lượng.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/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
// The Percentage Volume Oscillator (PVO) is a momentum oscillator for volume. 
// PVO measures the difference between two volume-based moving averages as a 
// percentage of the larger moving average. As with MACD and the Percentage Price 
// Oscillator (PPO), it is shown with a signal line, a histogram and a centerline. 
// PVO is positive when the shorter volume EMA is above the longer volume EMA and 
// negative when the shorter volume EMA is below. This indicator can be used to define 
// the ups and downs for volume, which can then be use to confirm or refute other signals. 
// Typically, a breakout or support break is validated when PVO is rising or positive. 
//
// 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


PVO(LengthShortEMA,LengthLongEMA,LengthSignalEMA) =>
    pos = 0.0
    xShortEMA = ema(volume , LengthShortEMA)
    xLongEMA = ema(volume , LengthLongEMA)
    xPVO = ((xShortEMA - xLongEMA) / xLongEMA) * 100
    xSignalEMA = ema(xPVO , LengthSignalEMA)
    xPVOHisto = xPVO - xSignalEMA
    pos := iff(xSignalEMA < xPVO, -1,
    	      iff(xSignalEMA > xPVO, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Percentage Volume Oscillator (PVO)", 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, "---- Percentage Volume OscillatorA ----")
LengthShortEMA = input(12, minval=1)
LengthLongEMA = input(26, minval=1)
LengthSignalEMA = input(9, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPVO = PVO(LengthShortEMA,LengthLongEMA,LengthSignalEMA)
pos = iff(posReversal123 == 1 and posPVO == 1 , 1,
	   iff(posReversal123 == -1 and posPVO == -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 )