Trong bài viết này, chúng ta sẽ khám phá chi tiết mã Pine Script với tên gọi “Enhanced Real-Time Fibonacci Strategy“. Chiến lược này được thiết kế để tận dụng các mức Fibonacci kết hợp với các chỉ báo kỹ thuật khác nhằm tạo ra các tín hiệu mua và bán chính xác hơn.
Tải Script Enhanced Real-Time Fibonacci Strategy
Code Pine Script bạn có thể gắn trực tiếp vào mục mã nguồn trong tradingview
Để chèn được mã script này vào bạn có thể mở biểu đồ tiền điện tử bất kì sau đó nhấn vào trình chỉnh sửa Pine Editor ở dưới màn hình sau đó copy (Ctrl + C) đoạn code bên dưới > tiếp đến (Ctrl + V) để dán vào trình chỉnh sửa và lưu lại > nhấn vào nút Cập nhật trên biểu đổ bên phía tay phải để hiển thị script trên biểu đồ.
//@version=5
indicator("Enhanced Real-Time Fibonacci Strategy By Tintucbitcoin.io", overlay=true)
// Input parameters
fibonacci_level1 = input.float(0.236, title="Fibonacci Level 1", group="Fibonacci Levels")
fibonacci_level2 = input.float(0.382, title="Fibonacci Level 2", group="Fibonacci Levels")
fibonacci_level3 = input.float(0.5, title="Fibonacci Level 3", group="Fibonacci Levels")
fibonacci_level4 = input.float(0.618, title="Fibonacci Level 4", group="Fibonacci Levels")
risk_reward_ratio = input.int(2, title="Initial Risk/Reward Ratio (at least 1:2)", group="Risk Management")
stop_loss_buffer = input.float(2.0, title="Stop Loss Buffer (in %)", group="Risk Management")
min_bars_between_trades = input.int(6, title="Minimum Bars Between Trades (4H)", group="Trade Settings")
timeframe_higher = input.timeframe("D", title="Higher Timeframe for Trend")
// Define trend on higher timeframe
ema50_higher = request.security(syminfo.tickerid, timeframe_higher, ta.ema(close, 50))
ema200_higher = request.security(syminfo.tickerid, timeframe_higher, ta.ema(close, 200))
// Define indicators on lower timeframe
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
rsi = ta.rsi(close, 14)
[macd_line, signal_line, _] = ta.macd(close, 12, 26, 9)
atr = ta.atr(14)
// Define Fractals
fractal_up = ta.highest(high, 5)[1]
fractal_down = ta.lowest(low, 5)[1]
// Define Fibonacci retracement levels
var float fib_high = na
var float fib_low = na
if (ta.crossover(ema50_higher, ema200_higher))
fib_high := high
fib_low := low
else if (ta.crossunder(ema50_higher, ema200_higher))
fib_high := high
fib_low := low
fib_retrace_level1 = fib_high - (fib_high - fib_low) * fibonacci_level1
fib_retrace_level2 = fib_high - (fib_high - fib_low) * fibonacci_level2
fib_retrace_level3 = fib_high - (fib_high - fib_low) * fibonacci_level3
fib_retrace_level4 = fib_high - (fib_high - fib_low) * fibonacci_level4
// Entry, Stop Loss, and Take Profits
var int last_trade_bar_index = na
var float stop_loss_long = na
var float stop_loss_short = na
var float take_profit_long1 = na
var float take_profit_long2 = na
var float take_profit_long3 = na
var float take_profit_long4 = na
var float take_profit_short1 = na
var float take_profit_short2 = na
var float take_profit_short3 = na
var float take_profit_short4 = na
// Định nghĩa các tín hiệu mua và bán
long_signal = ta.crossover(close, fib_retrace_level2) and rsi < 70 and macd_line > signal_line and ema50 > ema200 and ema50_higher > ema200_higher
short_signal = ta.crossunder(close, fib_retrace_level2) and rsi > 30 and macd_line < signal_line and ema50 < ema200 and ema50_higher < ema200_higher
// Tạo biến đếm nến
var int bar_counter = 0
// Cập nhật đếm nến
bar_counter := bar_counter + 1
// Reset đếm nến khi vào lệnh mới
if (long_signal or short_signal) and (na(last_trade_bar_index) or (bar_index - last_trade_bar_index > min_bars_between_trades))
bar_counter := 0
// Vào lệnh khi có tín hiệu hoặc sau mỗi 16 cây nến
if ((long_signal or (bar_counter >= 16 and ema50 > ema200 and ema50_higher > ema200_higher)) and not short_signal and na(last_trade_bar_index)) or
((long_signal or (bar_counter >= 16 and ema50 > ema200 and ema50_higher > ema200_higher)) and not short_signal and (bar_index - last_trade_bar_index > min_bars_between_trades))
stop_loss_long := close - (close * stop_loss_buffer / 100)
take_profit_long1 := close + (close - stop_loss_long) * risk_reward_ratio
take_profit_long2 := close + (close - stop_loss_long) * (risk_reward_ratio + 1)
take_profit_long3 := close + (close - stop_loss_long) * (risk_reward_ratio + 2)
take_profit_long4 := close + (close - stop_loss_long) * (risk_reward_ratio + 3)
label.new(bar_index, close, text="Long Entry\nPrice: " + str.tostring(close) + "\nSL: " + str.tostring(stop_loss_long) + "\nTP1: " + str.tostring(take_profit_long1) + "\nTP2: " + str.tostring(take_profit_long2) + "\nTP3: " + str.tostring(take_profit_long3) + "\nTP4: " + str.tostring(take_profit_long4), color=color.green, style=label.style_label_down, yloc=yloc.abovebar)
last_trade_bar_index := bar_index
if ((short_signal or (bar_counter >= 16 and ema50 < ema200 and ema50_higher < ema200_higher)) and not long_signal and na(last_trade_bar_index)) or
((short_signal or (bar_counter >= 16 and ema50 < ema200 and ema50_higher < ema200_higher)) and not long_signal and (bar_index - last_trade_bar_index > min_bars_between_trades))
stop_loss_short := close + (close * stop_loss_buffer / 100)
take_profit_short1 := close - (stop_loss_short - close) * risk_reward_ratio
take_profit_short2 := close - (stop_loss_short - close) * (risk_reward_ratio + 1)
take_profit_short3 := close - (stop_loss_short - close) * (risk_reward_ratio + 2)
take_profit_short4 := close - (stop_loss_short - close) * (risk_reward_ratio + 3)
label.new(bar_index, close, text="Short Entry\nPrice: " + str.tostring(close) + "\nSL: " + str.tostring(stop_loss_short) + "\nTP1: " + str.tostring(take_profit_short1) + "\nTP2: " + str.tostring(take_profit_short2) + "\nTP3: " + str.tostring(take_profit_short3) + "\nTP4: " + str.tostring(take_profit_short4), color=color.red, style=label.style_label_up, yloc=yloc.belowbar)
last_trade_bar_index := bar_index
// Plot Fibonacci levels
plot(fib_retrace_level1, title="Fibonacci Level 1", color=color.blue)
plot(fib_retrace_level2, title="Fibonacci Level 2", color=color.blue)
plot(fib_retrace_level3, title="Fibonacci Level 3", color=color.blue)
plot(fib_retrace_level4, title="Fibonacci Level 4", color=color.blue)
// Phát hiện và bắt kịp sóng hiện tại
var float last_price = na
if (not na(fib_high) and not na(fib_low) and (close > fib_retrace_level1 and close < fib_retrace_level4))
if na(last_price) or (close != last_price)
label.new(bar_index, close, text="Entry Opportunity\nPrice: " + str.tostring(close), color=color.yellow, style=label.style_label_down, yloc=yloc.abovebar)
last_price := close
Tổng Quan Pine Script Enhanced Real-Time Fibonacci Strategy
1. Thiết lập Tham Số Đầu Vào
Phần đầu tiên của mã định nghĩa các tham số đầu vào, cho phép người dùng tùy chỉnh các mức Fibonacci, tỷ lệ rủi ro/lợi nhuận, và các cài đặt giao dịch khác:
- Mức Fibonacci: Bao gồm 4 mức phổ biến là 0.236, 0.382, 0.5 và 0.618.
- Tỷ lệ rủi ro/lợi nhuận: Mặc định là 1:2, nhưng người dùng có thể điều chỉnh để phù hợp với chiến lược cá nhân.
- Khoảng cách giữa các lệnh: Được quy định để tránh các lệnh giao dịch quá gần nhau, giảm thiểu rủi ro.
2. Xác Định Xu Hướng Trên Khung Thời Gian Cao Hơn
Script sử dụng hai đường EMA (50 và 200) trên khung thời gian cao hơn (như D1) để xác định xu hướng chính của thị trường. Điều này giúp chiến lược xác định xu hướng chủ đạo và chỉ thực hiện giao dịch theo hướng đó.
3. Phân Tích Chỉ Báo Trên Khung Thời Gian Thấp Hơn
Trên khung thời gian giao dịch (như 4H), script tính toán các chỉ báo kỹ thuật quan trọng:
- EMA50 và EMA200: Xác định xu hướng ngắn hạn.
- RSI (14): Phân tích mức quá mua hoặc quá bán.
- MACD: Đánh giá sức mạnh xu hướng và sự phân kỳ giữa các đường giá.
- ATR: Tính toán mức dừng lỗ dựa trên biến động thị trường.
4. Tính Toán Các Mức Fibonacci và Tín Hiệu Giao Dịch
Khi các đường EMA trên khung thời gian cao hơn giao cắt nhau, script ghi lại các mức đỉnh và đáy gần nhất để tính toán các mức Fibonacci hồi lại. Những mức này được sử dụng để xác định tín hiệu giao dịch:
- Tín hiệu mua (long): Khi giá vượt qua mức Fibonacci 0.382, kết hợp với RSI dưới 70, đường MACD cắt lên trên đường tín hiệu, và EMA50 lớn hơn EMA200 trên cả hai khung thời gian.
- Tín hiệu bán (short): Khi giá giảm xuống dưới mức Fibonacci 0.382, kết hợp với RSI trên 30, đường MACD cắt xuống dưới đường tín hiệu, và EMA50 nhỏ hơn EMA200 trên cả hai khung thời gian.
5. Quản Lý Rủi Ro và Xác Định Điểm Vào Lệnh
Script quản lý rủi ro bằng cách thiết lập mức dừng lỗ và các mục tiêu chốt lời dựa trên tỷ lệ rủi ro/lợi nhuận định trước. Điều này đảm bảo mỗi giao dịch đều có kế hoạch rõ ràng và giúp giảm thiểu tổn thất khi thị trường không di chuyển theo kỳ vọng.
6. Vẽ Các Mức Fibonacci và Cơ Hội Giao Dịch Trên Biểu Đồ
Các mức Fibonacci được vẽ trên biểu đồ giúp người dùng dễ dàng nhận diện các vùng hỗ trợ và kháng cự tiềm năng. Script cũng tự động gắn nhãn vào các vị trí có cơ hội vào lệnh để nhắc nhở người dùng.
Các config chiến lược “Enhanced Real-Time Fibonacci Strategy” tham khảo
Để tối ưu hóa script Pine cho từng khung thời gian giao dịch của Bitcoin và Altcoin, bạn cần điều chỉnh một số thông số như min_bars_between_trades
, stop_loss_buffer
, và timeframe_higher
sao cho phù hợp với đặc thù của từng khung thời gian. Dưới đây là một số gợi ý cấu hình cho các khung thời gian khác nhau:
Lưu Ý: bạn nên backtest trước và điều chỉnh các config phù hợp với các chiến lược của bạn, những config dưới đây chỉ để bạn tham khảo và đừng có máy móc trong tất cả các trường hợp, hãy thử nhiều config khác hơn.
Bitcoin Config:
1. Khung thời gian 1 phút (1m)
min_bars_between_trades = 30
(Tương đương với 30 phút)stop_loss_buffer = 0.1
(Vì biến động ngắn hạn có thể rất nhỏ)timeframe_higher = "15m"
(Sử dụng khung thời gian 15 phút để xác định xu hướng)2. Khung thời gian 15 phút (15m)
min_bars_between_trades = 12
(Tương đương với 3 giờ)stop_loss_buffer = 0.5
(Độ biến động ở khung 15 phút lớn hơn)timeframe_higher = "1h"
(Sử dụng khung thời gian 1 giờ để xác định xu hướng)3. Khung thời gian 30 phút (30m)
min_bars_between_trades = 8
(Tương đương với 4 giờ)stop_loss_buffer = 0.75
timeframe_higher = "2h"
(Sử dụng khung thời gian 2 giờ để xác định xu hướng)4. Khung thời gian 1 giờ (1h)
min_bars_between_trades = 6
(Tương đương với 6 giờ)stop_loss_buffer = 1.0
timeframe_higher = "4h"
(Sử dụng khung thời gian 4 giờ để xác định xu hướng)5. Khung thời gian 2 giờ (2h)
min_bars_between_trades = 3
(Tương đương với 6 giờ)stop_loss_buffer = 1.5
timeframe_higher = "6h"
(Sử dụng khung thời gian 6 giờ để xác định xu hướng)6. Khung thời gian 4 giờ (4h)
min_bars_between_trades = 2
(Tương đương với 8 giờ)stop_loss_buffer = 2.0
timeframe_higher = "12h"
(Sử dụng khung thời gian 12 giờ để xác định xu hướng)7. Khung thời gian 6 giờ (6h)
min_bars_between_trades = 1
(Tương đương với 6 giờ)stop_loss_buffer = 2.5
timeframe_higher = "12h"
(Sử dụng khung thời gian 12 giờ để xác định xu hướng)8. Khung thời gian 8 giờ (8h)
min_bars_between_trades = 1
(Tương đương với 8 giờ)stop_loss_buffer = 3.0
timeframe_higher = "1D"
(Sử dụng khung thời gian 1 ngày để xác định xu hướng)9. Khung thời gian 12 giờ (12h)
min_bars_between_trades = 1
(Tương đương với 12 giờ)stop_loss_buffer = 4.0
timeframe_higher = "2D"
(Sử dụng khung thời gian 2 ngày để xác định xu hướng)10. Khung thời gian 1 ngày (1D)
min_bars_between_trades = 1
(Tương đương với 1 ngày)stop_loss_buffer = 5.0
timeframe_higher = "1W"
(Sử dụng khung thời gian 1 tuần để xác định xu hướng)
Altcoin Config:
1. Khung thời gian 1 phút (1m)
min_bars_between_trades = 50
(Tương đương với 50 phút)stop_loss_buffer = 0.2
(Vì biến động giá có thể mạnh hơn trong ngắn hạn)timeframe_higher = "15m"
(Sử dụng khung thời gian 15 phút để xác định xu hướng)2. Khung thời gian 15 phút (15m)
min_bars_between_trades = 20
(Tương đương với 5 giờ)stop_loss_buffer = 0.75
(Độ biến động của altcoin thường lớn hơn so với Bitcoin)timeframe_higher = "1h"
(Sử dụng khung thời gian 1 giờ để xác định xu hướng)3. Khung thời gian 30 phút (30m)
min_bars_between_trades = 15
(Tương đương với 7.5 giờ)stop_loss_buffer = 1.0
timeframe_higher = "2h"
(Sử dụng khung thời gian 2 giờ để xác định xu hướng)4. Khung thời gian 1 giờ (1h)
min_bars_between_trades = 10
(Tương đương với 10 giờ)stop_loss_buffer = 1.5
timeframe_higher = "4h"
(Sử dụng khung thời gian 4 giờ để xác định xu hướng)5. Khung thời gian 2 giờ (2h)
min_bars_between_trades = 5
(Tương đương với 10 giờ)stop_loss_buffer = 2.0
timeframe_higher = "6h"
(Sử dụng khung thời gian 6 giờ để xác định xu hướng)6. Khung thời gian 4 giờ (4h)
min_bars_between_trades = 3
(Tương đương với 12 giờ)stop_loss_buffer = 2.5
timeframe_higher = "12h"
(Sử dụng khung thời gian 12 giờ để xác định xu hướng)7. Khung thời gian 6 giờ (6h)
min_bars_between_trades = 2
(Tương đương với 12 giờ)stop_loss_buffer = 3.0
timeframe_higher = "12h"
(Sử dụng khung thời gian 12 giờ để xác định xu hướng)8. Khung thời gian 8 giờ (8h)
min_bars_between_trades = 2
(Tương đương với 16 giờ)stop_loss_buffer = 3.5
timeframe_higher = "1D"
(Sử dụng khung thời gian 1 ngày để xác định xu hướng)9. Khung thời gian 12 giờ (12h)
min_bars_between_trades = 2
(Tương đương với 24 giờ)stop_loss_buffer = 4.0
timeframe_higher = "2D"
(Sử dụng khung thời gian 2 ngày để xác định xu hướng)10. Khung thời gian 1 ngày (1D)
min_bars_between_trades = 1
(Tương đương với 1 ngày)stop_loss_buffer = 5.5
timeframe_higher = "1W"
(Sử dụng khung thời gian 1 tuần để xác định xu hướng)Lưu ý khi giao dịch Altcoin:
- Biến động cao: Altcoin thường có mức độ biến động cao hơn, vì vậy mức
stop_loss_buffer
cần được điều chỉnh rộng hơn để tránh bị quét stop loss bởi các biến động nhỏ.- Thanh khoản thấp: Một số altcoin có thanh khoản thấp hơn, do đó bạn cần cân nhắc kỹ về khối lượng giao dịch và thời gian giữ lệnh.
- Thời gian giữa các giao dịch:
min_bars_between_trades
nên được điều chỉnh để tránh giao dịch quá dày đặc trong các khung thời gian ngắn, vì thị trường altcoin có thể biến động rất mạnh trong thời gian ngắn.
Kết Luận
“Enhanced Real-Time Fibonacci Strategy” là một công cụ mạnh mẽ kết hợp các yếu tố kỹ thuật hàng đầu như các mức Fibonacci, đường EMA, RSI và MACD. Sử dụng Pine Script trên TradingView, người dùng có thể tự động hóa chiến lược này, tối ưu hóa quy trình giao dịch và quản lý rủi ro một cách hiệu quả.
Đây là script bản quyền thuộc sở hữu của tintucbitcoin.io chúng tôi không cho phép bất kì hành vi thương mại nào, mọi chỉ báo chỉ là tham khảo không phải lời khuyên đầu tư
Nguồn: https://tintucbitcoin.io
Danh mục: Script Tradingview
Theo dõi Tintucbitcoin.IO trên Facebook | X (Twiiter) | Telegram Channel | ADS Contact
Miễn trừ trách nhiệm: toàn bộ nội dung được đăng tải trên website chỉ với mục đích cung cấp tin tức và không phải là lời khuyên đầu tư
Nguồn: https://tintucbitcoin.io
Danh mục: Script Tradingview