tay tay dạy bạn làm thế nào để cho một chiến lược cũ cũ liên kết liền mạch websocket giao diện thị trường

Tác giả:Giấc mơ nhỏ, Tạo: 2019-09-26 15:47:53, Cập nhật: 2023-10-18 19:54:36

img

tay tay dạy bạn làm thế nào để cho một chiến lược cũ cũ liên kết liền mạch websocket giao diện thị trường

Những người phát minh ra các nền tảng giao dịch định lượngQuảng trường Chiến lượcCó rất nhiều chiến lược thú vị, và hầu hết các sàn giao dịch tiền kỹ thuật số đã được sử dụng.restMột số chiến lược dựa trên giao diện API của giao thứcrestNgoài ra, một số sàn giao dịch cũng xuất hiện gần đây.restCác trường hợp mà các chính sách không được sử dụng. Nếu thay đổi chính sách, tăng khả năng sử dụng.websocketViệc hỗ trợ giao diện đòi hỏi phải thay đổi một số thay đổi trong mã chính sách, thường là một vấn đề tương đối khó khăn (thay đổi chính sách khó khăn hơn nhiều so với viết lại). Làm thế nào để không thay đổi chiến lược mà vẫn sử dụng nó?websocketVà giao diện giao tiếp? Đây là một ví dụ điển hình về sự linh hoạt mạnh mẽ của nền tảng giao dịch định lượng của nhà phát minh, chúng ta có thể sử dụng:

  • Một, sử dụng chính sách "Temple library".
  • 2, đúng.exchange.GetTickerHook hoạt động.

Vì vậy, thực hiện, không thay đổi một dòng mã chính sách, để các chính sách được thực hiện bằng cách sử dụng các công cụ khác nhau.websocketĐộng cơ dữ liệu được đẩy qua giao diện giao dịch đã hoạt động. Sử dụng ngôn ngữ viết mãJavaScriptNgôn ngữ.

Chiến lược phân tích

Ví dụ, chúng tôi muốn thay đổi một chiến thuật cổ điển, "kẻ phá băng".

Địa chỉ chiến lược

Trước tiên chúng ta hãy xem mã của chiến lược và thấy rằng chiến lược này được điều khiển bởi thị trường tick, chủ yếu sử dụngtickerTrong dữ liệuBuySellLastNhững đặc điểm nàytickerDữ liệu được lấy từ các chức năng API của nền tảng FMZ:exchange.GetTickerNhờ đó, mục tiêu sẽ rõ ràng và chúng ta sẽ có thể thực hiện điều này.exchange.GetTickerChức năngHookBạn có thể sử dụng các tùy chọn khác nhau để thay thế phiên bản khác. Tuy nhiên, chúng ta không thể viết lại chiến lược của người phá băng, điều đó sẽ ảnh hưởng đến chiến lược, chúng ta muốn kết nối liền mạch! Vì vậy, người tiếp theo cần phải tham gia.

Các tính năng của thư viện mẫu vàinitSự hợp tác của các hàm

Chúng tôi đã tạo ra một "thư viện mẫu" tên là:Không mượt mà, mã sơ bộ trống.

img

Và sau đó choKhông mượt màMô hình đặt 2 tham số

  • IsUsedWebSocket
  • Hook_GetTicker@IsUsedWebSocket

img

Sử dụng để điều khiển việc mở hoặc khôngwebsocketChức năng giao diện, điều khiển chỉ định mở giao diện thị trường cụ thể.exchange.GetTickergiao diện làm hook thao tác. Vì vậy, chỉ có tham số mởGetTickerGiao diện là một tham số điều khiển cho websocket mode: Hook_GetTicker.

Một mẫu đã được tạo, bạn có thể viết một giao dịch truy cập cụ thể trong mẫu.websocketCác mã cụ thể không còn được mô tả, bạn có thể xem mã SeamlessConnWS (đã được công bố) và tài liệu API. Bạn cần xem trong mẫu.initCác hàm và các biến toàn cầu_DictConnectCreater_ConnMap

