avatar of 发明者量化-小小梦 发明者量化-小小梦
フォロー ダイレクトメッセージ
4
フォロー
1271
フォロワー

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

作成日:: 2024-06-28 09:08:29, 更新日:: 2024-11-01 10:08:12
comments   12
hits   2053

[TOC]

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

序文

Inventor Quantitative Trading Platform は 9 年間の技術的反復を経て、何度も再構築されてきましたが、ユーザーとしてはそれに気付いていないかもしれません。過去 2 年間で、プラットフォームは UI インターフェースの包括的なアップグレード、一般的に使用される定量取引ツールの強化、バックテスト データのサポートの追加など、ユーザー エクスペリエンスの面で多くの最適化とアップグレードを行ってきました。

戦略設計をより便利にし、取引ロジックをより明確にし、初心者が簡単に始められるようにするために、プラットフォームは戦略で使用される API インターフェースをアップグレードしました。これらの新機能を有効にするには、ホストの最新バージョンを使用してください。プラットフォームは、可能な限り、古いインターフェースへの呼び出しとの互換性を維持します。新しい API インターフェース機能に関する情報が、Inventor Quantitative Trading Platform の API ドキュメントに更新されました。

それでは、どのインターフェースがアップグレードされたか、古い戦略を現在の API と互換性を持たせるためにどのような変更が必要かを簡単に見てみましょう。

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

exchange.GetTickers 関数

多品種戦略と完全な市場状況監視戦略を設計するため。この集約された市場インターフェースは、戦略の開発を容易にし、車輪の再発明を避けるために不可欠です。発明者の定量取引プラットフォームは、取引所のこのような 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
}

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

exchange.CreateOrder 関数

新しいexchange.CreateOrder()このアップグレードでは機能に重点が置かれています。exchange.CreateOrder()この関数の最も重要な機能は、関数のパラメータで注文のタイプと方向を直接指定することです。このようにして、取引ペア、契約コード、取引方向などの現在のシステム設定に依存しなくなります。

複数商品の取引注文シナリオおよび同時実行シナリオでは、設計の複雑さが大幅に軽減されます。exchange.CreateOrder()この関数の4つのパラメータはsymbolsidepriceamount

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)
}

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

たった3回で完了exchange.CreateOrder()この関数呼び出しは、異なる種類と方向の 3 つの先物注文を配置します。

exchange.GetHistoryOrders 関数

新しいexchange.GetHistoryOrders()この関数は、特定の商品の取引注文履歴を取得するために使用されます。この機能には、取引所インターフェースのサポートも必要です。

過去の注文を照会する場合、さまざまな取引所によって実装されるインターフェースは大きく異なります。

  • ページ分割されたクエリをサポートするものもあれば、サポートしないものもあります。
  • 一部の取引所にはクエリウィンドウ期間があり、N 日以上経過した注文はクエリできません。
  • ほとんどの取引所は指定された時間にクエリをサポートしていますが、サポートしていない取引所もあります。

このようなインターフェースは最高レベルの互換性でカプセル化されており、実際の使用においては、戦略の要件と期待を満たすかどうかに注意を払う必要があります。

詳細な関数の説明はここでは繰り返さないので、API ドキュメントの構文マニュアルを参照してください。

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

Binance スポット取引環境を使用してテスト済み:

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

    // 写入图表
    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) +  "`")
}

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

exchange.GetPositions関数

位置データ取得機能の旧バージョンは次のとおりです。exchange.GetPosition()。関数の命名セマンティクスをより適切に一致させるために、このアップグレードでは位置を取得するための新しい関数が追加されました。exchange.GetPositions()。同時に、GetPosition 関数との互換性/アップグレードも維持されています。

