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

発明者による量化取引プラットフォームAPIアップグレード:戦略設計体験を向上させる

作者: リン・ハーン発明者 量化 - 微かな夢, 作成: 2024-06-28 09:08:29, 更新: 2024-11-01 10:08:12

[TOC]

img

前言

発明者による量化取引プラットフォームは,9年間の技術革新を経て,ユーザーとしては気づいていないかもしれませんが,何度も再構築された.過去2年間で,プラットフォームはユーザー体験の面では,UIを全面的にアップグレードし,よく使われる量化取引ツールを増やし,より多くの回転データサポートを追加した.

策略の設計を容易にし,取引の論理をより明確にし,初心者向けに使いやすいようにするために,プラットフォームは策略を使用するAPIインターフェースをアップグレードした. 最新バージョンのホストを使用してこれらの新しい機能を有効にすることができる. プラットフォームは古いインターフェースの呼び出しを最大限にサポートしている. APIインターフェースの追加機能などの情報は,発明者の量化取引プラットフォームの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
}

img

exchange.CreateOrder函数

増えているexchange.CreateOrder()このアップグレードの重点は,関数です.exchange.CreateOrder()関数の最大機能は,その関数のパラメータに直接下注の種類,方向を指定することである. これにより,システムの現在の設定による取引対,契約コード,取引方向などの設定に依存しない.

多種取引のシングルシナリオでは,並行シナリオではデザインの複雑性が大幅に低下します.exchange.CreateOrder()この関数の四つの参数は,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)
}

img

この3回だけ使いましたexchange.CreateOrder()函数呼び出しは3つの異なる種類,異なる方向のフューチャーオーダーに繋がります.

exchange.GetHistoryOrders函数

増えているexchange.GetHistoryOrders()この関数は,ある品種の歴史的な取引注文を取得するために使用され,この関数はまた,取引所のインターフェースのサポートが必要です.

取引所によって実行されるインターフェースは,歴史の注文を検索するために大きく異なります.

  • ページを分割する検索は,一部がサポートされ,一部はサポートされていません.
  • ある取引では,すべての問い合わせ窓間の期間,すなわちN日以上の注文は,問い合わせができない.
  • 取引所の大半は定時問い合わせをサポートしていますが,一部はサポートしていません.

この種のインターフェースを最大限の互換性でパッケージ化するには,実際の使用では,戦略のニーズや期待に合致するかどうかを注意する必要があります.

詳細な関数説明については,APIドキュメントの文法マニュアルを参照してください.

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

リアルタイムの環境でテストする:

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

img

exchange.GetPositions函数

古いバージョンでは,exchange.GetPosition()このアップグレードでは,新しい取得保持関数を追加し,関数名前のセミナルにより適している.exchange.GetPositions()・同時に,GetPosition関数も対応/アップグレードします.

Note: 2つの関数名には"s"が終わっているだけで,GetPositionsがよりセミント的に一致しているため,次のいずれもGetPositionsを使用することをお勧めします.

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

  • exchange.GetPositions (交換.ゲットポジション) 実行する場合は,この2つのパラメータを取引は / 契約コードこの設定は,現在の次元ですべての品種を保持するデータを要求します.

  • 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取引所の差額コンファレンスの契約. USD.futures_ff:Futures_Kraken取引所の混合担保金取引比率について. USD.swap_pf:Futures_Kraken 取引所の混合担保証券永続契約.

    エクスチェンジAPIがサポートしていない次元については,呼び出し時にエラーが返される.

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恒久契約の保有データを入手できます.

伝達されない場合exchange.GetPositions()関数のパラメータでは,取引所が上線したすべてのU位永続契約の保有データを取得できる (現在の取引対はBTC_USDTであり,契約は現在の取引対,契約範囲要求に応じてスワップ) この時点でコールに等価である.exchange.GetPositions("USDT.swap")要求範囲を指定します.

exchange.GetFundings函数

新しいGetFundings関数は,フューチャー取引所の永続契約の資金率を取得する. 関数は参数 symbol を持っている. 関数はFunding構造の配列を返します.

  • 指定シンボルパラメータ:指定品種の資金率情報構造配列 (Funding配列) を返します.シンボルパラメータは,GetOrders/GetPositions関数のような範囲を設定できます.
  • シンボルのパラメータを指定しない:現在の取引対,契約コードの位置の次元に従って,現在の次元のすべての種類のデータを返します. GetOrders/GetPositions関数のようなメカニズム.
  • 取引所が特定の品種を指定しなければならない場合,シンボルパラメータ,すなわち特定の品種のコード,例えば:BTC_USDT.swap〔パラメータを伝達しないこと,または伝達範囲関数がエラーを返します. symbolパラメータはサポートされていません〕

2 APIのアップグレード

exchange.GetTicker函数

