Chào bạn,
Ở bài trước, chúng ta đã cùng nhau code indicator đầu tiên: “Hello World”.
Bài này, chúng ta sẽ tìm hiểu xem code Indicator và Strategy khác nhau như nào.
Trước tiên hãy thử tạo 1 strategy xem sao.
Sau khi New strategy thì chúng ta sẽ có được một đoạn code mặc định. Hãy cùng phân tích qua một chút.
//@version=5 // nói cho compiler biết rằng mình đang dùng pinescript v5 strategy("My strategy", overlay=true, margin_long=100, margin_short=100) // khai báo rằng chúng ta đang code strategy longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) // xác định điều kiện buy là khi SMA 14 cắt lên SMA 28 if (longCondition) strategy.entry("My Long Entry Id", strategy.long) // nếu điều kiện buy thỏa mãn thì vào lệnh buy shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short)
Để chạy strategy thì bạn cũng bấm Save, sau đó Add to chart giống như indicator. Mình sẽ nói cụ thể về strategy ở những bài sau. Hiện tại mình chỉ tạo mới một strategy đơn giản để so sánh với indicator thôi.
Nghe thì có vẻ như đây là 2 thứ hoàn toàn khác nhau.
Indicator dùng để tính toán và hiển thị một thông tin nào đó lên trên chart, hỗ trợ bạn trong quá trình ra quyết định trade của mình. Còn strategy là để phân tích xem 1 chiến thuật có hiệu quả hay không.
Nhưng thực tế thì code 2 phần này cũng có khá nhiều điểm chung.
Strategy cũng có thể vẽ lên chart giống như indicator.
Ở bài trước chúng ta đã biết là indicator có thể hiện thị ở 2 mode :
- Overlay mode: Hiển thị chung với biểu đồ giá. Để bật mode này thì ta cần phải thêm ovarlay = true vào câu lệnh indicator(“My script”, ovarlay = true ). Một số indicator hiện thị dạng overlay như SMA, EMA, Bollinger Bands, Ichimoku…
- Pane mode: Hiện thị tách biệt với biểu đồ giá. Khi bạn tạo mới indicator thì mặc định nó sẽ ở dạng pane mode. Một số indicator dạng pane mode như RSI, MACD…..
Về lý thuyết thì strategy cũng có thể vẽ lên chart và hiện thị ở 2 dạng là overlay và pane y như indicator. Mọi người có thể sẽ ít thấy code strategy mà lại vẽ lên chart nhiều như code indicator.
Nhưng mình thấy khi code test một chiến thuật thì ngoài việc tập trung vào logic để xem sao cho chiến thuật đó hiệu quả thì việc vẽ các điều kiện buy sell lên chart cũng sẽ giúp ta dễ hình dung về chiến thuật đó hơn.
Khi hiểu được phẩn giống nhau này rồi thì bạn có thể dễ dàng biến một indicator thành strategy và ngược lại.
Ví dụ bạn code một indicator gồm 2 đường RSI với 2 timeframe khác nhau. Giờ bạn muốn test một chiến thuật là buy lên khi RSI ở timeframe 1H cắt lên RSI ở timeframe 4H, ngược lại thì sell.
Thì bạn có thể giữ nguyên gần như toàn bộ logic code của indicator mình vừa nói ở trên và chỉ cần thêm vào phần code để buy và sell.
Hoặc bạn thấy một indicator trên mạng rất hay và bạn muốn thử test một chiến thuật sử dụng indicator đó xem có hiệu quả hay không.
Thì bạn cũng có thể dùng lại toàn bộ code của indicator đó rồi code thêm phần buy sell vào để thành 1 strategy.
Để nói sâu hơn vào phần này thì chắc mình sẽ phải viết ở trong một bài khác.
Thêm một điểm giống nhau nữa là:
- Indicator có thể code alert gửi cảnh báo đến bạn khi một điều kiện nào đó (do bạn định nghĩa) thỏa mãn.
- Strategy cũng có thể gửi được cảnh báo như indicator. Ví dụ khi điều kiện buy/sell thỏa mãn, code strategy sẽ vào lệnh và gửi cảnh báo cho bạn chi tiết lệnh đã được vào. Hoặc khi đóng một lệnh bạn cũng có thể code để strategy gửi một thông báo đến bạn xem lệnh đó lời lỗ như nào.
Okay,
Đó là một vài điểm giống nhau cơ bản giữa Indicator và Strategy.
Giờ chúng ta sẽ xem đến những điểm khác nhau.
Điểm khác đầu tiên trong code là dòng code ngay sau version, xác định xem mình đang code indicator hay strategy
//@version=5 indicator("Hello World", overlay = true)
//@version=5 strategy("My strategy", overlay=true, margin_long=100, margin_short=100)
Khi bạn đã khai báo cho TradingView biết là mình đang code gì rồi thì TradinView sẽ bắt bạn tuân theo một số rule như sau:
- Khi code indicator thì bạn sẽ phải vẽ một thứ gì đó lên chart. Ví dụ như một đường SMA, đường trendline hoặc một thẳng, một hình ngôi sao hoặc một chữ nào đó.
Nếu bạn code một indicator mà ko có vẽ một cái gì đó lên chart thì khi compile sẽ bị báo lỗi như sau:
- Khi code strategy thì bắt buộc phải có ít nhất một câu lệnh strategy. được gọi. Ví dụ như strategy.entry().
Cuối cùng là một sự khác nhau rất quan trọng mà khi bạn test strategy cần phải cực kỳ để ý. Đó là sự tính toán và thực thi code của indicator và strategy ở thời điểm realtime, cây nến vẫn đang chạy mà chưa đóng cửa. Mặc định thì code strategy sẽ chỉ được thực thi khi cây nến realtime đóng cửa.
Còn code indicator sẽ được thực thi mỗi khi giá hoặc volume được update.
Thực ra phần này cũng khá nâng cao. Sau này khi bạn code strategy thì mới cần để ý kĩ đến phần này.
Okay,
Tạm thời thế đã nhé. Ở đoạn trên mình vừa có nói về sự tính toán và thực thi của code indicator. Đó chính là khái niệm Execution Model của pinescript. Chúng ta sẽ tìm hiểu kĩ hơn ở bài sau nhé
Hẹn gặp lại bạn ở bài tiếp theo !!!
Leave a Reply