Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIK

Программирование

Ngôn ngữ thuật toán QPILE để lập trình robot giao dịch cho QUIK.
Robot giao dịch có thể được viết bằng một ngôn ngữ cụ thể, tương tự như mã chương trình. QPILE là một trong số đó, bài viết này sẽ xem xét ngôn ngữ này, so sánh ngôn ngữ QPILE và
LUA , đồng thời đưa ra các ví dụ về robot bằng ngôn ngữ này.

Thông tin chung về QPILE

QPILE là từ viết tắt của QUIK Programmable Interface and Logic Environment.

Đây là một loạt các lệnh được thông dịch bởi máy trạm QUIK. Nó chủ yếu được sử dụng để tính giá của danh mục đầu tư chứng khoán. Ngôn ngữ này cũng được sử dụng cho:

  • tính toán lại năng động giá tài sản của khách hàng trên máy tính để bàn của nhà môi giới và trong danh mục đầu tư của họ. Trong trường hợp thứ hai, tổng giá của chúng cũng được tính toán lại;
  • tìm kiếm các chỉ số còn thiếu bằng cách sử dụng các thuật toán và dữ liệu của riêng họ để cho vay ký quỹ;
  • phát triển chiến lược giao dịch đúng đắn.

Ngôn ngữ mô tả cấu trúc của bảng: bổ nhiệm các cột và hàng, công thức. Sau đó, các phép toán, biến, dữ liệu từ các bảng khác có thể được sử dụng để tính toán. Mã chương trình được tải từ máy chủ QUIK hoặc từ đĩa của người dùng được xử lý bởi trình thông dịch ngôn ngữ, tính toán các giá trị trong công thức. Các bảng của một chương trình có một nguồn dữ liệu nhưng các phép tính không bị trùng lặp và không ảnh hưởng đến hiệu quả của hệ thống. Khi làm việc với bảng QUIK, các bảng trên QPILE có các chức năng tiêu chuẩn. QUIK tại nơi làm việc được trang bị trình gỡ lỗi mã QPILE. https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htm Ngôn ngữ này sẽ cho phép bạn mô tả các bảng mới với cấu trúc nhất định, đánh dấu các ô có giá trị nhất định, tính toán các trường dựa trên biểu thức toán học và logic. Người dùng sẽ nhận được thông báo dưới dạng tín hiệu âm thanh hoặc tin nhắn văn bản. Các bảng trên QPILE có thể được chỉnh sửa, in, sao chép, xuất thông qua máy chủ ODBC và DDE. Dữ liệu ban đầu là từ các bảng QUIK:

  • giao dịch, bao gồm cả để thực hiện và không cần thiết;
  • lệnh, bao gồm lệnh dừng, cho các giao dịch mua bán không cần kê đơn và lệnh – báo cáo cho các giao dịch trong giao dịch thanh toán;
  • “danh mục khách hàng”, “mua / bán”
  • dữ liệu từ các vị trí của người tham gia theo tiền, tài khoản giao dịch, công cụ.

Các bảng dựa trên QPILE không thể được sao chép sang tệp văn bản thông qua menu ngữ cảnh và xuất sang hệ thống phân tích kỹ thuật và không thể phát triển biểu đồ dựa trên chúng. Không thể lọc hoặc sắp xếp các bảng dựa trên QPILE.

Làm việc với bàn

Để tải mã chương trình, bạn cần chọn menu dịch vụ, sau đó chọn tập lệnh QPILE. Bạn cũng có thể sử dụng tổ hợp Ctrl + F11. Sau khi bạn cần nhấp vào “Thêm” và chọn tệp mong muốn. Nó có phần mở rộng .qpl và tên của nó sẽ xuất hiện trong danh sách Các tập lệnh Có sẵn.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIKNếu có lỗi trong chương trình, hệ thống sẽ đưa ra thông báo trong “Cửa sổ thông báo”, trong đó sẽ có tên của tệp bị lỗi và số dòng có lỗi. Nếu không tìm thấy lỗi nào trong tệp, dữ liệu sau sẽ được chỉ ra trong các trường:

  • bảng tên;
  • số lượng cột và khách hàng;
  • danh sách các định danh và khách hàng;
  • danh sách các tham số và mã nguồn của tệp.

Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIKNút “Tải xuống cục bộ” sẽ cho phép bạn lấy bảng từ tệp và “Tải lên máy chủ” sẽ gửi chương trình đến máy chủ để tất cả người dùng có thể truy cập. Để tạo bảng, hãy nhấp vào Tạo bảng. Trong “Các tập lệnh có sẵn”, chọn chương trình bạn cần thực hiện, đặt số dòng thông qua “Bộ lọc Khách hàng”, xác định các cột được yêu cầu và trình tự của chúng.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIKTạm dừng và tiếp tục tính toán, bắt đầu lại tính toán và ở chế độ gỡ lỗi, lưu mô tả vào tệp, minh họa công thức và các tham số tập lệnh có sẵn trong menu ngữ cảnh.

