
Chiến lược này kết hợp 123 chiến lược đảo ngược và chiến lược đường tâm lý để tạo thành một chiến lược giao dịch định lượng đa yếu tố. Chiến lược này có tính đến nhiều chiều như hình thức kỹ thuật, tâm lý thị trường, để đưa ra quyết định chính xác hơn khi đánh giá xu hướng thị trường.
123 Chiến lược đảo ngược đánh giá giá trị đóng cửa của ngày so với ngày trước, nếu tăng và đường K chậm dưới 50; nếu giảm và đường K nhanh trên 50. Chiến lược này sử dụng tính năng đảo ngược ngắn hạn để kiếm lợi nhuận.
Chiến lược đường tâm lý thống kê tỷ lệ giảm trong một chu kỳ nhất định, nếu tăng lớn hơn 50% thì thị trường được kiểm soát nhiều người; nếu tăng ít hơn 50% thì thị trường được kiểm soát bằng không. Xác định tâm lý thị trường dựa trên tỷ lệ giảm.
Chiến lược này là kết hợp của hai chiến lược trên, khi cả hai cung cấp một tín hiệu đồng hướng để mở lệnh, khi tín hiệu khác nhau để đóng cửa.
Chiến lược này kết hợp nhiều yếu tố để đánh giá chính xác hơn về xu hướng thị trường, tránh sai lầm do chỉ số kỹ thuật đơn lẻ. Đồng thời kết hợp các yếu tố tâm lý thị trường, cũng làm cho chiến lược trở nên kiên cường hơn và có thể đối phó với các tình huống phức tạp hơn.
Các tham số của các yếu tố trong chiến lược này sẽ có ảnh hưởng lớn đến hiệu suất của chiến lược. Sự kết hợp tham số không hợp lý có thể làm giảm hiệu quả của chiến lược. Ngoài ra, nếu tình hình thị trường thay đổi mạnh, chiến lược sẽ không hiệu quả. Để giảm rủi ro, chúng tôi cần phải kiểm tra lại nhiều hoạt động của thị trường để tìm ra tham số tối ưu; đồng thời kiểm soát quy mô vị trí để đảm bảo rằng tổn thất đơn lẻ không quá lớn.
Chúng ta có thể tiếp tục thêm các yếu tố quyết định khác trên cơ sở hiện tại, chẳng hạn như tỷ lệ biến động, khối lượng giao dịch, để tạo ra logic chiến lược ba chiều hơn; hoặc kết hợp với thuật toán học máy, để thực hiện tối ưu hóa tùy biến của chiến lược. Đây sẽ là hướng tối ưu hóa chiến lược hơn nữa.
Chiến lược này tổng hợp nhiều yếu tố như hình thức kỹ thuật và tâm lý thị trường, đảm bảo hiệu quả của tín hiệu thông qua xác minh giữa các yếu tố khác nhau. Trong khi đó, vẫn còn rất nhiều không gian tối ưu hóa, có thể đạt được hiệu suất tốt hơn. Đây là một chiến lược định lượng tốt đáng để theo dõi, tích lũy và tối ưu hóa trong thời gian dài.
/*backtest
start: 2022-12-20 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 30/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
// Psychological line (PSY), as an indicator, is the ratio of the number of
// rising periods over the total number of periods. It reflects the buying
// power in relation to the selling power.
// If PSY is above 50%, it indicates that buyers are in control. Likewise,
// if it is below 50%, it indicates the sellers are in control. If the PSY
// moves along the 50% area, it indicates balance between the buyers and
// sellers and therefore there is no direction movement for the market.
//
// 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
PLine(Length) =>
pos = 0.0
cof = close > close[1]? 1:0
xPSY = sum(cof,Length) / Length * 100
pos:= iff(xPSY > 50, 1,
iff(xPSY < 50, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Psychological line", 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, "---- Psychological line ----")
LengthPLine = input(20, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPLine = PLine(LengthPLine)
pos = iff(posReversal123 == 1 and posPLine == 1 , 1,
iff(posReversal123 == -1 and posPLine == -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 )