行政関数exchange.GetTicker()このアップグレードの主な目的は,シンボルパラメータを追加することである. この機能は,現在の取引対から切り離すことができる. 契約コードはパラメータ指定された種類情報を直接パラメータに従って要求する. コード作成プロセスを簡素化. 同時に,非伝達型呼び出し方式を最大限に互換性のあるプラットフォームの古い戦略を保持する.

パラメータsymbol取引所についてexchange商品は現貨/先物で,以下の形式があります.

  • 現金取引対象 形式は:AAA_BBBAAAはベース通貨,BBBはクォート通貨.通貨名はすべて大文字で書かれています. 例えば:BTC_USDT 現金取引ペア.
  • フューチャー取引所対象 形式は:AAA_BBB.XXXAAAはベース通貨,BBBはクォート通貨,XXXは契約コード,例えば永続契約スワップである.通貨名はすべて大文字で,契約コードは小文字で書かれています. 例えば:BTC_USDT.swap,BTCのU位永続契約.

テストは,BTCの現場環境で行われます.

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

特定の品種の市場データ設計を要求することは,よりシンプルになります.

exchange.GetDepth函数

この関数は,この関数と同じです.exchange.GetDepth()この関数は,シンボルパラメータも追加した. 深いデータを要求するときに直接品種を指定することが実現された.

テストは,BTCの現場環境で行われます.

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

exchange.GetTrades函数

この関数は,この関数と同じです.exchange.GetTrades()この関数には symbol 参数も追加されている.市場取引データを要求するときに直接品種を指定することが可能である.

テストは,BTCの現場環境で行われます.

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

このアップグレードも同等の対応が可能です.exchange.Go()函数同時呼び出しのプラットフォームAPIインターフェースでは,シンボルパラメータ指定品種情報を伝達する.

exchange.GetRecords函数

GetRecordsは,Symbol参数で直接要求されるK線データの種類情報をサポートするほか,K線周期を指定する元のperiod参数を維持し,要求期間を指定する望ましいK線長さを指定するlimit参数を追加した.また,旧バージョンのGetRecords関数で Period周期参数のみを伝達する呼び出し方法に対応している.

exchange.GetRecords()函数への呼び出し方法:

  • exchange.GetRecords (英語) について 任意のパラメータを指定せずに,現在の取引対/契約コードに対応した品種を要求するときに,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線インターフェースへの呼び出し) が生成される.

テストは,BTCの現場環境で行われます.

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

img

exchange.GetOrders函数

追加された GetOrders 機能symbolパラメータは,特定の品種を指定し,その品種の未完成注文 (下記のリスト) を問い合わせることができる.また,指定した次元範囲の全品種の未完成注文 (下記のリスト) を問い合わせるサポートもする.

exchange.GetOrders()函数への呼び出しには次の方法があります.

  • exchange.GetOrders (交換.Getオーダー)) フューチャー取引所では,任意のパラメータが送信されない場合,取引は / 契約コード設定は,現在の次元範囲の全品種に対するすべての未完成の注文 ("挂行リスト") を要求します.
    現貨取引所では,任意のパラメータが送信されない場合,すべての現貨品種に対する未完了注文 (掛けた注文) を要求します.
  • exchange.GetOrders ( BTC_USDT.swap) または exchange.GetOrders ( BTC_USDT) は,この2つのオプションで提供されています. フューチャー取引所:exchange.GetOrders (BTC_USDT.swap) では,BTCのUSDT本位永続契約のすべての未完了オーダー () を調べます. 現金取引所:exchange.GetOrders ( BTC_USDT) では,BTC_USDT現金取引ペアのすべての未完了オーダー () を調べます.
  • フューチャー取引所のみのサポート exchange.GetOrders (USDT.swap) 指定した次元範囲要求全品種未完了注文 (列) 次元区分範囲は,GetPositions関数内の範囲と一致する. 例えば: exchange.GetOrders (USDT.swap) U本位永続契約範囲内のすべての品種に対する未定注文 (予約) を要求する.

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),契約コード (swap) の次元範囲の全品種の未完了オーダー (Pending Order) を要求する.
  • パラメータを指定するETH_USDT.swapパラメータでは,ETHを要求するUSDT本位永続契約の未完了オーダー (掛けるオーダー) を表示します.
  • 文字列を入力する"USDT.swap"USDTの永続契約の未完成の注文をすべて要求します.

exchange.GetPosition函数

また,Symbol パラメータを追加し,特定の要求されたスタッキングデータの種類情報を指定することができます.exchange.GetPositions()完全に一致している.

exchange.IO函数

についてexchange.IO("api", ...)函数呼び出し方式は,すべての取引所のオブジェクトにアップグレードされ,完全なリクエストアドレスの機能を直接転送するサポートが提供されています.

OKX のインターフェースを呼び出す場合:

GEThttps://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 インタフェースへの影響

exchange.GetOrder函数