Cấu trúc QPILE

Loại dữ liệu

  • String – chuỗi.
  • Double là một số dấu phẩy động.
  • Bộ sưu tập – một bộ sưu tập.
  • Bản đồ – một mảng kết hợp – một chuỗi các cặp cho phép bạn lấy thông tin theo khóa.

Biểu thức

Các phép toán cộng, trừ, nhân, chia đều được áp dụng. Các biểu thức logic “và”, “hoặc”, bằng, nhiều hơn, ít hơn, bất đẳng thức, cấu trúc có điều kiện “nếu… thì…” cũng được sử dụng.

Chức năng

Các hàm có thể được đặt ở bất kỳ đâu trong chương trình và có các tên khác nhau. Tổng cộng, 18 nhóm hàm và hàm toán học có sẵn để lấy giá trị của bảng và tham số, mảng kết hợp, danh sách bảng và các tác vụ khác. Lớp một:

  1. Các hàm toán học cho phép bạn trả về giá trị của sin, cosine, tiếp tuyến, cotang của đối số, tính toán số mũ của đối số, tạo một số ngẫu nhiên, v.v.
  2. Các lệnh chung : NEW_GLOBAL để khởi tạo một biến toàn cục và MESSAGE để mở thông báo.

Các chức năng để làm việc với:

  • Bộ sưu tập của các đối tượng (Collection) . Chúng cho phép bạn tạo một bộ sưu tập mới, trả về số lượng phần tử cần thiết, thay thế hoặc chèn các giá trị mong muốn.
  • Mảng liên kết (MAP) . Giúp tạo và quản lý mảng.
  • Tệp – làm việc với tệp văn bản, duy trì nhật ký ghi của chương trình. Tên tệp có thể chứa đường dẫn đến nó.
  • Các chuỗi .
  • Đồ thị . Các hàm GET_CANDLE để truy cập dữ liệu nến và GET_CANDLE EX để trả về một mảng kết hợp.
  • Các ứng dụng . Tạo lệnh và gửi chúng đến hệ thống giao dịch.
  • Các thẻ . Cấu tạo và cài đặt của chúng trên biểu đồ. Thêm, xóa một hoặc tất cả các nhãn, lấy và thiết lập các thông số cho một nhãn cụ thể.

Ngoài ra còn có các chức năng cho:

  1. Để truy cập các hàng của bảng QUIK tùy ý và danh sách các tham số có sẵn . Quyền truy cập vào dữ liệu bảng nơi làm việc. Chúng bao gồm GET_ITEM để trả về MAP và GET_NUMBER_OF để trả về số lượng mục nhập.
  2. Để làm việc với một bảng có thể lập trình . Các lệnh này hoạt động trên bảng RIÊNG. Nó có thể đọc được bởi các chức năng tiêu chuẩn từ đoạn trước và bởi các chức năng này. Nhóm này bao gồm các lệnh để thêm, sửa đổi và xóa một hàng có chỉ mục, và xóa hoàn toàn bảng RIÊNG.

Để nhận các giá trị, hãy sử dụng:

  1. Bảng các giao dịch hiện tại . Nhận các tham số thông tin trao đổi bằng lệnh GET_PARAM (_EX).
  2. Trích dẫn các cửa sổ . Nhận các giá trị của báo giá công cụ.
  3. Bảng vị trí theo công cụ và tiền . Lấy dữ liệu về khách hàng, công ty, công cụ, tài khoản kho bằng mã.

