Chiến lược này kết hợp hai chỉ số SuperTrend và Fisher Conversion, để thực hiện một chiến lược giao dịch theo xu hướng ổn định hơn. Khi chỉ số SuperTrend phát ra tín hiệu mua, và chỉ số Fisher Conversion nhỏ hơn 2.5 và tăng lên, tạo ra tín hiệu mua. Chiến lược quản lý vị trí bằng cách dừng lỗ và dừng chân hợp lý.
Chỉ số SuperTrend được sử dụng để xác định hướng xu hướng của giá. Khi giá lên đường, nó là tín hiệu đi lên; khi giá xuống đường, nó là tín hiệu đi xuống. Chiến lược này phát ra tín hiệu mua khi SuperTrend là tín hiệu đi xuống.
Chỉ số chuyển đổi của Fisher phản ánh mức độ ảnh hưởng của biến động giá đến tâm lý người tiêu dùng. Giá trị Fisher trong phạm vi [−2,5, 2,5] đại diện cho thị trường trung lập, nhỏ hơn 2,5 đại diện cho thị trường hoảng loạn, lớn hơn 2,5 đại diện cho thị trường hưng phấn. Chiến lược này phát ra tín hiệu mua khi Fisher nhỏ hơn 2,5 và tăng lên để nắm bắt điểm chuyển đổi từ hoảng loạn sang trung lập.
Chiến lược quản lý vị trí bằng cách dừng lỗ hợp lý. Đặt điểm dừng lỗ là giá nhập trừ ATR và nhân ATR, đặt điểm dừng là giá nhập cộng với ATR và nhân ATR. Mức dừng lỗ lớn hơn mức dừng lỗ, thể hiện ý tưởng kiểm soát rủi ro theo xu hướng của chiến lược.
Quản lý số tiền rủi ro cũng được xem xét. Kích thước vị trí được tính theo ATR và số tiền rủi ro, để mỗi đơn vị rủi ro không vượt quá số tiền rủi ro được thiết lập.
Kết hợp nhiều chỉ số, tránh chỉ số đơn gây ra giao dịch thường xuyên. SuperTrend đánh giá xu hướng xu hướng, Fisher chuyển đổi đánh giá tâm lý thị trường, cả hai kết hợp để tạo ra tín hiệu giao dịch ổn định.
Thiết lập một lệnh dừng lỗ hợp lý, có lợi cho việc nắm bắt xu hướng để giữ đường dài, đồng thời kiểm soát rủi ro.
Sử dụng quản lý số tiền rủi ro và đơn vị giao dịch tối thiểu để kiểm soát rủi ro cho mỗi giao dịch và tránh tổn thất lớn hơn khả năng chịu đựng.
Tín hiệu giao dịch ổn định, phù hợp để giữ dây dài. Biến đổi Fisher là chỉ số mịn, giúp lọc tiếng ồn thị trường và tránh tín hiệu giả.
Có rất nhiều không gian để tối ưu hóa các tham số chỉ số. Bạn có thể điều chỉnh các tham số ATR chu kỳ và nhân của SuperTrend theo chu kỳ khác nhau của các giống khác nhau, và tham số phẳng của biến đổi Fisher, để tìm kiếm sự kết hợp tham số tốt nhất.
Là một chiến lược theo xu hướng, sẽ tích lũy tổn thất nhỏ trong giai đoạn thu hồi chấn động. Các loại và chiến lược hoạt động theo chu kỳ rõ ràng về xu hướng nên được chọn.
Biến đổi Fisher không hiệu quả đối với các tình huống cực đoan. Khi thị trường duy trì một trạng thái nhất định trong một thời gian dài, giá trị Fisher sẽ tiếp tục lệch khỏi khoảng trung tính, và tại thời điểm này nên tạm dừng chiến lược.
Đi quá gần điểm dừng có thể gây ra quá nhiều lần thoát. Các tham số ATR và ATR nên được thiết lập hợp lý để đảm bảo khoảng cách dừng có khoảng cách đệm nhất định.
Việc bỏ qua chi phí giao dịch có thể dẫn đến thua lỗ giao dịch thu lợi nhuận nhỏ. Cần xem xét mức phí giao dịch của các loại và điều chỉnh mức giảm giá thích hợp.
Cần phải tham gia thị trường lâu dài để thể hiện lợi thế chiến lược. Cần đảm bảo có đủ tiền để hỗ trợ giao dịch dài hạn và tinh thần ổn định.
Điều chỉnh tham số ATR chu kỳ và ATR nhân, tối ưu hóa stop loss. Các tham số có thể được tối ưu hóa thông qua dữ liệu đo lường lại, cũng có thể được tối ưu hóa động.
Thử các tham số biến đổi Fisher khác nhau, chẳng hạn như chu kỳ mịn, tìm kiếm tín hiệu giao dịch ổn định hơn. Các tham số điều chỉnh động của tỷ lệ biến động thị trường có thể được kết hợp.
Kết hợp với các chỉ số khác như là bộ lọc, tránh giao dịch sai khi không chắc chắn về thị trường lớn. Bạn có thể sử dụng đường trung bình, tỷ lệ dao động để xác định xu hướng của thị trường lớn.
Thử nghiệm các chiến lược dừng khác nhau, chẳng hạn như dừng di chuyển, dừng hàng loạt, dừng theo dõi ATR, để tăng lợi nhuận.
Các chiến lược quản lý tài chính tối ưu hóa, chẳng hạn như quản lý tài chính tỷ lệ cố định, công thức Kelly, cho phép lợi nhuận cao hơn so với lỗ.
Tối ưu hóa chi phí giao dịch để đảm bảo lợi nhuận sau khi giao dịch với các vị trí nhỏ.
Chiến lược này tích hợp các lợi thế của các chỉ số như SuperTrend và Fisher biến đổi, tạo ra xu hướng ổn định theo chiến lược giao dịch dài dòng. Bằng cách ngăn chặn, quản lý và kiểm soát rủi ro, có thể đạt được lợi nhuận rủi ro tốt hơn. Chiến lược cần được tối ưu hóa hơn nữa về các tham số, lọc tín hiệu, quản lý vốn để có được hiệu suất chứng khoán mạnh mẽ hơn.
/*backtest
start: 2023-10-26 00:00:00
end: 2023-11-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend and Fisher_LONG", overlay=true)
//This block is for Fisher Transformation Calculation.
len = input.int(10, minval=1, title="Length") // Length is optional. 10 is good but is up to you.
high_ = ta.highest(hl2, len)
low_ = ta.lowest(hl2, len)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((hl2 - low_) / (high_ - low_) - .5) + .67 * nz(value[1]))
fish1 = 0.0
fish1 := .5 * math.log((1 + value) / (1 - value)) + .5 * nz(fish1[1])
fish2 = fish1[1]
// Buy condition for Fisher transformation.
buy_signal = (fish1 < -2.5) and (fish1 > fish2)
durum = 0 //just for the situation.
if (buy_signal)
durum := 1 // now it changes from 0 to 1.
// Supertrend indicator inputs and calculations (same as in the indicator)
Periods = input(title='ATR Period', defval=10) // period is 10, but you can change it
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=2) //atr multiplier is important. it is 2 for this strategy but you can find another for best performance
RiskAmount = input.float(title='Risk Amount ($)', defval=10.0, minval=0.0, step=1.0) // ıf you use risk-reward method, risk is 10$ for each position. you can also change it
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
// Calculate position size based on risk amount
riskPerContract = atr * Multiplier
contracts = RiskAmount / (riskPerContract * syminfo.mintick)
//short signal condition
buySignal = trend == 1 and trend[1] == -1 and durum == 1
plotshape(buySignal, title='Buy Signal', location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
// variables
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
var float atr1 = na
var float takeProfit2 = na
var float takeProfit3 = na
//it calculates the stop level and reward profit levels using atr.
if (buySignal)
entryPrice := close
atr1 := atr
stopLoss := entryPrice - atr1 * Multiplier
contracts := entryPrice / (entryPrice - stopLoss) * RiskAmount / entryPrice
takeProfit := entryPrice + atr1 * Multiplier
takeProfit2 := entryPrice + 2 * atr1 * Multiplier
takeProfit3 := entryPrice + 3 * atr1 * Multiplier
if (buySignal)
strategy.entry("Buy", strategy.long, qty=contracts)
//
if (close <= stopLoss)
strategy.close("Buy", comment="Stop Loss Hit")
else if (close >= takeProfit)
strategy.close("Buy", comment="Take Profit Hit")
// draw the stop, entry and profit levels
plot(stopLoss, title="Stop Loss", color=color.red, linewidth=1, style=plot.style_linebr)
plot(entryPrice, title="Entry Price", color=color.orange, linewidth=1, style=plot.style_linebr)
plot(takeProfit, title="Take Profit", color=color.green, linewidth=1, style=plot.style_linebr)
plot(takeProfit2, title="Take Profit 2", color=color.blue, linewidth=1, style=plot.style_linebr)
plot(takeProfit3, title="Take Profit 3", color=color.purple, linewidth=1, style=plot.style_linebr)