Chiến lược này kết hợp hai chiến lược con của sự đảo ngược hai yếu tố và xu hướng giá trị cải thiện để có được tín hiệu giao dịch tổng hợp. Chiến lược đảo ngược hai yếu tố dựa trên ý tưởng của P183 trong cuốn sách của Ulf Jensen, tạo ra tín hiệu khi giá trị mua bán trong hai ngày bị đảo ngược và các điều kiện chỉ số ngẫu nhiên được thiết lập. Chiến lược xu hướng giá trị cải thiện dựa trên kết hợp nghiên cứu về giá cả và khối lượng giao dịch, đánh giá sự hợp nhất của thị trường và thời điểm của xu hướng. Cả hai chiến lược có thể xác minh lẫn nhau và sử dụng kết hợp có thể làm tăng sự ổn định.
Chiến lược xoay ngược hai yếu tố sử dụng nguyên tắc xoay ngược giá đóng cửa hai ngày với phán đoán đa không gian của chỉ số ngẫu nhiên. Nếu giá đóng cửa ngày hôm trước cao hơn và giá đóng cửa ngày hôm nay xoay ngược xuống, và chỉ số ngẫu nhiên nhanh thấp hơn chỉ số ngẫu nhiên chậm và chỉ số ngẫu nhiên nhanh cao hơn 50, sẽ tạo ra tín hiệu đầu trống. Nếu ngày hôm trước đóng cửa thấp hơn và ngày hôm nay đóng cửa xoay ngược lên, và chỉ số ngẫu nhiên nhanh cao hơn chỉ số ngẫu nhiên chậm và ngẫu nhiên nhanh thấp hơn 50.
Phương thức tính toán là: PxVFactor = PriceFactor + Scale * CumPVT, trong đó PriceFactor là yếu tố giá, CumPVT là chỉ số năng lượng tích lũy. Sau đó tính trung bình di chuyển đơn giản trong ngày dài của PxVFactor, so sánh với giá trị PxVFactor hiện tại, để đánh giá xu hướng và sức mạnh của thị trường.
Chiến lược kết hợp tổng hợp các tín hiệu của hai chiến lược con, và khi đảo ngược hai yếu tố và cải thiện xu hướng giá đồng thời tăng hoặc giảm, sẽ tạo ra tín hiệu dư thừa tương ứng.
Nói tóm lại, chiến lược kết hợp xu hướng giá trị hai yếu tố đảo ngược và cải tiến, kết hợp với hai chiều của sự đảo ngược và xu hướng, cả hai có thể xác nhận tín hiệu lẫn nhau, tăng sự ổn định. Thêm chỉ số xu hướng như là phán đoán phụ trợ trong chiến lược đảo ngược dễ bị lôi kéo là cần thiết.
/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 23/02/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 related article is copyrighted material from
// Stocks & Commodities.
//
// 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
MPVT(Level,Scale,Length) =>
pos = 0.0
xCumPVT = 0.0
xOHLC4 = ohlc4
xV = volume
rV = xV / 50000
xCumPVT := nz(xCumPVT[1]) + (rV * (xOHLC4 - xOHLC4[1]) / xOHLC4[1])
nRes = Level + Scale * xCumPVT
xMARes = sma(nRes, Length)
pos:= iff(nRes > xMARes, 1,
iff(nRes < xMARes, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Modified Price-Volume Trend", 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, "---- Price-Volume Trend ----")
LevelPVT = input(1)
Scale = input(1)
LengthPVT = input(23)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMPVT = MPVT(LevelPVT,Scale,LengthPVT)
pos = iff(posReversal123 == 1 and posMPVT == 1 , 1,
iff(posReversal123 == -1 and posMPVT == -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 )