資源の読み込みに... 荷物...

FMZ Quant API アップグレードの詳細な説明: 戦略設計の経験を改善する

作者: リン・ハーンFMZ~リディア作成日:2024-07-05 09:44:08 更新日:2024-09-20 08:52:30 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20

[TOC]

img

前言

FMZ Quant Trading Platformは9年間の技術的な繰り返しを経て,ユーザーとしては気づいていないかもしれませんが,何度も再構築されています.過去2年間で,プラットフォームはユーザー体験の観点から,UIインターフェースの包括的なアップグレード,一般的に使用される定量取引ツールの強化,より多くのバックテストデータサポートの追加を含む多くの最適化およびアップグレードを行いました.

戦略設計をより便利,取引論理をより明確,初心者より簡単に始めるために,プラットフォームは戦略で使用する API インターフェースをアップグレードしました.最新のバージョンを使用するドーカーは,これらの新しい機能を有効にすることができます.プラットフォームは,古いインターフェースコールと最大限に互換性があります. API インターフェースの新しい機能に関する情報は,FMZ Quant Trading Platform の API ドキュメンテーションに更新されています:

構文ガイド:https://www.fmz.com/syntax-guideユーザーガイド:https://www.fmz.com/user-guide

では,どのインターフェースがアップグレードされ,古い戦略を活用して,現在のAPIと互換化するために,どのような変更が必要かを簡単に見ていきましょう.

1. 新しい API インターフェース

交換を追加.GetTickers機能

多製品戦略と完全な市場モニタリング戦略の設計には,総合的な市場インターフェースが不可欠です.戦略の開発を容易にし,イベントの再発明を避けるために,FMZ Quant Trading Platformは,このタイプの取引APIを収めています.

このインターフェースがない場合 (個々の交換),呼び出すときexchange.GetTickers(),エラーメッセージが表示されます: サポートされていません.

この関数にはパラメータがなく,取引所の総市場インターフェイスですべての品種のリアルタイム市場データを返します.

exchange.GetTickers()機能は,すべての機能のリクエストバージョンですexchange.GetTicker()この2つの関数名との違いは単数と複数です.

OKXスポットシミュレーション環境を使ってテストします

function main() {
    exchange.IO("simulate", true)

    var tickers = exchange.GetTickers()
    if (!tickers) {
        throw "tickers error"
    }

    var tbl = {type: "table", title: "test tickers", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var i in tickers) {
        var ticker = tickers[i]
        tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }

    LogStatus("`" + JSON.stringify(tbl) +  "`")
    return tickers.length
}

img

交換を追加.CreateOrder関数

新たに追加されたexchange.CreateOrder()このアップグレードの焦点です.exchange.CreateOrder()命令の種類と方向を機能パラメータに直接指定する.この方法では,現在の取引ペア,契約コード,取引方向,およびシステムの他の設定に依存しません.

多種取引オーダー配送シナリオと同時配送シナリオでは,設計の複雑性が大幅に減少します.exchange.CreateOrder()機能はsymbol, side, price, amount.

OKX フューチャーシミュレーション環境を用いたテスト:

function main() {
    exchange.IO("simulate", true)

    var id1 = exchange.CreateOrder("ETH_USDT.swap", "buy", 3300, 1)
    var id2 = exchange.CreateOrder("BTC_USDC.swap", "closebuy", 70000, 1)
    var id3 = exchange.CreateOrder("LTC_USDT.swap", "sell", 110, 1)

    Log("id1:", id1, ", id2:", id2, ", id3:", id3)
}

img

この方法で,たったの3つのexchange.CreateOrder()異なる種類と方向の3つのフューチャーオーダーを配置するために使用されました.

交換.GetHistoryOrders 機能を追加しました

新たに追加されたexchange.GetHistoryOrders()この機能は,特定の種類の過去のトランザクションオーダーを取得するために使用されます.この機能には,交換インターフェースのサポートも必要です.

歴史的な注文をクエリする際には,様々な取引所によって実装されるインターフェースは大きく異なります.

  • ページ化されたクエリをサポートするものもあれば,サポートしないものもあります.
  • いくつかの取引所にはクエリウィンドウ期間があり,N日以上の注文はクエリできません.
  • ほとんどの交換は指定された時間に問い合わせをサポートしますが,一部はサポートしません. このようなインターフェースは,最高レベルの互換性で封じ込められ,実際の使用では,戦略の要件と期待に応えるかどうかを注意する必要があります.