Chức năng dịch vụ – trả về ngày của phiên giao dịch hiện tại, chuỗi liên kết, ngày và giờ hiện tại, xác định trạng thái kết nối, ngắt chế độ tính toán.

Chương trình gỡ lỗi

Kiểm soát từng bước hoạt động của chương trình được thực hiện trong cửa sổ “Gỡ lỗi”. Nó được mở từ menu ngữ cảnh “Bắt đầu tính toán trong chế độ gỡ lỗi”. Nó cũng có thể được mở bằng lệnh breakpoint () và dòng chương trình sẽ được tô màu đỏ. Cửa sổ chứa các trường có mã chương trình và các giá trị biến. Ở cuối cửa sổ có các nút “Bước tiếp theo”, “Tiếp tục thực hiện”, “Dừng tính toán”. Nhấn F5 sẽ tiếp tục thực hiện chương trình, tổ hợp Shift + F5 sẽ dừng gỡ lỗi, phím F10 sẽ hướng đến dòng tiếp theo.

QPILE hay LUA?

LUA là một ngôn ngữ lập trình mới để tạo rô bốt giao dịch. Giống như QPILE, nó được triển khai trong thiết bị đầu cuối QUIK. https://articles.opexflow.com/programming/lua.htm Một trang web dành riêng cho việc phát triển robot giao dịch để giao dịch cho thấy những ưu điểm của ngôn ngữ LUA so với QPILE. Vì vậy, nó có thể hoạt động như một tập lệnh không biên dịch và mã bytecode, được trang bị các công cụ dành cho nhà phát triển và cơ chế lập trình hướng đối tượng. Các đối tượng được viết bằng ngôn ngữ lập trình khác có thể được kết nối với các chương trình LUA. LUA cung cấp 8 kiểu dữ liệu, bao gồm cả các dữ liệu có thể đo được. Ngôn ngữ LUA đa luồng, nhanh chóng và các giao dịch và sự kiện đầu cuối là không đồng bộ. LUA phổ biến hơn QPILE và nhiều phần mở rộng đã được viết cho nó.

Ngôn ngữ QPILE hiện không được dùng nữa. Các chuyên gia trên các diễn đàn khuyên bạn nên sử dụng LUA. Mặc dù các chương trình hữu ích và hiệu quả vẫn đang được sử dụng.

Tuy nhiên, ngôn ngữ QPILE đơn giản so với LUA, vì vậy nếu bạn không có kinh nghiệm trong lập trình, tốt hơn là nên chọn QPILE. Bằng ngôn ngữ này, bạn có thể viết một robot đơn giản nếu bạn không cần thực hiện các phép tính phức tạp.

Làm cách nào để tạo rô bốt giao dịch trên QPILE?

Để tạo cố vấn giao dịch, bạn sẽ cần các chương trình sau:

  1. Quik của NÓ.
  2. Trình soạn thảo mã Notepad ++.
  3. Hướng dẫn về QPILE.
  4. Plugin XML để phát hiện mã trong Notepad ++.