2 つの関数名は末尾の s のみが異なることに注意してください。GetPositions の方が意味的に正しいため、今後は GetPositions を使用することをお勧めします。

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

  • exchange.GetPositions() パラメータが渡されない場合、現在の取引ペア / 契約コード現在の次元内のすべての品種の位置データを要求します。

  • exchange.GetPositions(“ETH_USDT.swap”) 特定の商品情報を指定する場合(ETH_USDT.swap 形式は FMZ プラットフォームによって定義されます)、特定の商品の位置データを要求します。 例:BTC_USD.swapETH_USDT.swapETH_USDT.quarter待って。 BTC_USD.swap: BTC の通貨ベースの永久契約。 ETH_USDT.swap: ETH の U ベースの永久契約。 ETH_USDC.swap: ETH の USDC マージン永久契約。 (USDTに加えて、異なるquoteCurrencyを指定することもできますが、ここでは繰り返しません) ETH_USDT.quarter: ETH の U ベースの四半期配信契約。 BTC_USD.BTC-USD-201226-24250-C: BTC コイン証拠金オプション契約。

  • exchange.GetPositions(“USDT.swap”) 指定された寸法範囲に従ってすべてのシンボルの位置データを要求します。 USDT.swap: U ベースの永久契約範囲。 USDT.futures: U ベースのデリバリー契約の範囲。 USDC.swap: USDC マージン永久契約範囲。 (USDTに加えて、異なるquoteCurrencyを指定することもできますが、ここでは繰り返しません) USDC.futures: USDC マージン先物契約の範囲。 USD.swap: 通貨ベースの永久契約範囲。 USD.futures: 通貨ベースの先物契約の範囲。 USDT.option: U ベースのオプション契約範囲。 USD.option: 通貨ベースのオプション契約範囲。

いくつかの特別な交換契約ディメンション区分: USDT.futures_combo:Futures_Deribit取引所のCFDの組み合わせ。 USD.futures_ff:Futures_Craken取引所の混合証拠金受渡契約。 USD.swap_pf: 先物_Kraken取引所のハイブリッドマージン永久契約。

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) +  "`")
}

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

着信時exchange.GetPositions()関数のパラメータはETH_USDT.swapETH U ベースの永久契約を使用すると、ETH U ベースの永久契約の位置データを取得できます。

輸入されていない場合exchange.GetPositions()この関数をパラメータとして使用すると、取引所に上場されているすべてのUマージン永久契約のポジションデータを取得できます(現在の取引ペアはBTC_USDTで、契約はスワップであるため、リクエストは現在の取引ペアに基づいており、契約ディメンションの範囲)。これは、exchange.GetPositions("USDT.swap")、リクエストスコープを指定します。

exchange.GetFundings 関数

新しく追加された GetFundings 関数を使用すると、先物取引所の永久契約の資金調達率を取得できます。この関数は 1 つのパラメータ シンボルを取ります。この関数は、Funding 構造体の配列を返します。

  • シンボル パラメータを指定します。指定された商品の資金調達率情報構造配列 (Funding 配列) を返します。シンボル パラメータは、GetOrders/GetPositions 関数のシンボル パラメータと同様に、範囲に設定できます。
  • シンボルパラメータを指定しない場合:現在の取引ペアと契約コードが配置されているディメンションに従って、現在のディメンションのすべての製品データを返します。メカニズムはGetOrders/GetPositions関数と同じです。
  • 取引所が特定の製品を指定する必要がある場合は、シンボル パラメータ、つまり特定の製品のコードを渡す必要があります。次に例を示します。BTC_USDT.swap。パラメータが渡されないか、関数に範囲が渡された場合、シンボル パラメータがサポートされていないことを示すエラー メッセージが表示されます。

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

exchange.GetTicker 関数

市場機能exchange.GetTicker()このアップグレードでは主にシンボルパラメータが追加されます。この機能を使用すると、現在の取引ペアや契約コードに関係なく、パラメータで指定された商品情報に従って市場データを直接要求できます。コード作成プロセスを簡素化します。同時に、パラメータを渡さない呼び出し方法との互換性も維持されており、古いプラットフォーム戦略との互換性も最大限に保たれています。