このアップグレードは主に影響しています.exchange.GetOrder(id)関数のパラメータid,idパラメータは,元の取引所の注文idから,取引品種を含む文字形式に変更された. FMZプラットフォーム上のすべてのパッケージされた注文Idはこの形式である.

例えば:

  • 取引所オーダーで定義される取引所の原始オーダーのIdは:123456このアップグレードの前に,GetOrder関数を呼び出すには,入力された注文Idは,123456
  • 取引所オーダーで定義された取引所名前の商品コード:BTC-USDT│ │ ここで言及しているのは,FMZプラットフォームが定義する取引対ではなく,取引所が命名した取引品種コードである.

このアップグレードの後,exchange.GetOrder(id)函数が入力したいパラメータidのフォーマットは:BTC-USDT,123456

  • デザインの理由を説明します. このアップグレードでは,CreateOrder関数が直接品種を指定する ("品種と現在設定されている取引対,契約コードは異なる可能性があります") 注文IDが返された場合,品種情報を含まない場合は,この注文IDは使用できません. 特定の請求書が到着するときに,その注文がどのような品種 (契約書) かがわからないため,ほとんどの取引所請求書や撤回は,品種コードを記述するパラメータを指定する必要があります.

  • この影響はどのように調和できるのか? もし下令は,exchange.IO関数が直接取引所の下令インターフェースを呼び出して下令を行う場合,返される値は,通常,取引所の原始シンボル (種コード) と原始注文idを含みます.両方を英語コマで拼接すると,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 (※) 函数,任意のパラメータを指定せずに呼び出すとき,すべての即時取引の品種に対する未完了注文を取得する.

2 期貨取引所について:

古い定義:exchange.GetOrders (※) 関数は,任意のパラメータを指定せずに呼び出すとき,現在の取引対,契約コード設定の特定の契約のすべての未完了注文を取得します.

変更後,新定義:exchange.GetOrders (※) 機能は,任意のパラメータを指定せずに呼び出すとき,現在の設定取引対,契約コードで定義された次元範囲内のすべての未完了注文を取得します.

例えば,現在の取引対はBTC_USDで,契約コードはquarterです.

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

この関数は,すべての通貨のコイン本位換算比率に関する未完了注文データを要求します.

4 構造の調整

チッカー構造物

この更新により,Ticker構造に Symbol フィールドが追加され,現行のTicker構造がどの種類であるかを記録する.exchange.GetTicker()函数のシンボル参数形式は完全に一致している.

Order 構造

この更新では,Order構造体に Symbol フィールドが追加されました.exchange.GetTicker()この更新では,Order構造体の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, アカウント 構造 新しいフィールド 株式, UPnL

フューチャー取引所のオブジェクトのメンバー関数GetAccount戻ってきたAccount構造はフィールドを拡張した.

  • 株式 現在,特定の先物取引所がサポートしない限り,大部分がこのフィールドをサポートしている. 主にリアルタイムアカウントの先物収益と損失を計算するために使用される.
  • 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 Structure に CtValCcy フィールドを追加する

  • フィールドCtValCcy契約の価値の単位を記録します. 契約の価値の単位は,BTC,USD,ETHなどかもしれません.
  • フィールドCtVal取引品の取引所における契約の対価を記録する単位CtValCcy記入された通貨は,例えば:CtValメディアは,CtValCcy"BTC"とは,0.01BTCの契約を意味します.

もっと

ワ-エムン返信IDは,取引の名前も付いており,長い研究を経て,注文後,ログの情報が表示されない,そして管理者が更新したためでしょうか.

張小宝郎/upload/asset/2ffc0f961149326b78aed.png この問題は,このインターフェースアップデートによって引き起こされたのでしょうか?

エクネムース 希望exchange.Buy函数能增加开止损单的功能。。

ナンセグ前列の概要

ワ-エムンいいわ

発明者 量化 - 微かな夢このページでは,この問題について詳しく説明します.

ワ-エムンextMsg1は表示されていません.

発明者 量化 - 微かな夢こんにちは,オーダーIDは,直接品種指定の注文をアップグレードしたため,必須の変更です. オーダーIDには品種情報が含まれなければなりません. そうでなければ,このオーダーがどの品種であるか確認することはできません. あなたは,下記の命令の後に表示されないメッセージ,つまり:exchange.Buy ((price, amount, extMsg1, extMsg2) を呼び出すとき,extMsg1, extMsg2 はログに表示されないのですか?

発明者 量化 - 微かな夢こんにちは,現在の取引所設定,取引ペア,契約コード設定を送信してください.

発明者の量化テストコードとコンフィギュレーションの詳細を 工事書に送信してください エンジニアはすぐにご連絡ください

発明者 量化 - 微かな夢取引所の条件化メカニズムなどの違いは大きく,支持度も異なりますが,この間調査してみましょう.

発明者 量化 - 微かな夢サポートありがとうございました. 使用問題がある場合は,お問い合わせやメッセージを送信してください.