詳細な機能説明はここで繰り返されません. APIドキュメントの構文マニュアルを参照してください.

https://www.fmz.com/syntax-guide#fun_exchange.gethistoryorders

バイナンス・スポット・トレード環境でテストしました

function main() {
    var orders = exchange.GetHistoryOrders("ETH_USDT")

    // Write to chart
    var tbl = {type: "table", title: "test GetHistoryOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
    for (var order of orders) {
        tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
    }
    
    LogStatus("orders.length:", orders.length, "\n", "`" + JSON.stringify(tbl) +  "`")
}

img

交換.GetPositions 関数を追加しました

位置データ取得機能の古いバージョンはexchange.GetPosition(). このアップグレードでは,関数名付けセマンティクスをよりよくマッチするために,新しい位置取得関数を追加します:exchange.GetPositions(). 同時に,それはまだGetPosition機能と互換性/アップグレードされています.

この2つの関数名は,後尾のsによってのみ異なることに注意してください. GetPositionsがよりセマンティックに正しいため,将来的に GetPositions を使用することをお勧めします.

についてexchange.GetPositions()函数には3つの呼び出し形式があります.

  • 交換.GetPositions (位置を取得する) パラメータが通過されていない場合,現在の寸法のすべての品種の位置データは,現在の設定に従って要求されます.トレーディングペア / 契約コード.

  • exchange.GetPositions ((ETH_USDT.swap) について 特定の製品情報 (ETH_USDT.swapのフォーマットは FMZ プラットフォームによって定義されます) を指定する際には,特定の製品の位置データを要求します. 例えば:BTC_USD.swap, ETH_USDT.swap, ETH_USDT.quarterなど BTC_USD.swap: BTCの通貨ベースの永続契約. ETH_USDT.swap: ETHのUベースの永続契約. ETH_USDT.quarter: ETHの U ベースの四半期配達契約. BTC_USD.BTC-USD-201226-24250-C: BTCコインベースのオプション契約.

  • 交換.GetPositions ((USDT.スワップ) 指定された寸法範囲に従ってすべての製品に対する位置データを要求する. USDT.swap: Uベースの永続契約範囲 USDT.futures: Uベースの配達契約範囲. USD.swap: コインベースの永続契約範囲 USD.futures: コインベースの配送契約範囲. USDT.option: Uベースのオプション契約範囲. USD.option: コインベースのオプション契約範囲.

    特別取引契約の部分: USDT.futures_combo: デリビット取引所によるフューチャー・コンクリート・スプレッド USD.futures_ff: フューチャーズ_Kraken exchangeのミックスド・マーージン・デリバリー・コントラクト. USD.swap_pf: フューチャーズ_クラッケン取引所のミックス・マーージン永久契約. Exchange API インターフェースでサポートされていない次元については,エラーが報告され,呼び出すときに null 値が返されます.

OKX フューチャーシミュレーション環境を用いたテスト:

function main() {
    exchange.IO("simulate", true)

    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")

    var p1 = exchange.GetPositions()
    var p2 = exchange.GetPositions("BTC_USDT.swap")

    var tbls = []
    for (var positions of [p1, p2]) {
        var tbl = {type: "table", title: "test GetPosition/GetPositions", cols: ["Symbol", "Amount", "Price", "FrozenAmount", "Type", "Profit", "Margin", "ContractType", "MarginLevel"], rows: []}
        for (var p of positions) {
            tbl.rows.push([p.Symbol, p.Amount, p.Price, p.FrozenAmount, p.Type, p.Profit, p.Margin, p.ContractType, p.MarginLevel])
        } 
        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")
}

img

パラメータがexchange.GetPositions()機能はETH_USDT.swap, ETHのUベースの永続契約の位置データは入手できます.

測定した場合exchange.GetPositions()取引所でリストされているすべてのUベースの永続契約の位置データは取得できます (現在の取引ペアがBTC_USDTであり,契約はスワップなので,リクエストは現在の取引ペアと契約寸法範囲に基づいています). これは,呼び出しに相当しますexchange.GetPositions("USDT.swap")要求範囲を指定します

2. API インターフェイスのアップグレード

アップデート交換.GetTicker 関数

市場機能の主要なアップグレードexchange.GetTicker()この機能は,現在の取引ペアとコントラクトコードなしでパラメータによって指定された製品情報に従って直接市場データをリクエストすることができます. コード書き込みプロセスを簡素化します. 同時に,パラメータを通過せずにコール方法と互換性があり,古いプラットフォーム戦略と最大限に互換性があります.

パラメータsymbol交換対象のスポット/フューチャーに異なるフォーマットがあります.exchange:

  • スポット交換オブジェクト 形式は次のとおりですAAA_BBB, AAA は baseCurrency,つまり取引通貨,BBB は quoteCurrency,つまり価格設定通貨を表します.通貨名はすべて大文字で書かれています. 例えば,BTC_USDTのスポット取引ペアです.
  • フューチャー取引対象 形式は次のとおりですAAA_BBB.XXX, AAA は baseCurrency,つまり取引通貨,BBB は quoteCurrency,つまり価格設定通貨,XXX は永久契約スワップなどの契約コードを表します.通貨名はすべて大文字で,契約コードは小文字で書かれています. 例えば: BTC_USDT.swap,BTCのUベースの永続契約. バイナンス・フューチャーズのライブ環境でテストしました
var symbols = ["BTC_USDT.swap", "BTC_USDT.quarter", "BTC_USD.swap", "BTC_USD.next_quarter", "ETH_USDT.swap"]

function main() {
    exchange.SetCurrency("ETH_USD")
    exchange.SetContractType("swap")

    var arr = []
    var t = exchange.GetTicker()
    arr.push(t)

    for (var symbol of symbols) {
        var ticker = exchange.GetTicker(symbol)
        arr.push(ticker)
    }

    var tbl = {type: "table", title: "test GetTicker", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var ticker of arr) {
        tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }

    LogStatus("`" + JSON.stringify(tbl) +  "`")
    return arr
}

img

特定のシンボルの市場データの一連の要求は,はるかに簡単になりました.

アップデート交換.GetDepth関数

GetTicker 機能と同様に,exchange.GetDepth()この機能は,シンボルのパラメータも追加します.これは深度データを要求するときに直接シンボルを指定することができます.

バイナンス・フューチャーズのライブ環境でテストしました

function main() {
    exchange.SetCurrency("LTC_USD")
    exchange.SetContractType("swap")

    Log(exchange.GetDepth())
    Log(exchange.GetDepth("ETH_USDT.quarter"))
    Log(exchange.GetDepth("BTC_USD.swap"))
}

img

エクスチェンジを更新する.GetTrades 機能

GetTicker 機能と同様に,exchange.GetTrades()この機能は,シンボルのパラメータも追加します. これにより,市場取引データを要求するときに直接シンボルを指定できます.

バイナンス・フューチャーズのライブ環境でテストしました

function main() {
    var arr = []
    var arrR = []
    var symbols = ["LTC_USDT.swap", "ETH_USDT.quarter", "BTC_USD.swap"]    

    for (var symbol of symbols) {
        var r = exchange.Go("GetTrades", symbol)
        arrR.push(r)
    }

    for (var r of arrR) {
        arr.push(r.wait())
    }
    
    var tbls = []
    for (var i = 0; i < arr.length; i++) {
        var trades = arr[i]
        var symbol = symbols[i]

        var tbl = {type: "table", title: symbol, cols: ["Time", "Amount", "Price", "Type", "Id"], rows: []}
        for (var trade of trades) {
            tbl.rows.push([trade.Time, trade.Amount, trade.Price, trade.Type, trade.Id])
        }

        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")
}

img

このアップグレードは,また,Symbol Parameterによって指定されたexchange.Go()プラットフォーム API インターフェースを同時に呼び出すときの機能です

アップデート交換.GetRecords 関数

このとき,GetRecords関数は大きく調整された.要求されたK線データのタイプ情報を直接指定するためのシンボルパラメータをサポートすることに加えて,K線期間を指定するために元の周期パラメータが保持され,要求時に期待されるK線長さを指定するために制限パラメータが追加されている.同時に,周期パラメータにのみ通過するGetRecords関数の古いバージョンと互換性がある.

呼び出す方法exchange.GetRecords()機能は

  • 交換.GetRecords (取得記録) パラメータが指定されていない場合,現在の取引ペア/契約コードに対応する製品のKラインデータは要求されます.Kライン期間は,戦略バックテストインターフェースまたはライブ取引で設定されたデフォルトのKライン期間です.
  • 交換する.GetRecords ((60 * 15) この項に該当する商品のK線データ (K線データ) は,現在の取引ペア/契約コードに対応する商品のK線データのみが指定されている場合です.
  • 交換.GetRecords (BTC_USDT.スワップ) 商品情報のみが指定された場合,指定された製品のK線データは要求されます.K線期間は,戦略バックテストインターフェースまたはライブ取引で設定されたデフォルトのK線期間です.
  • exchange.GetRecords ((BTC_USDT.swap,60 * 60) 製品情報と特定のK線期間を指定してK線データを要求します.
  • exchange.GetRecords ((BTC_USDT.swap, 60, 1000) 製品情報を指定し,特定のK線期間を指定し,K線データを要求するための予想されるK線長を指定します. 制限パラメータが交換所の単一のリクエストの最大長を超えると,ページングリクエストが生成される (すなわち,交換所のKラインインターフェースへの複数の呼び出し).

バイナンス・フューチャーズのライブ環境でテストしました

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    var r1 = exchange.GetRecords()
    var r2 = exchange.GetRecords(60 * 60)
    var r3 = exchange.GetRecords("BTC_USDT.swap")
    var r4 = exchange.GetRecords("BTC_USDT.swap", 60)
    var r5 = exchange.GetRecords("LTC_USDT.swap", 60, 3000)

    Log("r1 time difference between adjacent bars:", r1[1].Time - r1[0].Time, "Milliseconds, Bar length:", r1.length)
    Log("r2 time difference between adjacent bars:", r2[1].Time - r2[0].Time, "Milliseconds, Bar length:", r2.length)
    Log("r3 time difference between adjacent bars:", r3[1].Time - r3[0].Time, "Milliseconds, Bar length:", r3.length)
    Log("r4 time difference between adjacent bars:", r4[1].Time - r4[0].Time, "Milliseconds, Bar length:", r4.length)
    Log("r5 time difference between adjacent bars:", r5[1].Time - r5[0].Time, "Milliseconds, Bar length:", r5.length)
}

img

アップデート交換.GetOrders 機能

GetOrders 関数も追加します.symbolパラメータは,特定のシンボルを指定し,そのシンボルの未完了注文 (待機注文) をクエリするために使用できます.また,指定された寸法範囲内のすべてのシンボルの未完了注文 (待機注文) をクエリすることもサポートします.

についてexchange.GetOrders()この関数は次の方法で呼び出せる:

  • 交換する.GetOrders (GetOrders) フューチャー取引の場合: パラメータが通過しない場合,現在の寸法範囲内のすべてのインstrumentに対するすべての未定のオーダー (待機中のオーダー) は,現在の値に応じて要求されます.トレーディングペア / 契約コードセットアップ スポット取引の場合: パラメータが渡されない場合,すべてのスポット製品のすべての未払い注文 (待機注文) に対して要求を行います.
  • exchange.GetOrders ((BTC_USDT.swap) または exchange.GetOrders ((BTC_USDT) において フューチャー取引では: exchange.GetOrders ((BTC_USDT.swap), BTCのUSDTベースの永続契約に関するすべての未払い注文 (待機注文) をアンケートします. スポット取引では: exchange.GetOrders ((BTC_USDT), BTC_USDTのスポット取引ペアに関するすべての未定の注文 (待機中の注文) をクエリします.
  • フューチャー取引所でのみサポートされます.GetOrders ((USDT.swap) は,すべての品種に対して未払い注文 (待機注文) を要求するための次元範囲を指定します. 次元範囲は,GetPositions関数の範囲と一致する. 例えば: exchange.GetOrders ((USDT.swap) は,Uベースの永続契約範囲内のすべての種類の未定注文 (待機注文) を要求します.

OKX フューチャーシミュレーション環境を用いたテスト:

function main() {
    exchange.IO("simulate", true)

    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")

    // Write to chart
    var tbls = []
    for (var symbol of ["null", "ETH_USDT.swap", "USDT.swap"]) {
        var tbl = {type: "table", title: symbol, cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}

        var orders = null
        if (symbol == "null") {
            orders = exchange.GetOrders()
        } else {
            orders = exchange.GetOrders(symbol)
        }

        for (var order of orders) {
            tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
        }

        tbls.push(tbl)
    }
    
    LogStatus("`" + JSON.stringify(tbls) +  "`")
}

パラメータが送信されない場合,現在の取引ペア (BTC_USDT) と契約コード (スワップ) の寸法範囲内のすべての種類の未完了注文 (待機注文) が要求されます.

パラメータがETH_USDT.swap指定されている場合,ETHのUSDTベースの永続契約の未完了注文 (待機注文) が要求されます.

ストリングが"USDT.swap"USDTベースの永続契約の未完了注文 (待機注文) が要求されます.

アップデート交換.GetPosition 関数

旧の位置取得機能の命名と互換性があり,特定の要求位置データのタイプ情報を指定できるシンボルパラメータも追加しています. この関数の使い方は,exchange.GetPositions().

アップデートexchange.IO機能

についてexchange.IO("api", ...)完全なリクエストアドレスの直接転送をサポートするためにアップグレードされています. OKX インターフェースを呼び出したい場合:

GET はhttps://www.okx.com/api/v5/アカウント/最大引き出口:BTC

ベースアドレスへの直接書き込みをサポートhttps://www.okx.comベースアドレスを切り替えて IO関数を呼び出す必要がないのです

OKX フューチャーシミュレーション環境を用いたテスト:

function main() {
    exchange.IO("simulate", true)

    return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}

img

3. API インターフェースの影響

Exchange.GetOrder 機能に影響を与える

このアップグレードは主にパラメータに影響します.idについてexchange.GetOrder(id)id パラメータは,元の交換注文 id から,取引製品を含む文字列形式に変更されます. FMZプラットフォーム上のすべてのオーダーIDは このフォーマットです

例えば:

  • 交換命令で定義された交換の元のオーダーIDは:123456このアップグレードの前に,GetOrder関数を呼び出したい場合は,その中に渡されたオーダーIDは123456.
  • 交換命令で定義された取引所によって命名された製品コード:BTC-USDT- わかった これは,FMZプラットフォームで定義された取引ペアではなく,取引所によって命名された取引製品コードを指すことに注意してください.

このアップグレード後,パラメータ id のフォーマットがexchange.GetOrder(id)機能は以下のように調整されます.BTC-USDT,123456.

まず このデザインの理由を 説明しましょう CreateOrder関数は,直接注文の種類を指定するためにアップグレードされているため (注文の種類は,現在設定されている取引ペアと契約コードとは異なる場合があります).戻された注文IDがタイプ情報を含まない場合,この注文IDは使用不能になります.注文をチェックするときに,注文の種類 (契約) が何であるかわからないため.ほとんどの取引所は,注文をチェックしキャンセルするときに,タイプコードを記述するパラメータの仕様が必要です.

この衝撃にどう対応するか: 薬剤を使用する場合は,exchange.IO交換オーダーインターフェースを直接呼び出し,注文を行うため,返される値は,通常,交換の元のシンボル (製品コード) と元の注文IDを含みます.その後,両方を英語の逗子で連結すると,FMZプラットフォームの定義に適合する注文IDになります. 同様に,あなたが FMZ プラットフォームをカプセル化された注文インターフェイスを使用して注文をします. 注文 ID の始まりは取引製品コードであるため,元の注文 ID を使用する必要がある場合は,製品コードとコンマを削除するだけです.

交換に影響を与える.キャンセルオーダー機能

このアップグレードがexchange.CancelOrder()機能は,同じですexchange.GetOrder() function.

交換・購入機能に影響を与える

このアップグレードがexchange.Buy()機能は,同じですexchange.GetOrder()機能 注文 ID が返されるexchange.Buy()機能は新しい構造である.例えば,OKX取引所に先物注文を出すときに返されるIDは,LTC-USDT-SWAP,1578360858053058560.

交換に影響する.販売機能

このアップグレードがexchange.Sell()機能は,同じですexchange.GetOrder()機能 注文 ID が返されるexchange.Sell()機能は新しい構造である.例えば,OKX取引所に先物注文を出すときに返されるIDは,ETH-USDT-SWAP,1578360832820125696.

交換.GetPosition関数に影響する

この関数は先物交換のみがサポートする.位置データを取得するための exchange.GetPosition() 関数には,新しい exchange.GetPositions() 名前が追加され,両挙動はまったく同じです.

古い定義: exchange.GetPosition() 関数は,パラメータを指定せずに呼び出されると,現在の取引ペアとコントラクトコードによって設定された特定のコントラクトの位置データを取得します. 調整と変更の後,新しい定義: exchange.GetPosition (※) 関数は,パラメータを指定せずに呼び出されると,現在のセット取引ペアと契約コードによって決定された次元範囲内のすべての種類のポジションを取得します.

例えば,現在の取引ペアは BTC_USDTで,契約コードはスワップです.この時点で,コール:

exchange.GetPosition() // Equivalent to calling exchange.GetPosition("USDT.swap")

この関数は,すべての通貨のUベースの永続契約の位置データを要求します.

Exchange.GetOrders 機能に影響を与える

  1. スポット取引の場合:

古い定義: exchange.GetOrders() 関数は,パラメータを指定せずに呼び出されると,現在の取引ペアのすべての未完了オーダーを取得します. 調整と修正後,新しい定義は: exchange.GetOrders (※) 関数,任意のパラメータを指定せずに呼び出されると,すべてのスポット取引ペアの未完了注文を取得します.

  1. フューチャー取引の場合:

古い定義: exchange.GetOrders() 関数は,パラメータを指定せずに呼び出されると,現在の取引ペアとコントラクトコードによって設定された特定のコントラクトのすべての未完了オーダーを取得します. 調整と修正後,新しい定義は: exchange.GetOrders (※) 関数,任意のパラメータを指定せずに呼び出されると,現在の取引ペアと契約コードによって決定された次元範囲のすべての未完了オーダーを取得します.

たとえば,現在の取引ペアは BTC_USDで,契約コードは四半期です.この時点で,コール:

exchange.GetOrders()   // Equivalent to calling exchange.GetOrders("USD.futures")

この機能は,すべてのコインベースの先物契約の未払い注文データを要求します.

4. 構造 調整

ティッカーの構造

この更新では,現在のティッカー構造の市場情報を記録する,シンボルのフィールドが追加されます. このフィールドのフォーマットは,このフィールドのシンボルパラメータのフォーマットとまったく同じです.exchange.GetTicker() function.

秩序構造

この更新では,Order構造に Symbol フィールドを追加し,このフィールドの形式は,Orderのシンボルパラメータ形式とまったく同じです.exchange.GetTicker()機能 この更新では,注文構造のIdフィールドも変更され,新しい注文ID形式で製品情報と元の注文情報を記録します.exchange.GetOrder()繰り返すつもりはない.

位置構造

この更新では,位置構造にシンボルフィールドを追加します. このフィールドのフォーマットは,exchange.GetTicker() function.

5. バックテストシステム

プラットフォーム戦略 API インターフェイスアップグレードによると,プラットフォームのバックテストシステムは同期更新されています. さらに,バックテストシステムは以下に対応しています.

  • バックテストデータを交換します
  • すべての種類の交換のためのバックテストデータをサポートします.
  • Uベース 通貨ベース 永続契約の混合取引です
  • フューチャー交換オブジェクトは,バックテスト中に取引ペアを切り替えるのをサポートします.

追加 の 更新

1. 口座構造における新しいフィールド 株式とUPnL

農地についてAccount構造が返されるGetAccountフューチャー取引のオブジェクトのメンバー機能が拡張されています.

  • 株式 現行のマーージン資産通貨の総株価.このフィールドをサポートしないいくつかの先物取引所を除き,ほとんどの取引所はこのフィールドをサポートしています.主にリアルタイムアカウントのマーージン利益と損失を計算するために使用されます.

  • UPnL 現行のマーージン資産通貨で保持されているすべてのポジションの未実現利益と損失.ほとんどの先物取引所は,このフィールドをサポートしません.

2. SetMarginLevel 関数は,シンボルのパラメータをサポートするためにアップグレードされました

フューチャー取引オブジェクトのメンバー関数 SetMarginLevel がアップグレードされ,パラメータシンボルが追加されました.

試験例:

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    // The current trading pair is ETH_USDT, the contract code is swap, and the leverage value is set to 10
    exchange.SetMarginLevel(10)
    
    // Directly specify the trading pair BTC_USDT, contract code swap, and set the leverage value to 20
    exchange.SetMarginLevel("BTC_USDT.swap", 20)
}

3. GetMarkets 関数で返される市場構造に CtValCcy フィールドを追加

フィールドCtValCcy契約の価値単位を記録する.契約の価値単位は,BTC,USD,ETHなどである. フィールドCtVal取引所で取引される商品の契約の価値を記録し,単位は取引所に記録される通貨です.CtValCcy例えば:CtVal0.01 で,そしてCtValCcyBTCで,契約の価値は0.01 BTCです.


もっと