Giới thiệu
Nếu không có công cụ giao dịch phù hợp, bạn không thể tiến hành phân tích kỹ thuật hiệu quả. Một chiến lược giao dịch hiệu quả sẽ giúp bạn tránh được những sai lầm thường gặp, cải thiện khả năng quản lý rủi ro và tăng khả năng xác định cũng như tận dụng các cơ hội.
Đối với nhiều người, TradingView là nền tảng biểu đồ phù hợp. Cung cấp một trung tâm các công cụ phân tích kỹ thuật, ứng dụng web HTML5 mạnh mẽ được hàng triệu người sử dụng để theo dõi các chuyển động trên thị trường Forex, tiền điện tử và chứng khoán truyền thống.
TradingView có nhiều tính năng mạnh mẽ: nó cho phép chúng tôi theo dõi tài sản trên nhiều nền tảng giao dịch và xuất bản các ý tưởng giao dịch trong mạng xã hội của mình. Trong bài viết này, chúng tôi sẽ tập trung vào khả năng tùy chỉnh của nó. Chúng tôi sẽ sử dụng Pine Script, ngôn ngữ lập trình riêng của TradingView, cho phép chúng tôi kiểm soát chi tiết bố cục biểu đồ của mình.
Bắt đầu nào!
Tập lệnh thông là gì?
Pine Script là ngôn ngữ kịch bản có thể được sử dụng để sửa đổi biểu đồ TradingView của bạn. Nền tảng này đã trang bị cho bạn nhiều tính năng để làm điều đó, nhưng Pine Script cho phép bạn tiến thêm một bước nữa. Cho dù bạn muốn thay đổi màu của chân nến hay muốn kiểm tra lại một chiến lược mới, Pine Editor sẽ cho phép bạn tùy chỉnh biểu đồ thời gian thực của mình khi bạn thấy phù hợp.
Bản thân mã này đã được ghi lại một cách xuất sắc, vì vậy hãy nhớ xem hướng dẫn sử dụng để biết thêm thông tin. Mục tiêu của chúng tôi trong hướng dẫn này là thảo luận về một số điều cơ bản và giới thiệu các chỉ báo có thể hữu ích cho giao dịch tiền điện tử.
Đang cài đặt
Việc bắt đầu với Pine Script cực kỳ đơn giản. Bất kỳ mã nào chúng tôi viết đều chạy trên máy chủ của TradingView, vì vậy chúng tôi có thể truy cập trình chỉnh sửa và phát triển tập lệnh của mình từ trình duyệt – mà không cần tải xuống hoặc cấu hình bổ sung.
Trong hướng dẫn này, chúng ta sẽ lập biểu đồ cặp tiền tệ Bitcoin/Binance USD (BTCBUSD). Nếu bạn chưa có tài khoản, hãy tiếp tục và tạo một tài khoản miễn phí (cũng có sẵn gói đăng ký chuyên nghiệp, nhưng hướng dẫn này không cần thiết).
Hãy theo liên kết này và bạn sẽ thấy một biểu đồ giống như sau:

Của bạn có thể sẽ được cập nhật hơn.
Ở đây, chúng tôi muốn có được biểu đồ đầy đủ tính năng – hãy nhấp vào nút để truy cập nó. Điều đó mang lại cho chúng ta cái nhìn chi tiết hơn nhiều, các công cụ vẽ và các tùy chọn để vẽ đường xu hướng, cùng những thứ khác.

Biểu đồ đầy đủ tính năng. Bạn có thể điều chỉnh khung thời gian bằng cách nhấp vào các chế độ xem phía trên các tab được đánh dấu.
Chúng tôi sẽ không thảo luận về cách sử dụng các công cụ khác nhau có sẵn, nhưng nếu bạn nghiêm túc về phân tích kỹ thuật, chúng tôi khuyên bạn nên tự làm quen với chúng. Ở phía dưới bên trái (được nêu trong hình), bạn sẽ thấy một vài tab khác nhau – hãy nhấp vào Pine Editor.
Biên tập viên cây thông