パラメータsymbol交換対象物exchangeスポット/先物にはさまざまな形式があります。

  • スポット交換オブジェクト 形式は次のとおりです。AAA_BBBAAA は baseCurrency、つまり取引通貨を表し、BBB は quoteCurrency、つまり価格設定通貨を表します。通貨名はすべて大文字です。 例: BTC_USDT スポット取引ペア。
  • 先物取引所オブジェクト 形式は次のとおりです。AAA_BBB.XXXAAA は baseCurrency、つまり取引通貨を表し、BBB は quoteCurrency、つまり価格設定通貨を表し、XXX は永久契約スワップなどの契約コードを表します。通貨名はすべて大文字で、契約コードは小文字です。 例: BTC_USDT.swap、BTC の U ベースの永久契約。

Binance Futures ライブ環境を使用してテスト済み:

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
}

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

指定されたシンボルの市場データのバッチ要求がはるかに簡単になりました。

exchange.GetDepth関数

GetTicker関数と同じexchange.GetDepth()今回の関数ではシンボルパラメータも追加されています。深度データを要求するときにタイプを直接指定することができます。

Binance Futures ライブ環境を使用してテスト済み:

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

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

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

exchange.GetTrades 関数

GetTicker関数と同じexchange.GetTrades()今回の関数ではシンボルパラメータも追加されています。市場取引データを要求する際には、商品を直接指定することが可能です。

Binance Futures ライブ環境を使用してテスト済み:

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) +  "`")
}

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

このアップグレードは、exchange.Go()関数がプラットフォーム API インターフェイスを同時に呼び出す場合、製品情報を指定するためにシンボル パラメータが渡されます。

exchange.GetRecords 関数

今回、GetRecords 関数は大幅に調整され、要求された K ライン データの型情報を直接指定するためのシンボル パラメータがサポートされました。 K ラインの期間を指定するために元の期間パラメータが保持され、要求時に予想される K ラインの長さを指定するための制限パラメータが追加されます。また、期間パラメータのみを渡す GetRecords 関数の古いバージョンとも互換性があります。

exchange.GetRecords()関数を呼び出す方法:

  • exchange.GetRecords() パラメータが指定されていない場合は、現在の取引ペア/契約コードに対応する製品の K ライン データが要求されます。K ライン期間は、戦略バックテスト インターフェイスまたは実際の取引で設定されたデフォルトの K ライン期間です。
  • exchange.GetRecords(60 * 15) K ライン期間パラメータのみを指定すると、現在の取引ペア/契約コードに対応する商品の K ライン データが要求されます。
  • exchange.GetRecords(“BTC_USDT.swap”) 商品情報のみを指定した場合は、指定した商品の K ライン データが要求されます。K ライン期間は、戦略バックテスト インターフェイスまたは実際の取引で設定されたデフォルトの K ライン期間です。
  • exchange.GetRecords(“BTC_USDT.swap”, 60 * 60) K ライン データをリクエストするには、製品情報と特定の K ライン期間を指定します。
  • exchange.GetRecords(“BTC_USDT.swap”, 60, 1000) K ライン データをリクエストするには、製品情報、特定の K ライン期間、および必要な K ラインの長さを指定します。 制限パラメータが取引所からの単一リクエストの最大長を超えると、ページング リクエスト (つまり、取引所の K ライン インターフェイスへの複数の呼び出し) が生成されることに注意してください。

Binance Futures ライブ環境を使用してテスト済み:

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相邻Bar时间差值:", r1[1].Time - r1[0].Time, "毫秒, Bar长度:", r1.length)
    Log("r2相邻Bar时间差值:", r2[1].Time - r2[0].Time, "毫秒, Bar长度:", r2.length)
    Log("r3相邻Bar时间差值:", r3[1].Time - r3[0].Time, "毫秒, Bar长度:", r3.length)
    Log("r4相邻Bar时间差值:", r4[1].Time - r4[0].Time, "毫秒, Bar长度:", r4.length)
    Log("r5相邻Bar时间差值:", r5[1].Time - r5[0].Time, "毫秒, Bar长度:", r5.length)
}

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

