Cấu trúc của hồ sơ giao dịch thị trường.
Đăng ký giao dịch thị trường ID, hoặc nếu giao diện trao đổi không cung cấp ID thì sử dụng dấu thời gian để điền vào nó. ID chuỗi Mẫu thời gian millisecond. Thời gian số Giá giao dịch. Giá cả số Số tiền giao dịch. Số tiền số Loại lệnh, tham khảo {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}. Loại số
Chức năng exchange.GetTrades( trả về một mảng Trade hoặc một mảng trống.
{@fun/Market/exchange.GetTrades exchange.GetTrades}
Cấu trúc của thị trường.
Dữ liệu ban đầu được trả về bởi giao diện trao đổi, không có thuộc tính như vậy có sẵn cho backtesting.
Thông tin
đối tượng
CácSymbol
trường là mã giống giao dịch được xác định bởi nền tảng FMZ.
Symbol
Giá trị trường (như một ví dụ):BTC_USDT
, chỉ ra cặp giao dịch giao ngay BTC_USDT.Symbol
Giá trị trường (như một ví dụ) làBTC_USDT.swap
, đại diện cho hợp đồng vĩnh viễn quyền sở hữu USDT cho BTC.Symbol
Giá trị trường là (ví dụ):BTC_USDT.BTC-240108-40000-C
, đại diện cho một hợp đồng quyền chọn mua BTC bằng USDT với ngày thực thi là ngày 8 tháng 1 năm 2024 và giá thực hiện là 40.000.Biểu tượng chuỗi Giá cao nhất, hoặc nếu giao diện trao đổi không cung cấp giá cao nhất trong 24 giờ, sau đó sử dụng giá bán một để điền. Cao số Giá thấp nhất, hoặc nếu giao diện trao đổi không cung cấp giá thấp nhất trong 24 giờ, sau đó sử dụng giá mua một để điền. Mức thấp số Khoảnh khắc hiện tại chỉ bán với một giá. Bán đi số Khoảnh khắc hiện tại chỉ có một giá. Mua số Giá giao dịch mới nhất. Cuối cùng. số Giá mở theo thời gian, nếu giao diện trao đổi không cung cấp giá mở theo thời gian 24 giờ, thì giá hiện tại được sử dụng để lấp đầy. Mở số Số tiền giao dịch gần đây, về nguyên tắc, số tiền giao dịch tại chỗ là trong baseCurrency, và số tiền giao dịch hợp đồng là trong số hợp đồng. Nếu giao diện trao đổi không cung cấp dữ liệu như vậy, nó sẽ được lấp đầy với dữ liệu có sẵn trong giao diện trao đổi, ví dụ, số tiền giao dịch có thể là trong quoteCurrency. Khối lượng số Mức độ thời gian là một triệu giây. Thời gian số Các vị trí, hầu hết các giao diện trao đổi không cung cấp dữ liệu này và giá trị là 0 khi dữ liệu này không được hỗ trợ. OpenInterest số
Chức năng exchange.GetTicker() trả về một cấu trúc Ticker.
Đối với các hợp đồng quyền chọn,exchange.GetTicker()
gọi chức năng dễ bị lỗi. Bởi vì thanh khoản thị trường hợp đồng tùy chọn thường kém, thường không có lệnh chờ cho mua đầu tiên hoặc bán đầu tiên.Ticker
trường cấu trúcBuy
hoặcSell
là 0, một thông báo lỗi sẽ được kích hoạt.
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTickers exchange.GetTickers}
Cấu trúc của K-Line Bar, cấu trúc OHLC tiêu chuẩn, được sử dụng để vẽ các đường K và các chỉ số để tính toán và phân tích.
Mẫu thời gian cấp millisecond, cho một cấu trúc Record có giá trị thuộc tính Time là dấu thời gian bắt đầu của giai đoạn của thanh K-line này. Thời gian số Giá mở cửa. Mở số Giá cao nhất. Cao số Giá thấp nhất. Mức thấp số Giá đóng cửa. Gắn lại. số Số tiền vị trí, hầu hết các giao diện trao đổi không cung cấp dữ liệu này, giá trị là 0 khi dữ liệu này không được hỗ trợ. OpenInterest số Số tiền giao dịch. Về nguyên tắc, số tiền giao dịch tại chỗ là trong baseCurrency và số tiền giao dịch hợp đồng là trong số hợp đồng. Nếu giao diện trao đổi không cung cấp dữ liệu như vậy, nó sẽ được lấp đầy với dữ liệu hiện có từ giao diện trao đổi, ví dụ, số tiền giao dịch trong quoteCurrency. Khối lượng số
Chức năng exchange.GetRecords () trả về một mảng Record hoặc một mảng trống. Mỗi cấu trúc Record đại diện cho một thanh K-line, tức là một thanh K-line.
{@fun/Market/exchange.GetRecords exchange.GetRecords}
Cấu trúc của trật tự.
Các dữ liệu gốc của phản hồi giao diện trao đổi, không có thuộc tính như vậy có sẵn cho backtesting.
Thông tin
đối tượng
CácSymbol
trường là mã sản phẩm giao dịch được xác định bởi nền tảng FMZ và định dạng của nó phù hợp vớiSymbol
trường của cấu trúc {@struct/Ticker Ticker}
Symbol
Giá trị trường là (ví dụ):BTC_USDT
, chỉ ra cặp giao dịch giao ngay BTC_USDT.Symbol
Giá trị trường là (ví dụ):BTC_USDT.swap
, đại diện cho hợp đồng vĩnh viễn tiêu chuẩn USDT của BTC.Biểu tượng
chuỗi
Order Id, thuộc tính này bao gồm mã sản phẩm trao đổi và ID đặt hàng ban đầu trao đổi, được tách bằng dấu phẩy tiếng Anh.Id
định dạng của cặp giao dịch tại chỗETH_USDT
thứ tự trao đổi OKX là:ETH-USDT,1547130415509278720
.
ID
chuỗi
Giá của lệnh, lưu ý rằng thuộc tính này có thể là 0 hoặc -1 cho lệnh thị trường.
Giá cả
số
Số lượng lệnh được đặt, lưu ý rằng thuộc tính này của lệnh thị trường có thể là số tiền chứ không phải là tiền tệ.
Số tiền
số
Số lượng giao dịch, có thể được ghi 0 nếu giao diện trao đổi không cung cấp dữ liệu này.
Số tiền giao dịch
số
Giá giao dịch trung bình, lưu ý rằng một số sàn giao dịch không cung cấp dữ liệu này.
Giá trung bình
số
Tình trạng đơn đặt hàng, tham khảo {@var/ORDER_STATE/ORDER_STATE_PENDING ORDER_STATE_PENDING}, {@var/ORDER_STATE/ORDER_STATE_CLOSED ORDER_STATE_CLOSED}, {@var/ORDER_STATE/ORDER_STATE_CANCELED ORDER_STATE_CANCELED}, {@var/ORDER_STATE/ORDER_STATE_UNKNOWN OR_ORDER_STATE_UNKNOWN}.
Tình trạng
số
Loại lệnh, tham khảo {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}.
Loại
số
Đối với hướng mở và đóng lệnh hợp đồng, tham khảo {@var/ORDER_OFFSET/ORDER_OFFSET_OPEN ORDER_OFFSET_OPEN}, {@var/ORDER_OFFSET/ORDER_OFFSET_CLOSE ORDER_OFFSET_CLOSE}.
Tiền bù
số
Thuộc tính này trong lệnh tại chỗ là""
Trong lệnh hợp đồng, thuộc tính này là mã hợp đồng cụ thể.
ContractType
chuỗi
CácOrder
cấu trúc đơn đặt hàng có thể được trả về bởi cácexchange.GetOrder()
vàexchange.GetOrders()
các chức năng.exchange.GetOrders()
hàm trả về một mảng củaOrder
cấu trúc hoặc một mảng trống. Nếu không có thứ tự chưa hoàn thành, nó trả về[]
, đó là một mảng trống.Status
tài sảnOrder
cấu trúc thứ tự có thể được so sánh trực tiếp với các hằng số như:ORDER_STATE_PENDING
để xác định xem chúng có bằng nhau hay không và do đó xác định trạng thái đơn đặt hàng.
Đối với chế độ vị trí một chiều, khi không thể xác định xem lệnh là lệnh đóng (giảm), lệnhOffset
trường được thiết lập theo hướng mở mặc định, đó là,ORDER_OFFSET_OPEN
.
{@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}
Cấu trúc đơn đặt hàng ở độ sâu thị trường.
Giá cả. Giá cả số Số tiền. Số tiền số
Chức năng GetDepth (()) trả về một cấu trúc dữ liệu trong đó các giá trị thuộc tính của Bids, Asks là mảng OrderBook.
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@struct/Depth Depth}
Cấu trúc của chiều sâu thị trường.
Mảng lệnh bán, tức là mảng OrderBook, được sắp xếp theo giá từ thấp nhất đến cao nhất, và cấu trúc OrderBook đầu tiên trong mảng có Giá thấp nhất. Hỏi mảng Mảng lệnh mua, tức là mảng OrderBook, được sắp xếp theo giá từ cao nhất đến thấp nhất, và cấu trúc OrderBook đầu tiên trong mảng có Giá cao nhất. Đề nghị mảng Mức độ thời gian là một triệu giây. Thời gian số
Chức năng exchange.GetDepth (()) trả về cấu trúc Depth.
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@struct/OrderBook OrderBook}
Cấu trúc của thông tin tài khoản.
Dữ liệu ban đầu được trả về bởi giao diện trao đổi, không có thuộc tính như vậy có sẵn cho backtesting.
Thông tin
đối tượng
Số lượng các loại tiền tệ có sẵn, tại chỗ, nếu cặp giao dịch là BTC_USDT, Số dư đề cập đến số USDT hiện có. Trong hợp đồng tiêu chuẩn U, Số dư đề cập đến số tiền ký quỹ có sẵn (USDT, quoteCurrency).
Số dư
số
Giá trị tài sản bị đóng băng khi lệnh không được thực hiện.
FrozenBalance
số
Số lượng tiền tệ giao dịch có sẵn, tại chỗ, nếu cặp giao dịch là BTC_USDT, Cổ phiếu đề cập đến số lượng BTC hiện có. Cổ phiếu đề cập đến số lượng ký quỹ có sẵn (tiền tệ, Tiền tệ cơ bản) trong hợp đồng dựa trên tiền tệ.
Cổ phiếu
số
Giá trị tài sản bị đóng băng khi lệnh không được thực hiện.
Sản phẩm đông lạnh
số
Chỉ có các đối tượng trao đổi tương lai hỗ trợ lĩnh vực này.Equity
trường này là tổng vốn chủ sở hữu của ký quỹ ký quỹ tương lai theo thiết lập hợp đồng hiện tại. Nếu giao diện trao đổi không cung cấp dữ liệu có liên quan, trường này là 0.
Tài sản
số
Trường này chỉ được hỗ trợ bởi các đối tượng trao đổi tương lai.UPnL
trường là tổng củaLợi nhuận và lỗ chưa thực hiệncủa tất cả các vị trí được mở bởi ký quỹ tài khoản tương lai theo các thiết lập hợp đồng hiện tại.
UPnL số
Chức năng exchange.GetAccount () trả về cấu trúc tài khoản. Dữ liệu trong cấu trúc trả về phụ thuộc vào cặp giao dịch được đặt hiện tại, mã hợp đồng.
{@fun/Account/exchange.GetAccount exchange.GetAccount}
Cấu trúc của thông tin tài sản tiền tệ cụ thể.
Tên được xác định bởi sàn giao dịch cho tài sản tiền điện tử, có thể khác nhau từ sàn giao dịch sang sàn giao dịch cho cùng một loại tiền điện tử, ví dụ:BTC
có thể được gọi làXBT
trên một số sàn giao dịch.
Tiền tệ
chuỗi
Số dư tài sản tiền tệ có sẵn.
Số tiền
số
Số lượng tài sản bị đóng băng trong đồng tiền.
Số lượng đóng băng
số
CácFrozenAmount
của tài sản tiền tệ có thể bao gồm tài sản bị khóa cho các lệnh chưa hoàn thành và phần ký quỹ bị khóa cho các vị trí tương lai.
{@fun/Account/exchange.GetAssets exchange.GetAssets}
Cấu trúc thông tin về vị trí hợp đồng.
Dữ liệu ban đầu được trả về bởi giao diện trao đổi, không có thuộc tính như vậy có sẵn cho backtesting.
Thông tin
đối tượng
CácSymbol
trường là mã sản phẩm giao dịch được xác định bởi nền tảng FMZ và định dạng của nó phù hợp vớiSymbol
trường của cấu trúc {@struct/Ticker Ticker}
Symbol
Giá trị trường là (ví dụ):BTC_USDT
, chỉ ra cặp giao dịch giao ngay BTC_USDT.Symbol
Giá trị trường là (ví dụ):BTC_USDT.swap
, đại diện cho hợp đồng vĩnh viễn tiêu chuẩn USDT của BTC.Biểu tượng chuỗi Kích thước thanh vị trí, được điền bằng cách tính toán nếu giao diện trao đổi không cung cấp dữ liệu này, nó có thể không chính xác. Mức ký quỹ số Kích thước vị trí, thường là số nguyên dương (số số hợp đồng). Số tiền số Số tiền đóng băng vị trí, số lượng vị trí đóng băng tạm thời khi lệnh đóng không được thực hiện. Số lượng đóng băng số Giá trung bình của vị trí, về nguyên tắc là giá trung bình của toàn bộ vị trí (không tham gia thanh toán). Nếu dữ liệu không được cung cấp bởi giao diện trao đổi, nó được lấp đầy với giá trung bình của các vị trí có sẵn trên giao diện trao đổi (tham gia thanh toán). Giá cả số Lợi nhuận / lỗ động của vị trí về nguyên tắc là lợi nhuận / lỗ chưa thực hiện của vị trí, nếu dữ liệu không được cung cấp bởi giao diện trao đổi, nó sẽ được lấp đầy với các dữ liệu lợi nhuận / lỗ khác của giao diện trao đổi. Đơn vị giá trị lợi nhuận và lỗ giống như đơn vị ký quỹ hợp đồng hiện tại. Lợi nhuận số Loại vị trí, tham khảo {@var/POSITION_DIRECTION/PD_LONG PD_LONG}, {@var/POSITION_DIRECTION/PD_SHORT PD_SHORT}. Loại số Mã hợp đồng, xem mô tả của hàm {@fun/Futures/exchange.SetContractType exchange.SetContractType} để biết chi tiết. ContractType chuỗi Mức ký quỹ được chiếm bởi vị trí, được điền bằng 0 nếu giao diện trao đổi không cung cấp dữ liệu này. Lợi nhuận số
Chức năng exchange.GetPositions (()) trả về một mảng vị trí hoặc một mảng trống. Đối với hợp đồng tương lai tiền điện tử, điều quan trọng cần lưu ý là mảng cấu trúc vị trí được trả về bởi hàm exchange.GetPositions(). Đối với các thuộc tính FrozenAmount, Profit và Margin trong cấu trúc dữ liệu vị trí, vì dữ liệu được cung cấp bởi sàn giao dịch không đồng đều, giao diện GetPositions(), định nghĩa của dữ liệu được trả về bởi đối tượng trao đổi có thể khác nhau. Ví dụ, một số sàn giao dịch không có dữ liệu đóng băng vị trí trong dữ liệu vị trí, vì vậy FrozenAmount là 0.
{@fun/Futures/exchange.GetPositions exchange.GetPositions}
Cấu trúc thông tin thị trường về các giống được giao dịch.
Nhận các giá trị như:"btcusdt"
, cácSymbol
Lưu ý rằng định dạng và định nghĩa thuộc tính này khác vớiSymbol
trường của cấu trúc {@struct/Ticker Ticker}
Biểu tượng
chuỗi
Nhận các giá trị như:"BTC"
, cácBaseAsset
trường ghi tên của đồng tiền giao dịch (tức là: baseCurrency), được viết bằng chữ cái lớn đồng đều.
BaseAsset
chuỗi
Nhận các giá trị như:"USDT"
, cácQuoteAsset
trường ghi tên của đồng tiền được mệnh giá (tức là: quoteCurrency), được viết bằng chữ cái lớn một cách đồng nhất.
Quý vị tài sản
chuỗi
Nhận các giá trị như:0.01
, cácTickSize
trường ghi lại giá trị của sự thay đổi nhỏ nhất trong giá của mục giao dịch trên sàn giao dịch.
TickSize
số
Nhận các giá trị như:0.01
, cácAmountSize
trường ghi lại giá trị của sự thay đổi tối thiểu trong khối lượng lệnh được đặt trên sàn giao dịch cho giao dịch đó.
Số lượng
số
Nhận các giá trị như:2
, cácPricePrecision
trường ghi lại độ chính xác của giá của mặt hàng giao dịch trên sàn giao dịch, cho thấy giá chính xác đến 2 số thập phân.
PricePrecision
số
Nhận các giá trị như:3
, cácAmountPrecision
trường ghi lại độ chính xác của các đơn đặt hàng được đặt trên sàn giao dịch cho giống được giao dịch, cho thấy các đơn đặt hàng chính xác đến 3 số thập phân.
Số lượngChính xác
số
Nhận các giá trị như:0.001
, cácMinQty
trường ghi lại kích thước lệnh tối thiểu trên sàn giao dịch cho giao dịch đó.
Tối thiểu
số
Nhận các giá trị như:1000
, cácMaxQty
trường ghi lại số lượng lệnh tối đa có thể được đặt trên sàn giao dịch cho loại giao dịch đó.
MaxQty
số
Nhận các giá trị như:5
, cácMinNotional
trường ghi lại số tiền tối thiểu của lệnh được đặt trên sàn giao dịch cho loại giao dịch đó.
Tiêu chuẩn
số
Nhận các giá trị như:9999999
, cácMaxNotional
trường ghi lại số lượng lệnh tối đa được đặt trên sàn giao dịch cho loại giao dịch đó.
MaxNotional
số
Vùng đấtCtVal
ghi lại giá trị của một hợp đồng của các sản phẩm giao dịch trên sàn giao dịch, trong tiền tệ ghi trongCtValCcy
ví dụ:CtVal
là 0,01CtValCcy
là"BTC"
, có nghĩa là một hợp đồng có giá trị 0,01 BTC.
CtVal
số
Vùng đấtCtValCcy
ghi lại đơn vị giá trị của hợp đồng.BTC
, USD
, ETH
, vv
CtValCcy
số
Vùng đấtInfo
ghi lại dữ liệu thô cho các loài được trả về bởi giao diện thông tin thị trường của sàn giao dịch.
Thông tin
đối tượng
Chức năng exchange.GetMarkets( trả về một từ điển có chứaMarket
cấu trúc.
Do mức độ hỗ trợ khác nhau cho dữ liệu thông tin thị trường bởi mỗi sàn giao dịch, các trường không được hỗ trợ bởi sàn giao dịch sẽ bị bỏ qua.Info
field.
{@fun/Market/exchange.GetMarkets exchange.GetMarkets}
Cấu trúc thông tin tỷ lệ tài trợ của sản phẩm giao dịch. Chỉ có hợp đồng vĩnh viễn tiền điện tử hỗ trợ tỷ lệ tài trợ.
Dữ liệu thô được trả về khi giao diện tỷ lệ tài trợ trao đổi tương lai tiền điện tử được gọi.
Thông tin
đối tượng
CácSymbol
trường là mã sản phẩm giao dịch được xác định bởi nền tảng FMZ.
Biểu tượng
chuỗi
Khoảng thời gian tỷ lệ tài trợ, trong milliseconds.28800000
có nghĩa là khoảng thời gian 8 giờ.
Khoảng cách
số
Thời gian bắt đầu của giai đoạn tỷ lệ tài trợ tiếp theo (thời gian thanh toán của giai đoạn này), trong millisecond.
Thời gian
số
Tỷ lệ tài trợ sẽ được sử dụng để thanh toán trong giai đoạn này.
Tỷ lệ
số
Tỷ lệ tài trợ hợp đồng vĩnh viễn của các sàn giao dịch tương lai khác nhau có các phương pháp và cơ chế tính toán khác nhau và chu kỳ thanh toán là 1 giờ, 4 giờ, 8 giờ và một ngày.
Tỷ lệ tài trợ hiện tại của các hợp đồng vĩnh viễn trên sàn giao dịch tương lai có giá trị cố định và giá trị biến động được tính toán trong thời gian thực.
CácRate
trường là giá trị tỷ lệ tài trợ mà không có%
. Nếu bạn muốn chuyển đổi nó thành một giá trị với%
, bạn có thể nhân nó bằng 100 và thêm%
cuối cùng.
{@fun/Futures/exchange.GetFundings exchange.GetFundings}
Cấu trúc JSON này được sử dụng để cấu hình các tham số của hàm HttpQuery và hàm HttpQuery_Go để gửi yêu cầu Http.
Phương pháp yêu cầu, ví dụ:GET
, POST
, vv
phương pháp
chuỗi
Ví dụ, trong một yêu cầu POST, cơ thể có thể chứa dữ liệu biểu mẫu, JSON, văn bản, v.v.
cơ thể
chuỗi
Mã hóa tập hợp ký tự. Ví dụ, chỉ định mã hóa dữ liệu văn bản trong phần chính là:"UTF-8"
.
Charset
chuỗi
Cookie là một phần nhỏ dữ liệu được sử dụng để lưu trữ và trao đổi thông tin trạng thái giữa một khách hàng (thường là trình duyệt) và một máy chủ.
bánh quy
chuỗi
Được sử dụng để mô phỏng dấu vân tay của trình duyệt.
hồ sơ
chuỗi
Khi được đặt thành true, cuộc gọi hàm HttpQuery trả về thông điệp phản hồi hoàn chỉnh. Khi được đặt thành false, chỉ có dữ liệu trong thư phản hồi Body được trả về.
debug
bool
Thông tin tiêu đề yêu cầu tồn tại dưới dạng cặp giá trị khóa (cấu trúc JSON) và được sử dụng để truyền thông tin khác nhau, chẳng hạn như loại nội dung, thông tin xác thực, kiểm soát bộ nhớ cache, v.v.
tiêu đề
JSON
Đặt 1000 nghĩa là thời gian nghỉ 1 giây.
thời gian nghỉ
số
Ví dụ sử dụng:
function main() {
var options = {
method: "POST",
body: "a=10&b=20&c=30",
charset: "UTF-8",
cookie: "session_id=12345; lang=en",
profile: "chrome_103",
debug: false,
headers: {"TEST-HTTP-QUERY": "123"},
timeout: 1000
}
var ret = HttpQuery("http://127.0.0.1:8080", options)
Log(ret)
}
Thông điệp http được gửi khi mã trên được thực thi:
POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: session_id=12345; lang=en
Host: 127.0.0.1:8080
Test-Http-Query: 123
Transfer-Encoding: chunked
User-Agent: Mozilla/5.0 (Macintosh; ...
Accept-Encoding: gzip, deflate, br
e
a=10&b=20&c=30
0
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Cấu trúc JSON này là cấu trúc dữ liệu được trả về bởi hàm HttpQuery trong chế độ debug khi trường debug trongoptions
Các thông số cấu trúc là đúng.
Mã trạng thái http Mã trạng thái số Yêu cầu thông tin tiêu đề. Tiêu đề JSON Thông tin về cookie. Cookie mảng Thông tin đường dẫn đầy đủ của yêu cầu. Hồ sơ JSON Chiều dài tin nhắn Chiều dài số Nội dung tin nhắn. Cơ thể chuỗi
Một ví dụ về cấu trúc dữ liệu JSON được trả về là:
{
"StatusCode": 302,
"Header": {
"Content-Type": ["text/html"],
// ...
},
"Cookies": [{
// ...
}],
"Trace": {},
"Length": 154,
"Body": "..."
}
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Cấu trúc JSON này được sử dụng để cấu hình nội dung bảng được hiển thị trong thanh trạng thái chiến lược.
Sử dụng để thiết lập loại giao diện người dùng và điều khiển để phân tích và hiển thị. Đối với bảng thanh trạng thái, nó được thiết lập cố định là:table
.
loại
chuỗi
Sử dụng để đặt tiêu đề của bảng thanh trạng thái.
tiêu đề
chuỗi
Được sử dụng để đặt tiêu đề cột của bảng thanh trạng thái.
bông
mảng
Được sử dụng để thiết lập dữ liệu hàng của bảng thanh trạng thái. Đơn vị đầu tiên của mảng hàng (mảng hai chiều) cũng là một cấu trúc mảng. Chiều dài của cấu trúc mảng này nên phù hợp với số cột bảng (các yếu tố trong cấu trúc mảng tương ứng với tên cột bảng một lần một), tức là hàng đầu tiên của dữ liệu trong bảng.
hàng
mảng
function main() {
var tbl = {
type: "table",
title: "title",
cols: ["Column 1", "Column 2", "Column 3"],
rows: [
["Row 1 Column 1", "Row 1 Column 2", "Row 1 Column 3"],
["Row 2 Column 1", "Row 2 Column 2", "Row 2 Column 3"],
["Row 3 Column 1", "Row 3 Column 2", "Row 3 Column 3"],
]
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
{@fun/Log/LogStatus LogStatus}
Cấu trúc JSON này được sử dụng để cấu hình điều khiển nút trong thanh trạng thái. Cấu trúc JSON điều khiển nút có thể được nhúng vào cấu trúc bảng JSON thanh trạng thái. Cấu trúc này là một cấu trúc phiên bản cũ, và nền tảng vẫn tương thích. Ví dụ về việc xây dựng điều khiển nút thanh trạng thái (sau khi nút được kích hoạt và nhấp, hộp bật lên chứa một điều khiển đầu vào duy nhất, được xây dựng thông qua trường đầu vào):
{
"type": "button",
"cmd": "open",
"name": "opening a position",
"input": {
"name": "number of opening positions",
"type": "number",
"defValue": 1
}
}
Các điều khiển trong hộp bật lên được kích hoạt bằng cách nhấp vào nút thanh trạng thái điều khiển được thiết lập thông quainput
hoặcgroup
.
Đối với các điều khiển nút, cài đặt cố định là:button
.
loại
chuỗi
Cài đặt kiểu nút
lớp học
chuỗi
Văn bản trên nút điều khiển, nghĩa là tên nút.
tên
chuỗi
Nội dung lệnh tương tác được gửi đến chiến lược khi điều khiển nút kích hoạt một hoạt động nhấp chuột.
cmd
chuỗi
Mô tả của nút điều khiển. Mô tả được hiển thị khi chuột được đặt trên nút trong thanh trạng thái.
mô tả
chuỗi
Thiết lập nút tắt (true) / bật (false).
tàn tật
bool
Khi xây dựng một nút thanh trạng thái cho tương tác, nhập dữ liệu cũng được hỗ trợ.GetCommand()
thêm cácinput
mục vào cấu trúc dữ liệu JSON của điều khiển nút trong thanh trạng thái để cấu hình điều khiển đầu vào trong hộp bật lên được hiển thị khi nút được kích hoạt.
Ví dụ, để thiết lập giá trị củainput
trường:
{
"name": "Number of opening positions",
"type": "number",
"defValue": 1,
"description": "test",
}
Mô tả của mỗi trường trong cấu trúc JSON trên:
"number"
: điều khiển đầu vào số."string"
: điều khiển đầu vào chuỗi."selected"
: điều khiển hộp thả xuống."boolean"
Đổi điều khiển."input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}
, mô tả văn bản của các tùy chọn hộp thả xuống được đặt là A, B, C.Đối với các trường được mở rộng bởi điều khiển loại hộp thả xuống:
{text: "description", value: "value"}
Sử dụng trường defValue để đặt tùy chọn mặc định, có thể là nhiều lựa chọn.đầu vào
JSON
Cácinput
field cấu hình một điều khiển trong hộp pop-up xuất hiện sau khi nút thanh trạng thái được kích hoạt bằng cách nhấp vào.group
vàinput
là nó cấu hình một nhóm các điều khiển.group
có cùng cấu trúc dữ liệu nhưinput
Vui lòng tham khảo mô tả liên quan củainput
field.
nhóm mảng
Một ví dụ vềclass
giá trị của cấu trúc JSON của nút trong thanh trạng thái:
function main() {
var table = {
type: "table",
title: "Status bar button style",
cols: ["Default", "Original", "Success", "Information", "Warning", "Danger"],
rows: [
[
{"type":"button", "class": "btn btn-xs btn-default", "name": "Default"},
{"type":"button", "class": "btn btn-xs btn-primary", "name": "Original"},
{"type":"button", "class": "btn btn-xs btn-success", "name": "Success"},
{"type":"button", "class": "btn btn-xs btn-info", "name": "Information"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "Warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "Danger"}
]
]
}
LogStatus("`" + JSON.stringify(table) + "`")
}
Ví dụ sử dụnggroup
lĩnh vực vớiinput
trường:
function main() {
// The drop-down box control in the page triggered by the testBtn1 button uses the options field to set options and the defValue field to set the default options. This is different from other examples in this chapter that directly use defValue to set options.
var testBtn1 = {
type: "button",
name: "testBtn1",
cmd: "cmdTestBtn1",
input: {name: "testBtn1ComboBox", type: "selected", options: ["A", "B"], defValue: 1}
}
/*
Status bar button control (set input field implementation) testBtn2 button triggered by the page in the drop-down box control using the options field to set the options, options field in the options field not only supports the string,
it also supports the use of ```{text: "description", value: "value"}``` structure. Use the defValue field to set the default option. The default option can be multiple selection (multiple selection is achieved through an array structure). Multiple selection requires setting the additional field multiple to true.
*/
var testBtn2 = {
type: "button",
name: "testBtn2",
cmd: "cmdTestBtn2",
input: {
name: "testBtn2MultiComboBox",
type: "selected",
description: "Implementing multiple selection in drop-down box",
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}],
defValue: ["A", "C"],
multiple: true
}
}
// Status bar grouping button control (set group field implementation) testBtn3 button triggered by the page in the drop-down box control using the options field to set options, also supports the direct use of defValue set options.
var testBtn3 = {
type: "button",
name: "testBtn3",
cmd: "cmdTestBtn3",
group: [
{name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Drop-down box 4",
type: "selected",
defValue: ["A", "C"],
multiple: true,
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
}
]
}
while (true) {
LogStatus("`" + JSON.stringify(testBtn1) + "`\n", "`" + JSON.stringify(testBtn2) + "`\n", "`" + JSON.stringify(testBtn3) + "`\n")
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(5000)
}
}
{@fun/Log/LogStatus LogStatus}
Cấu trúc JSON này được sử dụng để cấu hình điều khiển nút trong thanh trạng thái. Cấu trúc JSON điều khiển nút có thể được nhúng trong cấu trúc bảng JSON thanh trạng thái. Phiên bản mới nhất của cấu trúc JSON nút. Ví dụ về việc xây dựng một nút điều khiển thanh trạng thái (sau khi nút được kích hoạt và nhấp vào, hộp bật lên chứa nhiều điều khiển đầu vào, được xây dựng thông qua trường nhóm):
{
"type": "button",
"cmd": "open",
"name": "Open a position and place an order",
"group": [{
"type": "selected",
"name": "tradeType",
"label": "order type",
"description": "market order, limit order",
"default": 0,
"group": "trading setup",
"settings": {
"options": ["market order", "limit order"],
"required": true,
}
}, {
"type": "selected",
"name": "direction",
"label": "trading direction",
"description": "buy, sell",
"default": "buy",
"group": "trading setup",
"settings": {
"render": "segment",
"required": true,
"options": [{"name": "buy", "value": "buy"}, {"name": "sell", "value": "sell"}],
}
}, {
"type": "number",
"name": "price",
"label": "price",
"description": "order price",
"group": "trading setup",
"filter": "tradeType==1",
"settings": {
"required": true,
}
}, {
"type": "number",
"name": "amount",
"label": "order quantity",
"description": "order quantity",
"group": "trading setup",
"settings": {
"required": true,
}
}],
}
Các điều khiển trong hộp bật lên được kích hoạt bằng cách nhấp vào nút thanh trạng thái điều khiển được thiết lập thông quainput
hoặcgroup
.
Đối với các điều khiển nút, cài đặt cố định là:button
.
loại
chuỗi
Văn bản trên nút điều khiển, nghĩa là tên nút.
tên
chuỗi
Nội dung lệnh tương tác được gửi đến chiến lược khi điều khiển nút kích hoạt một hoạt động nhấp chuột.
cmd
chuỗi
Khi xây dựng một nút thanh trạng thái cho tương tác, nhập dữ liệu cũng được hỗ trợ.GetCommand()
thêm cácinput
mục vào cấu trúc dữ liệu JSON của điều khiển nút trong thanh trạng thái để cấu hình điều khiển đầu vào trong hộp bật lên được hiển thị khi nút được kích hoạt.
So với phiên bản cũ của cấu trúc đầu vào, phiên bản mới có một số trường mới và thay đổi:
{
"type": "selected",
"name": "test",
"label": "topic",
"description": "desc",
"default": 1,
"filter": "a>1",
"group": "group1",
"settings": { ... }, // Component configuration
}
Mô tả và giải thích của mỗi trường trong cấu trúc JSON trên:
loại
Loại điều khiển (quảng trường bắt buộc), hỗ trợ các cài đặt sau:"number"
hộp đầu vào số,"string"
hộp đầu vào chuỗi,"selected"
hộp thả xuống,"boolean"
Chuyển điều khiển.
tên Nếu cấu trúc JSON hiện tại là giá trị trường của trường đầu vào, khi trường nhãn không được đặt, tên là tiêu đề điều khiển trong hộp bật lên xuất hiện sau khi nhấp vào nút thanh trạng thái. Nếu cấu trúc JSON hiện tại là một phần tử trong giá trị trường (cấu trúc mảng) của trường nhóm, tên không được sử dụng làm tiêu đề điều khiển.
var testBtn3 = {
type: "button",
name: "testBtn3",
cmd: "cmdTestBtn3",
group: [
{name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Drop-down box 4",
type: "selected",
defValue: ["A", "C"],
multiple: true,
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
}
]
}
Theo đoạn trích này, nếu nút thanh trạng thái kích hoạt tương tác, một hộp pop-up sẽ bật lên với 4 điều khiển, tất cả đều là các điều khiển hộp thả xuống. Sau khi thiết lập các tùy chọn cho mỗi điều khiển và nhấp OK để gửi thông báo tương tác, hàm GetCommand trong chiến lược sẽ nhậncmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}
.
Giá trị của tên trong cấu trúc JSON được sử dụng như tên trường của thông tin tương tác được trả về, ví dụ: comboBox1, comboBox2, v.v.
nhãn Sử dụng để đặt tiêu đề của điều khiển.
mô tả Mô tả điều khiển: Nếu cấu trúc JSON hiện tại là một phần tử trong giá trị trường (cấu trúc mảng) của trường nhóm, và trường nhãn không được đặt, mô tả là tiêu đề điều khiển trong hộp bật lên xuất hiện sau khi nhấp vào nút thanh trạng thái.
mặc định Giá trị mặc định của điều khiển.
bộ lọc Selector, được sử dụng để ẩn các điều khiển. Không đặt trường này có nghĩa là không lọc (hiển thị các điều khiển); khi trường này được đặt, không lọc (hiển thị các điều khiển) xảy ra khi biểu thức là đúng. Khi biểu thức là sai, lọc xảy ra (không hiển thị các điều khiển)
nhóm Được sử dụng để điều khiển nhóm các điều khiển, có thể được gấp.
cài đặt Cấu hình thành phần, điều khiển có một loạt các tùy chọn UI, sử dụng tùy chọn này để thực hiện các thiết lập cụ thể. Ví dụ:
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
cài đặt:
settings.required: Có cần thiết hay không.
settings.disabled: Cho dù để vô hiệu hóa.
settings.min: Valid when type=number, chỉ ra giá trị tối thiểu hoặc chiều dài tối thiểu của một chuỗi.
settings.max: Có hiệu lực khi type=number, chỉ ra giá trị tối đa hoặc chiều dài tối đa của chuỗi.
settings.step: Có hiệu lực khi type=number và render=slider, chỉ ra chiều dài bước.
settings.multiple: Valid when type=selected, indicating that multiple selections are supported: hợp lệ khi type= được chọn, cho thấy hỗ trợ nhiều lựa chọn.
settings.customizable: Nó có giá trị khi type= được chọn, cho thấy tùy chỉnh được hỗ trợ; người dùng có thể trực tiếp chỉnh sửa và thêm các tùy chọn mới trong điều khiển hộp thả xuống. Nếu tùy chọn mới được chỉnh sửa được chọn, tên của tùy chọn được sử dụng thay vì giá trị đại diện cho tùy chọn khi tương tác được kích hoạt.
settings.options: Valid when type=selected, indicating the selector option data format: [
đầu vào
JSON
Cácinput
field cấu hình một điều khiển trong hộp pop-up xuất hiện sau khi nút thanh trạng thái được kích hoạt bằng cách nhấp vào.group
vàinput
là nó cấu hình một nhóm các điều khiển.group
có cùng cấu trúc dữ liệu nhưinput
Vui lòng tham khảo mô tả ở trên củainput
field.
nhóm mảng
Hỗ trợ cài đặt song ngữ:
{
type:'selected',
name:'test',
label:'选项|options',
description:'描述|description',
default:0, // Here, the default value is set to 0, which means the value in the option {name:'xxx|yyy',value:0}
filter:'a>1&&a<10',
group:'分组|group',
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
}
{@fun/Log/LogStatus LogStatus}
JSON này được sử dụng để thiết lập thông tin cấu hình biểu đồ của chức năng vẽ tùy chỉnhChart()
. Thư viện biểu đồ được sử dụng là Highcharts. Chỉ có một vài trường cấu hình cơ bản được liệt kê ở đây.
Trường mở rộng nền tảng. Đặt thành true để sử dụng biểu đồ Highstocks; đặt thành false để sử dụng biểu đồ Highcharts.
__isStock chuỗi
{
layout: 'single', // Not participating in grouping, displayed separately, default is group 'group'
height: 300, // Specify height
}
gia hạn JSON Tên biểu đồ tiêu đề chuỗi Cấu hình trục X. XAxis JSON Cấu hình trục y. Trục y JSON Dòng dữ liệu biểu đồ. loạt JSON
Một ví dụ vẽ đơn giản:
// This chart is an object in JavaScript language. Before using the Chart function, we need to declare an object variable chart to configure the chart.
var chart = {
// This field marks whether the chart is a general chart. If you are interested, you can change it to false and run it.
__isStock: true,
// Zoom tool
tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},
// title
title : { text : 'Price difference analysis chart'},
// Select range
rangeSelector: {
buttons: [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
selected: 0,
inputEnabled: false
},
// The horizontal axis of the coordinate axis is: x-axis, and the current setting type is: time
xAxis: { type: 'datetime'},
// The vertical axis of the coordinate axis is: the y-axis, the default value is adjusted according to the data size
yAxis : {
// title
title: {text: 'Price difference'},
// Whether to enable the right vertical axis
opposite: false
},
// Data series, this property saves each data series (line, K-line chart, label, etc.)
series : [
// The index is 0, and the data array stores the data of the index series.
{name : "line1", id : "line 1,buy1Price", data : []},
// The index is 1, dashStyle:'shortdash' is set, that is, a dashed line is set
{name : "line2", id : "line 2,lastPrice", dashStyle : 'shortdash', data : []}
]
}
function main(){
// Call the Chart function to initialize the chart
var ObjChart = Chart(chart)
// Clear
ObjChart.reset()
while(true){
// Get the timestamp of this poll, which is a millisecond timestamp. Used to determine the position of the X-axis written to the chart
var nowTime = new Date().getTime()
// Get market data
var ticker = _C(exchange.GetTicker)
// Get the buy price from the return value of the market data
var buy1Price = ticker.Buy
// Get the last transaction price. In order to prevent the two lines from overlapping, we add 1.
var lastPrice = ticker.Last + 1
// Use the timestamp as the X value and the buy price as the Y value to pass into the data sequence of index 0
ObjChart.add(0, [nowTime, buy1Price])
// Same as above
ObjChart.add(1, [nowTime, lastPrice])
Sleep(2000)
}
}
{@fun/Log/Chart Chart}
JSON này được sử dụng để thiết lập thông tin cấu hình biểu đồ của chức năng vẽ tùy chỉnhKLineChart
Chỉ một vài trường cấu hình cơ bản được liệt kê ở đây.
Có nên vẽ trên biểu đồ chính hay không. lớp phủ bool Cấu hình trục X. XAxis JSON Cấu hình trục y. Trục y JSON Cấu hình biểu đồ nến. nến JSON
Xin tham khảo:Bài viết đặc biệt về vẽ biểu đồ bằng chức năng KLineChart.
{@fun/Log/KLineChart KLineChart}
JSON được sử dụng để thiết lập dữ liệu để được tải bởi cácexchange.SetData()
Dữ liệu JSON là một cấu trúc mảng, trong đó mỗi phần tử cũng là một mảng, cụ thể là[time, data]
.
Thời gian của dữ liệu, đánh dấu thời gian của dữ liệu này.
thời gian
số
dữ liệu là một mảnh dữ liệu tương ứng với một thời gian nhất định trong dữ liệu tải bởi cácexchange.SetData()
Khi chiến lược được thực hiện,exchange.GetData()
chức năng nhận được dữ liệu với dấu thời gian tương ứng theo thời gian hiện tại.
dữ liệu chuỗi, số, bool, đối tượng, mảng, vv
Một ví dụ về tải dữ liệu trong hệ thống backtesting và lấy dữ liệu khi backtest chiến lược đang chạy:
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]])
while(true) {
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
}
}
{@fun SetData}, {@fun GetData}
JSON này là cấu trúc dữ liệu được trả về bởiEventLoop()
chức năng.EventLoop()
Các trình giám sát chức năng: 1. Bất kỳ sự kiện dữ liệu có thể đọc WebSocket nào; 2. Các sự kiện hoàn thành nhiệm vụ đồng thời với các chức năng exchange.Go (()) và HttpQuery_Go (()); 3. Các sự kiện tin nhắn được gửi trong các luồng được tạo ra bởithreading.Thread()
chức năng trong chiến lược ngôn ngữ JavaScript.
Số chuỗi sự kiện. Tiếp theo số Tên sự kiện. Sự kiện chuỗi ID chuỗi sự kiện. ThreadId số Chỉ số sự kiện. Chỉ số số Mẫu thời gian nano. Nano số
Sử dụngexchange.Go()
chức năng để thực hiện các yêu cầu đồng thời và cấu trúc dữ liệu sự kiện trả về bởi cácEventLoop()
function.
{
"Seq":1,
"Event":"Exchange_GetTrades",
"ThreadId":0,
"Index":3,
"Nano":1682068771309583400
}
Trong cùng một lúc thực thi chủ đề của chiến lược ngôn ngữ JavaScript (được tạo ra bởi cácthreading.Thread()
chức năng), khipostMessage()
chức năng của đối tượng thread được sử dụng để gửi một thông điệp,EventLoop()
chức năng trong chủ đề nhận tin nhắn sẽ theo dõi cấu trúc dữ liệu sự kiện sau:
{
"Seq":4,
"Event":"thread",
"ThreadId":1,
"Index":0,
"Nano":1727592066508674000
}
@fun/Global/EventLoop EventLoop
JSON này là cấu trúc dữ liệu được trả về bởiDBExec()
hàm; nó cũng được trả về khi thực thi một lệnh SQL sử dụngexec()
phương pháp của đối tượng được tạo ra bởiDial()
function.
Tên cột của dữ liệu được truy vấn, một mảng chuỗi. các cột mảng Các dữ liệu cụ thể được truy vấn, trong đó mỗi phần dữ liệu tương ứng với tên cột. Giá trị của trường giá trị là một mảng hai chiều, trong đó mỗi phần tử là một mảng và một bản ghi dữ liệu. giá trị mảng
Ví dụ về truy vấn dữ liệu trong cơ sở dữ liệu:
{
"columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],
"values":[
[1518970320000,100,99.1,90,100,12345.6],
[1518960320000,100,99.1,90,100,12345.6]
]
}
{@fun/Global/DBExec DBExec}, {@fun/Global/Dial Dial}
JSON này là cấu trúc dữ liệu được trả về bởi hàm thành viênjoin()
củaThread
object, mà lưu một số thông tin về các chủ đề đồng thời trongJavaScript
Chiến lược ngôn ngữThread
đối tượng đề cập đến đối tượng thread, được tạo ra bởithreading.Thread()
.
Thread ID. id số Cho dù sợi dây bị buộc phải kết thúc. kết thúc bool Thời gian chạy của sợi trong nano giây. đã qua số Giá trị trả về của hàm thread. rt số
Mã sau đây kiểm tra cơ chế thời gian củajoin()
chức năng củaThread
đối tượng và in giá trị trả về củajoin()
function.
function testFunc() {
for (var i = 0; i < 5; i++) {
Log(i)
Sleep(300)
}
}
function main() {
var t1 = threading.Thread(testFunc)
Log(t1.join(1000)) // undefined
Log(t1.join()) // {"id":1,"terminated":false,"elapsed":1506864000}
} ```
{@fun/Threads/Thread/join join}
Các chức năng tích hợp
Các biến tích hợp