Trình chỉnh sửa này là nơi điều kỳ diệu xảy ra. Chúng tôi sẽ cho nó biết những gì chúng tôi muốn làm, sau đó nhấp vào Thêm vào biểu đồ để xem các chú thích của chúng tôi xuất hiện ở trên. Lưu ý rằng mọi thứ có thể trở nên lộn xộn nếu chúng tôi đưa vào nhiều chú thích cùng một lúc, vì vậy chúng tôi sẽ xóa chúng giữa các ví dụ (nhấp chuột phải vào biểu đồ > Xóa chỉ báo).
Bạn có thể thấy rằng chúng tôi đã có sẵn một vài dòng mã ở đó. Hãy nhấp vào Thêm vào biểu đồ để xem điều gì sẽ xảy ra.

Biểu đồ thứ hai được thêm vào bên dưới bản gốc. Biểu đồ mới tình cờ thể hiện cùng một dữ liệu. Di chuột qua Tập lệnh của tôi và nhấp vào dấu thập để xóa nó. Bây giờ, hãy đi sâu vào mã.
nghiên cứu ("Kịch bản của tôi")Dòng đầu tiên này chỉ là thiết lập chú thích của chúng tôi. Nó chỉ yêu cầu tên mà bạn muốn gọi chỉ báo ("My Script", trong trường hợp này), nhưng cũng có một số tham số tùy chọn mà chúng ta có thể thêm vào. Một trong số đó là lớp phủ, yêu cầu TradingView đặt chỉ báo trên biểu đồ hiện có (thay vì trong một phân đoạn mới). Như bạn có thể thấy từ ví dụ đầu tiên của chúng tôi, nó được mặc định là sai. Mặc dù bây giờ chúng ta sẽ không thấy nó hoạt động, nhưng lớp phủ=true sẽ thêm chỉ báo vào biểu đồ hiện có.
cốt truyện (đóng)Dòng này là hướng dẫn vẽ đồ thị giá đóng của Bitcoin. cốt truyện chỉ đơn giản cung cấp cho chúng ta một biểu đồ dạng đường, nhưng chúng ta cũng có thể hiển thị các chân nến và thanh, như chúng ta sẽ thấy ngay sau đây.
Bây giờ, hãy thử làm như sau:
//@version=4
nghiên cứu ("Kịch bản của tôi", lớp phủ = true)
cốt truyện(mở, color=color.purple)Sau khi thêm biểu đồ này, bạn sẽ thấy biểu đồ thứ hai (trông giống như biểu đồ gốc được dịch chuyển sang bên phải). Thay vào đó, tất cả những gì chúng ta đã làm là vẽ đồ thị giá mở cửa và vì giá mở cửa của ngày hiện tại chính là giá đóng cửa của ngày hôm trước nên điều hợp lý là những giá này có hình dạng giống hệt nhau.
Được rồi! Hãy loại bỏ các chú thích hiện tại (hãy nhớ rằng chúng ta thực hiện điều đó bằng cách nhấp chuột phải và nhấn Xóa chỉ báo). Di chuột qua Bitcoin / BUSD và nhấp vào nút Ẩn để xóa biểu đồ hiện tại.
Nhiều nhà giao dịch thích biểu đồ hình nến vì chúng cung cấp cho chúng ta nhiều thông tin hơn là một biểu đồ đơn giản như biểu đồ chúng ta vừa làm. Hãy thêm chúng tiếp theo.
//@version=4
nghiên cứu ("Kịch bản của tôi", lớp phủ = true)
nến cố định (mở, cao, thấp, đóng)Đó là một khởi đầu tốt, nhưng việc thiếu màu sắc khiến nó hơi nhạt nhẽo. Lý tưởng nhất là chúng ta nên có nến đỏ khi giá mở lớn hơn giá đóng trong khung thời gian nhất định và nến xanh nếu giá đóng vượt quá giá mở. Chúng ta sẽ thêm một dòng phía trên hàmplotcandle():
//@version=4
nghiên cứu ("Kịch bản của tôi", lớp phủ = true)
màu sắc = mở >= đóng? color.red : màu.green
nến cố định (mở, cao, thấp, đóng)Điều này xem xét mọi nến và kiểm tra xem giá mở lớn hơn hay bằng giá đóng. Nếu đúng như vậy, điều đó có nghĩa là giá đã giảm trong khoảng thời gian đó, vì vậy nó sẽ tô màu đỏ cho nến. Nếu không, nó sẽ có màu xanh lục. Sửa đổi hàm plotcandle() để chuyển bảng phối màu này vào:
//@version=4
nghiên cứu ("Kịch bản của tôi", lớp phủ = true)
màu sắc = mở >= đóng? color.red : màu.green
nến cốt truyện(mở, cao, thấp, đóng, màu=màu)Xóa các chỉ báo hiện tại nếu bạn chưa có và thêm chỉ báo này vào biểu đồ. Bây giờ chúng ta sẽ có một cái gì đó giống như biểu đồ nến thông thường.