exchange.GetOrders 関数

GetOrders関数は、symbolパラメータを使用すると、特定の製品を指定して、その製品の未完了注文 (保留中の注文) を照会できます。また、指定したディメンション範囲内のすべての製品の未完了注文 (保留中の注文) を照会することもできます。

exchange.GetOrders()この関数は次の方法で呼び出すことができます。

  • exchange.GetOrders() 先物取引所の場合: パラメータが渡されない場合、現在の取引ペア / 契約コード現在のディメンション範囲内のすべてのシンボルのすべてのオープン注文(保留中の注文)を要求します。
    スポット取引所の場合: パラメータが渡されない場合、すべてのスポット商品のすべての未処理注文 (保留中の注文) がリクエストされます。
  • exchange.GetOrders(“BTC_USDT.swap”) または exchange.GetOrders(“BTC_USDT”) 先物取引所の場合: exchange.GetOrders(“BTC_USDT.swap”) を実行して、BTC の USDT 証拠金永久契約のすべての未完了注文 (保留中の注文) を照会します。 スポット取引所の場合: exchange.GetOrders(“BTC_USDT”)、BTC_USDT スポット取引ペアのすべての未完了注文 (保留中の注文) を照会します。
  • 先物取引所でのみサポートされています exchange.GetOrders(“USDT.swap”) 指定されたディメンション範囲のすべての種類の未約定注文(保留中の注文)をリクエストします 寸法分割範囲は、GetPositions 関数の範囲と一致します。 たとえば、exchange.GetOrders(“USDT.swap”) は、USDT マージン永久契約範囲のすべての種類の未履行注文 (保留中の注文) をすべて要求します。

OKX先物シミュレーション環境を使用してテストします。

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

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

    // 写入图表
    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 証拠金永久契約のすべての未処理注文 (保留中の注文) を要求します。

exchange.GetPosition関数

従来の位置取得関数の命名との互換性は維持されており、さらに、要求された特定の位置データの型情報を指定できるシンボル パラメータも追加されています。機能の使用法とexchange.GetPositions()完全に一貫しています。

exchange.IO 関数

のためにexchange.IO("api", ...)関数呼び出しメソッドがアップグレードされ、すべての交換オブジェクトの完全な要求アドレスを直接渡すことがサポートされるようになりました。

たとえば、OKX インターフェースを呼び出す場合は、次のようにします。

GET https://www.okx.com /api/v5/account/max-withdrawal ccy: BTC

ベースアドレスへの直接書き込みをサポートhttps://www.okx.comIO 関数を呼び出す前にベース アドレスを切り替える必要はありません。

OKX先物シミュレーション環境を使用してテストします。

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

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

Inventor Quantitative Trading Platform API アップグレードの詳細な説明: 戦略設計エクスペリエンスの向上

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

exchange.GetOrder関数

このアップグレードは主にexchange.GetOrder(id)関数パラメータidid パラメータは、元の取引所注文 ID から取引の種類を含む文字列形式に変更されます。 FMZ プラットフォーム上のパッケージ化された注文 ID はすべてこの形式です。

例えば:

  • 交換注文で定義されている交換元の注文 ID は次のとおりです。123456 このアップグレードの前は、GetOrder関数を呼び出す場合、渡される注文IDは123456
  • 交換注文で定義された交換名付き製品シンボル:BTC-USDT。 ここで言及されているのは、FMZ プラットフォームによって定義された取引ペアではなく、取引所によって命名された取引商品コードであることに注意してください。

