
Chiến lược này đầu tiên sử dụng tín hiệu đảo ngược giá để giao dịch, sau đó được lọc kết hợp với các chỉ số lọc xu hướng để thực hiện điều khiển kép. Trong đó, phần đảo ngược giá sử dụng hệ thống giao dịch 123 đảo ngược, phần lọc xu hướng sử dụng hệ thống giao dịch xu hướng trích xuất (Extracting The Trend, ETT), cả hai kết hợp với chiến lược giao dịch đảo ngược tạo thành điều khiển kép.
Phần đảo ngược giá sử dụng hệ thống đảo ngược 123. Hệ thống này có nguồn gốc từ Ulf Jensen trong cuốn sách Làm thế nào để tôi tăng gấp ba lần số tiền của tôi trên thị trường tương lai trang 183. Các tín hiệu giao dịch của nó được tạo ra với một số điều kiện sau:
Một tín hiệu mua được tạo ra khi các điều kiện trên được đáp ứng; ngược lại, khi
Khi đáp ứng các điều kiện trên, nó sẽ tạo ra một tín hiệu bán.
Phần này của hệ thống giao dịch đảo ngược nhằm mục đích bắt giữ sự chuyển động của giá khi nó tạo ra một sự đảo ngược ngắn hạn.
Phần lọc xu hướng sử dụng hệ thống rút ra xu hướng ((ETT) ❚ Hệ thống ETT đánh giá xu hướng xu hướng thông qua bộ lọc hiệu suất và kết hợp đường trung bình. Trong chiến lược này, vai trò chính của nó là xác minh tín hiệu đảo ngược giá, tránh hoạt động đảo ngược khi không có xu hướng rõ ràng.
Chiến lược này kết hợp các tín hiệu giao dịch của hai chiến lược con, cuối cùng tạo ra giao dịch đảo ngược được điều khiển bởi hai yếu tố.
Chiến lược giao dịch đảo ngược của nhóm hai nhân tạo thông qua sự kết hợp của các chiến lược con, tổng hợp các lợi thế của mỗi chiến lược, chủ yếu được thể hiện trong:
Do đó, chiến lược này có thể lọc hiệu quả các tín hiệu đảo ngược không hiệu quả và thực hiện các hoạt động đảo ngược với giả định rằng phán đoán xu hướng là chính xác, do đó cải thiện hiệu suất tổng thể của hệ thống giao dịch.
Các rủi ro chính của chiến lược đảo ngược giao dịch bao gồm:
Để giảm rủi ro trên, bạn có thể xem xét điều chỉnh tham số của trình soạn thảo, tối ưu hóa chiến lược đảo ngược và chiến lược ETT để làm cho phán quyết chính xác hơn, đồng thời nới lỏng phạm vi dừng lỗ của giao dịch đảo ngược một cách thích hợp. Trong thực tế, cũng cần phải cân nhắc đầy đủ về rủi ro của chính hai yếu tố lái xe, kiểm soát quy mô vị trí.
Chính sách này có thể được tối ưu hóa theo các khía cạnh sau:
Trong trường hợp duy trì tư duy chiến lược và logic tín hiệu giao dịch chính, tối ưu hóa thông qua các tham số và kết hợp, có thể đạt được kết quả phản hồi tốt hơn.
Chiến lược giao dịch đảo ngược kết hợp hai yếu tố thông qua sự kết hợp hữu cơ của tín hiệu đảo ngược giá với tín hiệu lọc xu hướng, để thực hiện hệ thống giao dịch dựa trên phán đoán nhiều yếu tố. So với tín hiệu đảo ngược đơn lẻ, chiến lược này có thể tốt hơn trên cơ sở đảm bảo nắm bắt sự đảo ngược giá trong thời gian ngắn, tránh tín hiệu giả trong trường hợp không có xu hướng rõ ràng, do đó cải thiện chất lượng tín hiệu.
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 03/08/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
// Extracting The Trend
// The related article is copyrighted material from Stocks & Commodities Mar 2010
//
// 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
ETT(Length,Delta,Trigger) =>
pos = 0
xBandpassFilter = 0.0
xPrice = hl2
beta = cos(3.1415 * (360 / Length) / 180)
gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
xBandpassFilter := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
xMean = sma(xBandpassFilter, 2 * Length)
pos :=iff(xMean > Trigger, 1,
iff(xMean < Trigger, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Extracting The Trend", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthETT = input(20, minval=1)
Delta = input(0.5)
Trigger = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posETT = ETT(LengthETT,Delta,Trigger)
pos = iff(posReversal123 == 1 and posETT == 1 , 1,
iff(posReversal123 == -1 and posETT == -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 )