Xinh đẹp!
Vẽ đường trung bình động (MA)
Chúng tôi đã có một số điều cơ bản. Hãy chuyển sang chỉ báo tùy chỉnh đầu tiên của chúng ta – đường trung bình động hàm mũ hay EMA. Đây là một công cụ có giá trị vì nó cho phép chúng tôi lọc ra mọi nhiễu loạn thị trường và điều chỉnh hành động giá.
EMA hơi khác so với đường trung bình động đơn giản (SMA), ở chỗ nó chú trọng nhiều hơn đến dữ liệu gần đây nhất. Nó có xu hướng phản ứng nhanh hơn với những chuyển động đột ngột và thường được sử dụng cho các giao dịch ngắn hạn (ví dụ như trong giao dịch trong ngày).
Đường trung bình động đơn giản (SMA)
Chúng ta cũng có thể vẽ đường SMA để có thể so sánh cả hai sau đó. Thêm dòng này vào tập lệnh của bạn:
cốt truyện(sma(đóng, 10))Điều này thể hiện mức trung bình của mười ngày trước đó. Tinh chỉnh số trong ngoặc để xem đường cong thay đổi như thế nào khi tính đến các độ dài khác nhau.

SMA, dựa trên mười ngày trước đó.
Đường trung bình động hàm mũ (EMA)
EMA sẽ khó hiểu hơn một chút nhưng đừng lo lắng. Trước tiên hãy chia nhỏ công thức:
EMA = (Đóng - EMA của ngày hôm trước) * Hệ số nhân - EMA của ngày hôm trướcVậy điều này đang nói với chúng ta điều gì? Vâng, đối với mỗi ngày, chúng tôi tính toán mức trung bình động mới dựa trên mức trung bình của ngày hôm trước. Hệ số nhân là số “cân” trong khoảng thời gian gần đây nhất và được tính theo công thức sau:
Hệ số nhân = 2 / (Độ dài EMA + 1)Giống như các đường trung bình động đơn giản, chúng ta cần xác định EMA sẽ kéo dài bao lâu. Về mặt cú pháp, chức năng vẽ EMA tương tự như SMA. Vẽ nó cùng với SMA để bạn có thể so sánh cả hai:
//@version=4
nghiên cứu ("Kịch bản của tôi", lớp phủ = true)
cốt truyện(sma(đóng, 10))
cốt truyện(ema(đóng,10))
Bạn có thể thấy một chút khác biệt giữa hai loại MA.
➠ Bạn đang muốn bắt đầu với tiền điện tử? Mua Bitcoin trên Binance!
Các tập lệnh tích hợp
Cho đến nay, chúng tôi đã viết mã theo cách thủ công để bạn có thể cảm nhận về nó. Nhưng hãy giới thiệu điều gì đó có thể giúp chúng ta tiết kiệm thời gian, đặc biệt nếu chúng ta đang viết những tập lệnh phức tạp hơn và chúng ta không muốn làm chúng từ đầu.
Ở trên cùng, bên phải trình chỉnh sửa của bạn, nhấp vào Mới. Bạn sẽ nhận được một menu thả xuống với tất cả các loại chỉ báo kỹ thuật khác nhau. Nhấp vào Hàm mũ trung bình di chuyển để xem mã nguồn của chỉ báo EMA.