このアップグレード後、exchange.GetOrder(id)関数が渡す必要があるパラメータ ID の形式は次のように調整されます。BTC-USDT,123456

  • まず、なぜこのデザインが行われたのか説明しましょう。 今回、CreateOrder 関数がアップグレードされ、商品を直接指定して注文できるようになりました (注文した商品は、現在設定されている取引ペアや契約コードと異なる場合があります)。そのため、返される注文 ID に商品情報が含まれていない場合、そうすると、この注文 ID は使用できなくなります。注文を確認するときに、その注文がどのような種類(契約)のものか分からないからです。ほとんどの取引所では、注文の確認とキャンセル時に、商品コードを説明するパラメータを指定する必要があります。

  • この効果と互換性を持つ方法: exchange.IO 関数を使用して取引所の注文インターフェースを直接呼び出して注文を出す場合、戻り値には通常、取引所の元のシンボル (製品コード) と元の注文 ID が含まれます。次に、2 つを英語のカンマで連結すると、FMZ プラットフォームで定義された注文 ID が得られます。 同様に、FMZプラットフォームによってカプセル化された注文インターフェースを使用して注文を行う場合、注文IDの先頭は取引商品コードであるため、元の注文IDを使用する必要がある場合は、商品コードを削除してコンマ。

exchange.CancelOrder 関数

このアップグレードはexchange.CancelOrder()機能の影響とexchange.GetOrder()機能は同じです。

exchange.Buy関数

このアップグレードはexchange.Buy()機能の影響とexchange.GetOrder()機能は同じです。exchange.Buy()関数によって返される注文 ID は新しい構造です。たとえば、OKX 取引所で先物注文を出すときに返される ID は次のようになります。LTC-USDT-SWAP,1578360858053058560

exchange.Sell関数

このアップグレードはexchange.Sell()機能の影響とexchange.GetOrder()機能は同じです。exchange.Sell()関数によって返される注文 ID は新しい構造です。たとえば、OKX 取引所で先物注文を出すときに返される ID は次のようになります。ETH-USDT-SWAP,1578360832820125696

exchange.GetPosition関数

この関数は先物取引所オブジェクトのみでサポートされます。ポジションデータを取得するための関数 exchange.GetPosition() には、新しい名前 exchange.GetPositions() が追加され、動作はまったく同じです。

旧定義: exchange.GetPosition() 関数。パラメータを指定せずに呼び出されると、現在の取引ペアと契約コードによって設定された特定の契約のポジション データを取得します。

調整と変更後の新しい定義は、exchange.GetPosition() 関数です。パラメータを指定せずに呼び出すと、現在設定されている取引ペアと契約コードによって決定されるディメンション範囲内のすべての品種のポジションを取得します。

たとえば、現在の取引ペアは BTC_USDT で、契約コードは swap です。この時点で電話してください:

exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")

この関数は、すべての通貨の U マージン永久契約のポジション データを要求します。

exchange.GetOrders 関数

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

古い定義: exchange.GetOrders() 関数。パラメータを指定せずに呼び出されると、現在の取引ペアのすべての未処理の注文が取得されます。

調整と変更後の新しい定義は、exchange.GetOrders() 関数です。パラメータを指定せずに呼び出すと、すべてのスポット取引ペアの未完了の注文が取得されます。

  1. 先物取引所の場合:

古い定義: exchange.GetOrders() 関数。パラメータを指定せずに呼び出されると、現在の取引ペアと契約コードによって設定された特定の契約の未完了の注文がすべて取得されます。

調整と変更後の新しい定義は、exchange.GetOrders() 関数です。パラメータを指定せずに呼び出すと、現在設定されている取引ペアと契約コードによって決定されるディメンション範囲内のすべての未完了の注文が取得されます。

たとえば、現在の取引ペアは BTC_USD で、契約コードは quarter です。この時点で電話してください:

exchange.GetOrders()   // 等价于调用 exchange.GetOrders("USD.futures")