Tải xuống và cài đặt các chương trình này. Bật cú pháp ngôn ngữ bằng cách đặt userDefineLang.xml trong đường dẫn C: \ Users \ User \ AppData \ Roaming \ Notepad ++ \
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIKĐầu tiên, hãy tạo chiến lược giao dịch sau. Tập lệnh nên tính Hi và Thấp cho vài ngọn nến cuối cùng mỗi phút, hãy kiểm tra giá hiện tại của công cụ. Một vị thế được mở theo hướng yêu cầu nếu giá của công cụ đạt giá trị lớn nhất hoặc nhỏ nhất trong khoảng thời gian đó. Khi nhận được một tín hiệu ngắn hạn, vị thế mua sẽ tự động đóng lại. Robot sử dụng công cụ GAZP, khung thời gian được đặt là 1 phút. Độ sâu đo hi-thấp được đặt thành 5 nến. Để nhập Long, một quy tắc được đặt và giao điểm của giá hiện tại của giá trị lớn nhất trong khoảng thời gian. Robot sẽ nhập lệnh Bán nếu giá hiện tại vượt qua giá trị tối thiểu cho 5 cây nến này. Viết một khối mã trong Notepad ++ với các cài đặt cơ bản và ngày giờ của máy chủ. Mã này được hiển thị trong hình dưới đây.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIK4 dòng mã đầu tiên tạo thành tiêu đề chương trình. Giữa dòng 6 và dòng 44 là phần nội dung của chương trình, chứa nội dung của robot. Dòng 7 – 12 chứa cài đặt người dùng, bao gồm mã của thiết bị, nhóm và khách hàng, số tài khoản trên MICEX. Các giá trị này không thay đổi trong quá trình thực hiện chương trình. Dòng 13 – 16 là giá trị ban đầu của các biến. Chúng sẽ được đặt lại về 0 trên mỗi lần lặp lại. Dòng 17 – 21 chứa chỉ báo sử dụng ngày và giờ của máy chủ. Dữ liệu này được chuyển đến hàm DATETIME và được chuyển đổi sang định dạng văn bản. Các dòng 22 – 29 gửi dữ liệu nhận được vào bảng. Mã phải được lưu và phần mở rộng qpl phải được chỉ định.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIKMở chương trình trong QUIK bằng cách nhấn Ctrl + F10 và chọn tệp qpl đã tạo. Sử dụng tổ hợp Ctrl + F11 để mở cửa sổ “Làm việc với Danh mục đầu tư” và đặt khoảng thời gian tính toán danh mục đầu tư là 5 phút. Nhấn Ctrl + F12 để đặt các cột hiển thị trong bảng. Hình ảnh cho thấy kết quả làm việc của robot.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIKHãy thêm một vài chức năng và điều kiện khác vào chương trình của chúng ta.
Khối “Cài đặt người dùng” được bổ sung với các biến NUMBER và INTERVAL, sẽ được sử dụng trong chức năng lấy N thanh cuối cùng. Hàm DATETIME đặt ngày và giờ của máy chủ, và các hàm ngày và giờ hiện tại CURDATE và CURTIME được gọi từ nó. Thời gian hiện tại được chuyển đổi thành một số trên dòng 24. Dòng 26 đặt thời gian để thuật toán chạy từ 10:00:01 đến 18:40:00 UTC.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIK
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIK
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIKNgôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIKThông thường, các chỉ báo, bộ dao động, tính toán thống kê được tính bằng N nến cuối cùng của biểu đồ. QPILE không có chức năng thu thập số lượng nến N khoảng thời gian trước đó, nhưng có một chức năng GET_CANDLE truy cập các nến trên biểu đồ theo ngày và giờ ở định dạng văn bản. Mã của chúng tôi chứa hàm lấy N thanh cuối cùng OHLC (). Nó tạo ra một bộ sưu tập với các thông số của những ngọn nến cuối cùng được lồng trong danh sách BỘ SƯU TẬP. Chương trình kiểm tra giá trị INTERVAL, và nếu nó không nằm trong phạm vi 0… 60, một thông báo sẽ hiển thị rằng giá trị không tương ứng với phạm vi cho phép. Bộ sưu tập MAP với nến được tạo ở dòng 88. Vòng lặp FOR thăm dò biểu đồ đến độ sâu cần thiết với bước INTERVAL từ nến mới sang nến cũ. Trong dòng 90, sau khi chu kỳ được khai báo, rô bốt quay lại một khoảng thời gian. Khi bạn nhận được một ngọn nến với GET_CANDLE, đặt nó vào bộ sưu tập BARLIST bằng cách sử dụng hàm INSERT_COLLECTION_TEAM. Do hoạt động của lệnh OHLC (), BARLIST được bổ sung bằng các cây nến cuối cùng từ biểu đồ công cụ với số lượng là NUMBER. Số lượng phần tử trong tập hợp được yêu cầu bởi lệnh GET_COLLECTION_COUNT () và được báo cáo bởi biến BARCOUNT. Ngày, giờ máy chủ, giá trị của các biến INSTRUMENT và BARCOUNT được hàm SET_VALUE () báo cáo trong OUTPUT. Mảng này được tạo bởi lệnh CREATE_MAP (). Dữ liệu rơi vào bảng tùy chỉnh, có thể được nhìn thấy trong ảnh bên dưới. giá trị của các biến INSTRUMENT và BARCOUNT được hàm SET_VALUE () báo cáo trong OUTPUT. Mảng này được tạo bởi lệnh CREATE_MAP (). Dữ liệu rơi vào bảng tùy chỉnh, có thể được nhìn thấy trong ảnh bên dưới. giá trị của các biến INSTRUMENT và BARCOUNT được hàm SET_VALUE () báo cáo trong OUTPUT. Mảng này được tạo bởi lệnh CREATE_MAP (). Dữ liệu rơi vào bảng tùy chỉnh, có thể được nhìn thấy trong ảnh bên dưới.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIK

Giao dịch rô bốt trên QPILE – giải pháp làm sẵn

Robot di chuyển trung bình

Robot demo không thích hợp để giao dịch thực.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIKRobot bao gồm 5 thông số. Các giá trị nhận dạng DATE, TIME, PRICE được đặt thành cấp 30. Các giá trị nhận dạng MOVING và TP được đặt thành độ chính xác bằng không. Mã rô bốt trên đường trung bình động được viết theo QPILE:

N. Moroshkin máy tính vị trí

Một chương trình để tính toán các mức rút tiền tối đa cho phép và mục tiêu cho các vị thế mua và bán với giá bán và giá chào mua hiện tại. Các mức được tính cho 2 giá trị của khối lượng nhập lệnh. Robot tìm khối lượng vị trí cho phép khi ấn định lệnh dừng trong một bước từ giá mở cửa với tính toán mở vị trí theo hướng đi lên của thanh. Các mức tìm thấy được nhập vào cửa sổ đầu cuối, sau đó được phản ánh trong biểu đồ giá. Các giao dịch được cố định cho một công cụ nhất định. Nếu một vị trí được mở, rô bốt sẽ bắt đầu tính toán các thông số của nó. Tùy thuộc vào sự thay đổi của vị trí, các đơn hàng được giao được điều chỉnh.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIK
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIK

Bộ lọc âm lượng

Danh mục đầu tư rô-bốt để tính giá trị trung bình cộng của khối lượng nến và so sánh với sản phẩm trung bình theo hệ số X. Hoạt động chính xác với các biểu đồ được vẽ trong một khoảng thời gian đã chọn.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIK

Tùy chọn Hy Lạp

Danh mục đầu tư để tính toán và hiển thị “Hy Lạp” của các tùy chọn. Nó khác với phương pháp Black-Showers.
Ngôn ngữ thuật toán QPILE để lập trình rô bốt giao dịch cho QUIK

Robot giao dịch TRIX cho QUIK

Chương trình dựa trên Chỉ báo TRIX. Khi chỉ báo đóng trên vạch 0, mức được chỉ định, robot sẽ ở vị trí Long. Vị thế được đóng bằng Chốt lời, Cắt lỗ hoặc cắt lỗ.

Bộ tiền xử lý M4

Chương trình làm việc với QPILE và Lua. Bao gồm các tệp lưu trữ có tệp thực thi, tài liệu và tệp DLL với phân tích cú pháp biểu thức chính quy. Để sử dụng chương trình, bạn cần giải nén các tệp thực thi và đặt regexp2 vào đường dẫn C: \ Windows. Bài học về QPILE cho QUIK: https://youtu.be/vMTXwDUujpI Cài đặt tập lệnh trên QPILE trong thiết bị đầu cuối Quik: https://youtu.be/0B7qL8Svh7I Một phần trên github mô tả việc sử dụng ngôn ngữ thuật toán QPILE được tích hợp trong Hệ thống QUIK máy trạm đặt tại liên kết – https://euvgub.github.io/quik_user_manual/ch8.html. QPILE là một ngôn ngữ lỗi thời, nhưng khá đơn giản và dễ tiếp cận ngay cả đối với các nhà giao dịch mới làm quen. Robot giao dịch và các chương trình đã được chứng minh trong một thời gian dài vẫn tiếp tục hoạt động trên đó. Tuy nhiên, đối với các tác vụ phức tạp hơn thì tốt hơn nên sử dụng LUA.

info
Rate author
Add a comment

  1. Владимир Геннадьевич Евсеев

    Trả lời