Hãy tiếp tục và thêm phần này vào biểu đồ.
Cái này khác với cái của chúng tôi - bạn sẽ nhận thấy các hàm input(). Những thứ này rất hay xét từ góc độ khả năng sử dụng vì bạn có thể nhấp vào hộp này…

...và dễ dàng thay đổi một số giá trị trong cửa sổ bật lên bằng cách nhấp vào bánh xe Cài đặt.

Chúng tôi sẽ thêm một số hàm input() trong tập lệnh tiếp theo để chứng minh điều này.
Vẽ chỉ báo Chỉ số sức mạnh tương đối (RSI)
Chỉ số sức mạnh tương đối (RSI) là một chỉ báo thiết yếu khác trong phân tích kỹ thuật. Nó được biết đến như một chỉ báo động lượng, nghĩa là nó đo lường tốc độ mua và bán tài sản. Được trình bày theo thang điểm từ 0 đến 100, điểm RSI cố gắng thông báo cho các nhà đầu tư về việc liệu tài sản có bị mua quá mức hay bán quá mức hay không. Thông thường, một tài sản có thể được coi là bán quá mức nếu nó có điểm nhỏ hơn hoặc bằng 30 và nó có thể bị mua quá mức nếu có điểm lớn hơn hoặc bằng 70.
Nếu bạn đi tới Chiến lược mới > RSI, bạn có thể tự mình nhìn thấy điều này. RSI thường được đo trong khoảng thời gian 14 (tức là 14 giờ hoặc 14 ngày), nhưng bạn có thể tự do điều chỉnh cài đặt đó cho phù hợp với chiến lược của riêng mình.
Thêm phần này vào biểu đồ. Bây giờ bạn sẽ thấy một vài mũi tên hiển thị (được xác định bởi hàm Strategy.entry() trong mã). RsiLE cho thấy cơ hội tiềm năng để mua tài sản vì nó có thể bị bán quá mức. RsiSE nêu bật các điểm có thể rút ngắn tài sản khi nó bị mua quá mức. Lưu ý rằng, giống như tất cả các chỉ báo, bạn không nhất thiết phải dựa vào những chỉ báo này như bằng chứng rõ ràng rằng giá sẽ giảm/tăng.
Kiểm tra lại
Có một cách để chúng tôi kiểm tra các chỉ báo tùy chỉnh của mình. Mặc dù hiệu suất trong quá khứ không đảm bảo cho kết quả trong tương lai, nhưng việc kiểm tra lại các tập lệnh của chúng tôi có thể cho chúng tôi ý tưởng về mức độ hiệu quả của chúng trong việc thu thập tín hiệu.
Chúng tôi sẽ đưa ra một ví dụ về một tập lệnh đơn giản dưới đây. Chúng tôi sẽ tạo một chiến lược đơn giản để vào vị thế mua khi giá BTC giảm xuống dưới 11.000 USD và thoát khỏi vị thế khi giá vượt quá 11.300 USD. Sau đó chúng ta có thể thấy chiến lược này sẽ mang lại lợi nhuận như thế nào trong lịch sử.
//@version=4
chiến lược ("ToDaMoon", lớp phủ = true)
nhập = đầu vào (11000)
thoát = đầu vào (11300)
giá = đóng
nếu (giá <= nhập)
Strategy.entry("BuyTheDip", Strategy.long, comment="BuyTheDip")
nếu (giá >= thoát)
chiến lược.close_all(comment="SellTheNews")Ở đây chúng ta đã xác định điểm vào và điểm ra dưới dạng các biến – cả hai đều là đầu vào, nghĩa là chúng ta có thể thay đổi chúng trên biểu đồ sau này. Chúng tôi cũng thiết lập biến giá, biến này sẽ đóng cửa cho từng khoảng thời gian. Sau đó, chúng ta có một số logic ở dạng câu lệnh if. Nếu phần trong ngoặc là đúng thì khối thụt lề bên dưới nó sẽ được chạy. Nếu không, nó sẽ bị bỏ qua.
Vì vậy, nếu giá nhỏ hơn hoặc bằng mục nhập mong muốn của chúng tôi, biểu thức đầu tiên sẽ đánh giá là đúng và chúng tôi sẽ mở một vị thế mua. Khi giá bằng hoặc vượt quá mức thoát mong muốn, khối thứ hai sẽ được kích hoạt, đóng tất cả các vị thế mở.
Chúng tôi sẽ chú thích biểu đồ bằng các mũi tên hiển thị nơi chúng tôi đã vào/ra, vì vậy chúng tôi đã chỉ định nội dung để gắn nhãn các điểm này bằng tham số nhận xét (trong ví dụ này là “BuyTheDip” và “SellTheNews”). Sao chép mã và thêm nó vào biểu đồ.