Mã là:

var _DictConnectCreater = {
    "Huobi" : WSConnecter_Huobi,
    "Binance" : WSConnecter_Binance,
}

var _ConnMap = {}

function init () {
    if (IsUsedWebSocket) {
        var connectCreater = null
        if (exchanges.length != 1) {
            Log("切换为ws接口只针对 exchange 交易所对象(即第一个添加的交易所对象)")
        }
        var isFound = false 
        for (var name in _DictConnectCreater) {
            if (exchange.GetName() == name) {
                connectCreater = _DictConnectCreater[name]
                isFound = true
            }
        }

        if (!isFound) {
            throw "没有找到实现"
        }
        
        if (Hook_GetTicker) {
            var symbol = exchange.GetCurrency()
            _ConnMap.GetTicker = connectCreater("GetTicker", symbol)
            exchange.GetTicker = function () {
                return _C(_ConnMap.GetTicker.Read)
            }
        }
        // ... 
        
    }
}

Bạn có thể thấy rằng mẫu này chỉ thực hiện hai giao dịch.websocketCác giao dịch giao dịch trên các mạng lưới mạng xã hội trên toàn thế giới, bao gồm các giao dịch giao dịch trên các mạng lưới mạng xã hội trên toàn thế giới.initCác chức năng là để cho chiến lược của người phá băng trích dẫn.Không mượt màSau khi tạo mẫu, khi chạy đĩa thực, nó sẽ được thực hiện trước.initCác hàm có thể tự độngexchange.GetTickerNội dung của hàm được thay thế thành sử dụngwebsocketThực hiện mã của giao diện để thực hiện kết nối liền mạchwebsocketCác bạn có thể tham gia vào cuộc họp này nhé.

Địa chỉ mẫu của SeamlessConnWS

Cách sử dụng

Đơn giản thôi!Không mượt màSau khi mô hình được sao chép vào thư viện chính sách của riêng bạn, bạn chỉ có thể sử dụng nó để tham khảo chính sách của người phá băng, như sau:

img

Chọn, lưu, chỉ cần đó thôi.

Xây dựng chiến lược phá băng, robot thực tế, sàn giao dịch chọn Binanceimg❖ Khởi độngKhông mượt màCác tham số điều khiển trên mẫu.img

Các bạn có thể tham gia vào chương trình này.img

Để dễ dàng nhìn thấy dữ liệu được đẩy, tôi đã thêm vào 157 dòng mã để in nhật ký và xuất dữ liệu được đẩy bởi sàn giao dịch.img

Những người tham gia vào cuộc họp này nói rằng:img

Điều này không thay đổi một dòng mã chính sách, thực hiện liên kết liền mạch với giao diện thị trường websocket và chính sách.

Đây chỉ là một ví dụ về việc sử dụngexchange.GetTickerGiải thích các chiến lược của các chức năng giao diện giao diện, ví dụ như các giao diện giao diện khácexchange.GetDepthexchange.GetTradesexchange.GetRecordsVà cũng giống như vậy!Không mượt màNhững người tham gia cuộc họp này đã được mời đến tham dự.

Liên kết cụ thể trong mẫuwebsocketthực hiện, sử dụngDialCác hàm (xem tài liệu API Dial Function) có thể được điều chỉnh theo nhu cầu. Ví dụ:read()Chọn tham số của hàm-2Chỉ quay lại.websocketDữ liệu mới nhất trong vùng đệm kết nối nhận dữ liệu.

Cảm ơn đã đọc.


Có liên quan

Thêm nữa

congcong009Mongko, bạn có thể thêm một phiên bản Python không?

Cô dâu cũng vậy.Những điều tốt đẹp nên được chia sẻ sớm hơn.

Giấc mơ nhỏRất tốt, cảm ơn bạn đã đề nghị.