Chiến lược đảo ngược lợi nhuận nhấp đúp định lượng


Ngày tạo: 2023-11-22 10:03:04 sửa đổi lần cuối: 2023-11-22 10:03:04
sao chép: 0 Số nhấp chuột: 610
1
tập trung vào
1617
Người theo dõi

Chiến lược đảo ngược lợi nhuận nhấp đúp định lượng

Tổng quan

Chiến lược này đầu tiên sử dụng hình dạng 123 để đánh giá tín hiệu đảo ngược, sau đó kết hợp với bộ rung định lượng Klinger làm bộ lọc, để đạt được chiến lược lợi nhuận hai lần định lượng để nắm bắt cơ hội đảo ngược hiệu quả.

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

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

  1. 123 hình thức đánh giá phần tín hiệu đảo ngược: khi giá đóng cửa sau 2 ngày liên tiếp giảm, ngày thứ 3 kết thúc, và chỉ số stoch ở mức thấp for nhiều đầu; khi giá đóng cửa sau 2 ngày liên tiếp tăng, ngày thứ 3 kết thúc, và chỉ số stoch ở mức cao for đầu trống.

  2. Phần của bộ dao động định lượng Klinger: Bộ dao động định lượng Klinger kết hợp phạm vi biến động giá và thay đổi khối lượng giao dịch để xác định dòng tiền vào và ra. Khi vượt qua trung bình của nó trên bộ dao động định lượng, tín hiệu đa đầu; Khi vượt qua trung bình của nó, tín hiệu đầu không.

Cuối cùng, chiến lược tổng hợp các tín hiệu của hai phần trên, và hai cú đánh thắng quyết định kết quả cuối cùng.

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 hình thức đảo ngược và chỉ số năng lượng lượng, có thể nắm bắt cơ hội đảo ngược hiệu quả. Ngoài ra, sử dụng chỉ số stoch để tránh phá vỡ giả, và bộ dao động định lượng Klinger để đánh giá dòng tiền thực sự, có thể đảm bảo thời gian nhập cảnh chính xác.

Phân tích rủi ro

Rủi ro chính của chiến lược này nằm ở việc phán đoán hình dạng đảo ngược và các vấn đề về thiết lập tham số. Do tín hiệu đảo ngược có sự chậm trễ, cần phải đảm bảo thiết lập tham số hợp lý, tránh bỏ lỡ thời gian đảo ngược tốt nhất. Ngoài ra, hình dạng đảo ngược có thể bị hỏng.

Để giảm nguy cơ, các tham số có thể được tối ưu hóa thích hợp, làm cho tín hiệu đảo ngược trở nên nhạy cảm và kịp thời hơn. Các điều kiện lọc khác cũng có thể được thêm vào để đảm bảo đủ số lần đảo ngược và đủ chiều rộng để tránh mở rộng rút lui.

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

Chiến lược này chủ yếu có thể tối ưu hóa không gian trong điều chỉnh tham số và thêm các phán đoán phụ khác. Cụ thể, tham số chỉ số stoch có thể được rút ngắn thích hợp, tối ưu hóa độ nhạy của phán đoán hình dạng 123. Cũng có thể tham gia các chỉ số và hình dạng chính hiện tại để kết hợp, chẳng hạn như kết hợp với MACD, hoặc phán đoán đa chiều dưới cùng.

Ngoài ra, có thể xem xét động điều chỉnh điều kiện dừng lỗ và dừng để chiến lược thích ứng hơn với sự thay đổi của thị trường. Ngoài ra, có thể kết hợp với học máy để tối ưu hóa các tham số trong thời gian thực.

Tóm tắt

Chiến lược này sử dụng lý thuyết đảo ngược cổ điển và các chỉ số kỹ thuật năng lượng để nắm bắt hiệu quả cơ hội đảo ngược. Không gian tối ưu hóa lớn, có tiềm năng nâng cao hiệu quả hơn nữa, đáng để kiểm tra thực tế và tối ưu hóa liên tục.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/12/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 Klinger Oscillator (KO) was developed by Stephen J. Klinger. Learning 
// from prior research on volume by such well-known technicians as Joseph Granville, 
// Larry Williams, and Marc Chaikin, Mr. Klinger set out to develop a volume-based 
// indicator to help in both short- and long-term analysis.
// The KO was developed with two seemingly opposite goals in mind: to be sensitive 
// enough to signal short-term tops and bottoms, yet accurate enough to reflect the 
// long-term flow of money into and out of a security.
// The KO is based on the following tenets:
// Price range (i.e. High - Low) is a measure of movement and volume is the force behind 
// the movement. The sum of High + Low + Close defines a trend. Accumulation occurs when 
// today's sum is greater than the previous day's. Conversely, distribution occurs when 
// today's sum is less than the previous day's. When the sums are equal, the existing trend 
// is maintained.
// Volume produces continuous intra-day changes in price reflecting buying and selling pressure. 
// The KO quantifies the difference between the number of shares being accumulated and distributed 
// each day as "volume force". A strong, rising volume force should accompany an uptrend and then 
// gradually contract over time during the latter stages of the uptrend and the early stages of 
// the following downtrend. This should be followed by a rising volume force reflecting some 
// accumulation before a bottom develops.
//
// 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

KVO(TrigLen,FastX,SlowX) =>
    pos = 0.0
    xTrend = iff(hlc3 > hlc3[1], volume * 100, -volume * 100)
    xFast = ema(xTrend, FastX)
    xSlow = ema(xTrend, SlowX)
    xKVO = xFast - xSlow
    xTrigger = ema(xKVO, TrigLen)
    pos := iff(xKVO > xTrigger, 1,
    	     iff(xKVO < xTrigger, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Klinger Volume 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)
//-------------------------
TrigLen = input(13, minval=1)
FastX = input(34, minval=1)
SlowX = input(55, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKVO = KVO(TrigLen,FastX,SlowX)
pos = iff(posReversal123 == 1 and posKVO == 1 , 1,
	   iff(posReversal123 == -1 and posKVO == -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 )