Bây giờ bạn có thể xem các chỉ số trên biểu đồ. Bạn có thể cần phải thu nhỏ.
TradingView tự động áp dụng các quy tắc của bạn cho dữ liệu cũ hơn. Bạn cũng sẽ nhận thấy rằng nó chuyển từ tab Trình chỉnh sửa thông sang tab Trình kiểm tra chiến lược. Điều này cho phép bạn xem tổng quan về lợi nhuận tiềm năng của mình, danh sách các giao dịch và từng kết quả hoạt động riêng lẻ của chúng.

Các vị trí chúng tôi đã nhập và thoát.
Buộc nó lại với nhau
Đã đến lúc viết kịch bản của riêng chúng ta bằng cách sử dụng một số khái niệm mà chúng ta đã thấy cho đến nay. Chúng ta sẽ kết hợp EMA và RSI và sử dụng các giá trị của chúng để tô màu các chân nến, mang lại những hiểu biết sâu sắc mà chúng ta có thể dễ dàng hình dung.
Điều này không nên được hiểu là lời khuyên tài chính – không có cách nào chính xác một cách khách quan để sử dụng chỉ báo này. Giống như tất cả những công cụ khác, nó nên được sử dụng cùng với các công cụ khác để phát triển chiến lược của riêng bạn.
Bây giờ hãy làm việc với tập lệnh mới của chúng ta. Xóa tất cả các chỉ báo của bạn khỏi biểu đồ và ẩn cả biểu đồ Bitcoin/BUSD để chúng ta có một khung nền rõ ràng để làm việc.
Hãy bắt đầu bằng cách xác định nghiên cứu của chúng tôi. Bạn có thể thoải mái đặt tên nó theo bất kỳ tên nào bạn muốn, chỉ cần đảm bảo đặt Overlay=true.
nghiên cứu(title="Kịch bản của Học viện Binance", Overlay=true)Hãy nhớ công thức EMA của chúng tôi từ trước đó. Chúng ta cần cung cấp hệ số nhân với độ dài của EMA. Hãy biến nó thành đầu vào yêu cầu số nguyên (vì vậy, không có chữ số thập phân). Chúng tôi cũng sẽ đặt mức tối thiểu có thể là (minval) và giá trị mặc định (defval).
nghiên cứu(title="Kịch bản của Học viện Binance", Overlay=true)
emaLength = input(title="Độ dài EMA", type=input.integer, defval=25, minval=0)Sử dụng biến mới này, chúng ta có thể tính giá trị EMA cho mỗi cây nến trong biểu đồ của mình:
nghiên cứu(title="Kịch bản của Học viện Binance", Overlay=true)
emaLength = input(title="Độ dài EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(đóng, emaLength)Tuyệt vời. Vào chỉ báo RSI. Chúng tôi sẽ cung cấp cho nó độ dài theo cách tương tự:
nghiên cứu(title="Kịch bản của Học viện Binance", Overlay=true)
emaLength = input(title="Độ dài EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(đóng, emaLength)
rsiLength = input(title="RSI Chiều dài", type=input.integer, defval=25, minval=0)Và bây giờ, chúng ta có thể tính toán nó:
nghiên cứu(title="Kịch bản của Học viện Binance", Overlay=true)
emaLength = input(title="Độ dài EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(đóng, emaLength)
rsiLength = input(title="RSI Chiều dài", type=input.integer, defval=25, minval=0)
rsiVal = rsi(đóng, rsiLength)Ở giai đoạn này, chúng ta hãy tập hợp logic tô màu các chân nến tùy thuộc vào giá trị EMA và RSI. Hãy lấy một tình huống trong đó (a) giá đóng của nến vượt quá EMA và (b) khi chỉ số RSI trên 50.
Tại sao? Chà, bạn có thể quyết định rằng những chỉ báo này có thể được sử dụng kết hợp để cho bạn biết khi nào nên mua hoặc bán Bitcoin. Ví dụ: bạn có thể nghĩ rằng việc đáp ứng cả hai điều kiện này có nghĩa là đây là thời điểm tốt để vào một vị thế mua. Hoặc ngược lại, bạn có thể sử dụng nó để thông báo cho bạn khi nào không nên bán, ngay cả khi các chỉ báo khác nói ngược lại.
Vì vậy, dòng tiếp theo của chúng tôi sẽ trông như thế này:
nghiên cứu(title="Kịch bản của Học viện Binance", Overlay=true)
emaLength = input(title="Độ dài EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(đóng, emaLength)
rsiLength = input(title="RSI Chiều dài", type=input.integer, defval=25, minval=0)
rsiVal = rsi(đóng, rsiLength)
màu sắc = đóng > emaVal và rsiVal > 50 ? color.green : màu.redNếu chúng tôi dịch điều này sang tiếng Anh đơn giản, chúng tôi chỉ nói rằng nếu giá trị EMA vượt quá giá đóng cửa và điểm RSI vượt quá 50, chúng tôi sẽ tô màu nến xanh. Nếu không, chúng ta sẽ tô màu đỏ.
Tiếp theo, vẽ EMA:
nghiên cứu(title="Kịch bản của Học viện Binance", Overlay=true)
emaLength = input(title="Độ dài EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(đóng, emaLength)
rsiLength = input(title="RSI Chiều dài", type=input.integer, defval=25, minval=0)
rsiVal = rsi(đóng, rsiLength)
màu sắc = đóng > emaVal và rsiVal > 50 ? color.green : màu.red
cốt truyện(emaVal, "EMA")Cuối cùng, vẽ các nến, đảm bảo bao gồm tham số màu:
nghiên cứu(title="Kịch bản của Học viện Binance", Overlay=true)
emaLength = input(title="Độ dài EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(đóng, emaLength)
rsiLength = input(title="RSI Chiều dài", type=input.integer, defval=25, minval=0)
rsiVal = rsi(đóng, rsiLength)
màu sắc = đóng > emaVal và rsiVal > 50 ? color.green : màu.red
cốt truyện(emaVal, "EMA")
nến cốt truyện(mở, cao, thấp, đóng, màu=màu)Và đó là kịch bản! Thêm nó vào biểu đồ để xem nó hoạt động.

Biểu đồ BTC/BUSD với chỉ báo EMA/RSI.
Bớt tư tưởng
Trong bài viết này, chúng tôi sẽ giới thiệu một số ví dụ cơ bản về những gì bạn có thể làm với Pine Editor của TradingView. Đến bây giờ, bạn nên tự tin tạo các chú thích đơn giản cho biểu đồ giá để có thêm thông tin chi tiết từ các chỉ báo của riêng bạn.
Ở đây, chúng tôi chỉ quan tâm đến một số chỉ báo, nhưng thật dễ dàng để tạo ra những chỉ báo phức tạp hơn – bằng cách chọn các tập lệnh có sẵn từ Mới hoặc bằng cách tự viết chúng.
Thiếu cảm hứng? Các bài viết sau đây có thể cung cấp cho bạn một số ý tưởng cho dự án tiếp theo của bạn:
Hướng dẫn ngắn gọn về chỉ báo Parabol SAR
Hướng dẫn làm chủ Fibonacci thoái lui
Giải thích các chỉ số dẫn đầu và tụt hậu
Giải thích chỉ báo MACD

