
Hệ thống phá vỡ đảo ngược vượt quá hai lần là một chiến lược định lượng kết hợp theo dõi xu hướng và giao dịch đảo ngược. Chiến lược này tạo ra tín hiệu mua bằng cách tính toán liệu có tín hiệu vượt quá liên tiếp trong giá đóng cửa N ngày trước khi so sánh giá cổ phiếu hay không; đồng thời kết hợp với tính toán trung bình di chuyển T3 của các tham số cụ thể, tạo ra tín hiệu bán để bảo vệ lợi nhuận.
Chiến lược này bao gồm hai phần:
Theo mô tả trong cuốn sách, hệ thống đảo ngược này quan sát sự thay đổi của giá đóng cửa trong N ngày qua, và nếu giá đóng cửa hôm nay tăng cao hơn ngày trước và giá đóng cửa hai ngày trước giảm, hệ thống này sẽ tạo ra tín hiệu mua. Ngoài ra, hệ thống này cũng kết hợp với chỉ số STOCH, nếu đường nhanh STOCH hôm nay thấp hơn đường chậm, sẽ xác nhận thêm hiệu lực của tín hiệu mua.
T3 Moving Average được tính toán dựa trên một công thức tính toán nhất định, kết hợp với giá. Nó điều chỉnh độ nhạy của moving average đối với sự thay đổi giá thông qua một số tham số nhất định. Khi giá vượt qua T3 Moving Average, nó tạo ra tín hiệu bán.
Chiến lược này sẽ tổng hợp hai phần tín hiệu trên và tạo ra một tín hiệu giao dịch thực sự tương ứng khi đồng thời đáp ứng tín hiệu mua 123 và tín hiệu bán của T3 Moving Average.
Các biện pháp sau đây có thể được áp dụng đối với các rủi ro:
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Có thể dựa trên chiến lược ban đầu, thêm các chỉ số kỹ thuật khác làm điều kiện lọc, chẳng hạn như điều kiện đột phá tăng khối lượng giao dịch, để tránh giao dịch sai do tiếng ồn.
Các tham số có thể được kiểm tra lại thông qua nhiều kết hợp tham số, chọn tham số tương ứng với kết hợp có lợi nhuận cao nhất để tối ưu hóa hiệu quả chiến lược. Các tham số động cũng có thể được thiết lập, điều chỉnh theo thời gian thực theo tình hình thị trường.
Ví dụ, có thể thu thập một lượng lớn dữ liệu lịch sử, sử dụng mô hình đào tạo học máy để dự đoán thời điểm mua và bán tốt nhất. Và các tham số để tối ưu hóa chiến lược trong thời gian thực.
Các đặc tính khác nhau của các giống khác nhau và các tham số phù hợp cũng có thể khác nhau. Các tham số độc lập có thể được thiết lập dựa trên dữ liệu của các giống khác nhau.
Hệ thống phá vỡ đảo ngược hai lần vượt quá giá giảm kết hợp các ưu điểm của theo dõi xu hướng và giao dịch đảo ngược. Nó có thể mua giá thấp hơn trong giai đoạn vượt quá giá giảm và dừng lại kịp thời sau khi lợi nhuận xu hướng.
/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 16/09/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
// This indicator plots the moving average described in the January, 1998 issue
// of S&C, p.57, "Smoothing Techniques for More Accurate Signals", by Tim Tillson.
// This indicator plots T3 moving average presented in Figure 4 in the article.
// T3 indicator is a moving average which is calculated according to formula:
// T3(n) = GD(GD(GD(n))),
// where GD - generalized DEMA (Double EMA) and calculating according to this:
// GD(n,v) = EMA(n) * (1+v)-EMA(EMA(n)) * v,
// where "v" is volume factor, which determines how hot the moving average’s response
// to linear trends will be. The author advises to use v=0.7.
// When v = 0, GD = EMA, and when v = 1, GD = DEMA. In between, GD is a less aggressive
// version of DEMA. By using a value for v less than1, trader cure the multiple DEMA
// overshoot problem but at the cost of accepting some additional phase delay.
// In filter theory terminology, T3 is a six-pole nonlinear Kalman filter. Kalman
// filters are ones that use the error — in this case, (time series - EMA(n)) —
// to correct themselves. In the realm of technical analysis, these are called adaptive
// moving averages; they track the time series more aggres-sively when it is making large
// moves. Tim Tillson is a software project manager at Hewlett-Packard, with degrees in
// mathematics and computer science. He has privately traded options and equities for 15 years.
//
// 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
T3A(Length, b) =>
pos = 0.0
xPrice = close
xe1 = ema(xPrice, Length)
xe2 = ema(xe1, Length)
xe3 = ema(xe2, Length)
xe4 = ema(xe3, Length)
xe5 = ema(xe4, Length)
xe6 = ema(xe5, Length)
c1 = -b*b*b
c2 = 3*b*b+3*b*b*b
c3 = -6*b*b-3*b-3*b*b*b
c4 = 1+3*b+b*b*b+3*b*b
nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3
pos:= iff(nT3Average > close, -1,
iff(nT3Average < close, 1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & T3 Averages", 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, "---- T3 Averages ----")
LengthT3 = input(5, minval=1)
b = input(0.7, minval=0.01,step=0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posT3A = T3A(LengthT3, b)
pos = iff(posReversal123 == 1 and posT3A == 1 , 1,
iff(posReversal123 == -1 and posT3A == -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 )