この関数は、すべてのコイン証拠金先物契約の未決済注文データを要求します。

4. 構造調整

ティッカー構造

このアップデートにより、Ticker 構造に Symbol フィールドが追加され、現在の Ticker 構造の製品の市場情報が記録されます。このフィールドの形式はexchange.GetTicker()関数のシンボルパラメータ形式はまったく同じです。

注文構造

このアップデートでは、注文構造にシンボルフィールドが追加されます。このフィールドの形式は、exchange.GetTicker()関数のシンボルパラメータ形式はまったく同じです。この更新により、注文構造の Id フィールドも変更され、製品情報と元の注文情報が新しい注文 ID 形式で記録されるようになります。参照するexchange.GetOrder()関数内の注文 ID の説明はここでは繰り返しません。

ポジション構造

このアップデートでは、Position構造にSymbolフィールドが追加されます。このフィールドの形式は、exchange.GetTicker()関数のシンボルパラメータ形式はまったく同じです。

資金調達構造

GetFundings 関数は、Funding 構造体の配列を返します。

{
    "Info": {...},               // 交易所资金费率接口原始应答数据
    "Symbol": "BTC_USDT.swap",   // FMZ平台定义的品种名称
    "Interval": 28800000,        // 8小时间隔,单位毫秒
    "Time": 1729728000000,       // 本期资金费率收取时间
    "Rate": 0.0001,              // 资金费率,即 0.01 %
}

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

ユーザーのニーズを満たすために、このアップグレードはまず実際の市場と互換性があり、バックテストシステムは1週間以内に適応されます。個々の戦略コードが影響を受ける場合は、この記事の指示に従って変更と適応を行ってください。

プラットフォーム戦略 API インターフェースのアップグレードに従って、プラットフォームのバックテスト システムの API インターフェースが同期的に更新されました。さらに、バックテスト システムには次のサポートが追加されました。

  • より多くの取引所バックテストデータをサポートします。
  • あらゆるタイプの取引所のバックテスト データをサポートします。
  • U ベース、通貨ベースのデリバリー、および永久契約の混合取引。
  • 先物取引オブジェクトは、バックテスト中の取引ペアの切り替えをサポートします。
  • バックテスト システムでは、GetTickers 関数や GetMarkets 関数などの新しい関数のサポートが追加されました。

補足アップデート

1. アカウント構造にEquityとUPnLのフィールドを追加しました

先物取引オブジェクトのメンバー関数GetAccount戻るAccount構造がフィールドで拡張されました。

  • Equity 現在の証拠金資産通貨の合計エクイティ。このフィールドをサポートしていない少数の先物取引所を除き、ほとんどの取引所がこのフィールドをサポートしています。主にリアルタイムの口座証拠金損益を計算するために使用されます。
  • UPnL 現在の証拠金資産通貨で保持されているすべてのポジションの未実現利益と損失。ほとんどの先物取引所はこのフィールドをサポートしていますが、サポートしていない取引所もいくつかあります。

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

先物取引オブジェクトのメンバー関数 SetMarginLevel がアップグレードされ、パラメータ シンボルが追加されました。

テスト例:

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    // 当前交易对为ETH_USDT,合约代码为swap,设置杠杆值为10
    exchange.SetMarginLevel(10)
    
    // 直接指定交易对BTC_USDT,合约代码swap,设置杠杆值20
    exchange.SetMarginLevel("BTC_USDT.swap", 20)
}

3. GetMarkets関数によって返されるMarket構造にCtValCcyフィールドを追加します。

  • フィールドCtValCcy契約の価値単位を記録します。契約の価値単位は、BTC、USD、ETH などです。
  • フィールドCtValこの取引商品の1契約の価値を取引所で記録します。CtValCcyフィールド レコードの通貨。例えば:CtVal0.01、CtValCcy「BTC」は、1 つの契約の価値が 0.01 BTC であることを意味します。