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

市場

exchange.GetTicker

現時点での設定された取引ペア,契約コード,すなわちティッカーデータに対応するスポットまたはコントラクトの {@struct/Ticker Ticker} 構造を取得します.GetTicker ()交換オブジェクト {@var/EXCHANGE exchange} のメンバー関数であり,exchange対象メンバーの関数 (方法) は,exchange文書には繰り返されないでしょう

についてexchange.GetTicker()データの要求が成功すると {@struct/Ticker Ticker} 構造を返し,データ要求が失敗すると null 値を返します. {@struct/Ticker Ticker},ゼロ値

交換する.GetTicker() 交換する.GetTicker (タッカーのシンボル)

パラメータsymbol要求された {@struct/Ticker Ticker} データに対応する特定の取引ペアとコントラクトコードを指定するために使用されます.このパラメータが送信されない場合は,現在設定されている取引ペアとコントラクトコードの市場データがデフォルトで要求されます. 呼び出すときexchange.GetTicker(symbol)機能exchangeUSDT と BTC と取引される通貨で市場データを要求する必要がある場合,パラメータはsymbolこれは:"BTC_USDT"形式はFMZプラットフォームで定義された取引ペア形式です. 呼び出すときexchange.GetTicker(symbol)機能exchangeBTCのU標準永久契約の市場データを要求する必要がある場合,パラメータsymbolこれは:"BTC_USDT.swap"形式は,トレーディングペアそして契約コードFMZプラットフォームで定義され,文字. で区切られる. 呼び出すときexchange.GetTicker(symbol)機能exchangeBTCのU標準オプション契約の市場データを要求する必要がある場合,パラメータsymbolこれは:"BTC_USDT.BTC-240108-40000-C"(Binance Option BTC-240108-40000-C を例として) 形式は,トレーディングペアFMZプラットフォームで定義され,取引所によって定義された特定のオプション契約コードは,文字.で分離されます.

シンボル 偽り 文字列

function main(){
    // If it is a futures exchange object, set the contract code first, e.g. set it as a perpetual contract
    // exchange.SetContractType("swap")

    var ticker = exchange.GetTicker()
    /*
        The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
        At this point, the ticker is null, and it will cause an error when accessing ticker.High, so when testing this code, make sure that the exchange interface can be accessed.
    */
    Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume)
}
def main():
    ticker = exchange.GetTicker()
    Log("Symbol:", ticker["Symbol"], "High:", ticker["High"], "Low:", ticker["Low"], "Sell:", ticker["Sell"], "Buy:", ticker["Buy"], "Last:", ticker["Last"], "Open:", ticker.Open, "Volume:", ticker["Volume"])
void main() {
    auto ticker = exchange.GetTicker();
    Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume);
}

フューチャー取引対象 (すなわち,exchangeまたはexchanges[0]契約コードを設定するには,exchange.SetContractType()呼び出しが繰り返されない.

function main() {
    var ticker = exchange.GetTicker("BTC_USDT")
    Log(ticker)
}
def main():
    ticker = exchange.GetTicker("BTC_USDT")
    Log(ticker)
void main() {
    auto ticker = exchange.GetTicker("BTC_USDT");
    Log(ticker);
}

試しにsymbol特定のシンボル (スポットシンボル) の市場データを要求するパラメータ.

についてTicker返されたデータexchange.GetTicker()バックテストシステムで機能します.HighそしてLow市場から1つ購入し,その時点で1つ販売.Ticker返されたデータexchange.GetTicker()実際の市場での機能.HighそしてLow値がカプセル化された交換によって返されるデータに基づいています.Tickインターフェースで,特定の期間 (通常24時間) の最高値と最低値が表示されます. 支援しない取引所exchange.GetTicker()機能:

機能名 サポートされていないスポット交換 サポートされていない先物取引
GetTicker をインストールする フューチャーズ_Aevo

{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange

exchange.GetDepth

現時点で設定された取引ペア,契約コード,すなわちオーダーブックデータに対応するスポットまたは契約の {@struct/Depth Depth} 構造を取得します.

についてexchange.GetDepth()データの要求が成功した場合 {@struct/Depth Depth} 構造を返し,データ要求が失敗した場合 null を返します. {@struct/Depth Depth},ゼロ値

交換する.GetDepth ((() 交換.GetDepth (深度) シンボル

パラメータsymbol要求された {@struct/Depth Depth} データに対応する特定の取引ペアとコントラクトコードを指定するために使用されます.このパラメータが送信されない場合,現在設定されている取引ペアとコントラクトコードのオーダーブックデータはデフォルトで要求されます.exchange.GetDepth(symbol)機能exchangeUSDT と BTC と取引通貨で注文簿データを取得するために要求する必要があります.symbolこれは:"BTC_USDT"FMZ プラットフォームで定義された取引ペア形式です.exchange.GetDepth(symbol)機能exchangeBTCのU標準永続契約のオーダーブックデータを要求する必要がある場合,パラメータはsymbolこれは:"BTC_USDT.swap"形式は,トレーディングペアそして契約コードFMZ プラットフォームによって定義され,文字で区切られています.exchange.GetDepth(symbol)機能exchangeBTCのU標準オプション契約のオーダーブックデータを要求する必要がある場合,パラメータsymbolこれは:"BTC_USDT.BTC-240108-40000-C"(Binance Option BTC-240108-40000-C を例として) 形式は,トレーディングペアFMZプラットフォームで定義され,取引所によって定義された特定のオプション契約コードは,文字.で分離されます. シンボル 偽り 文字列

function main(){
    var depth = exchange.GetDepth()
    /*
        The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
        At this point, the depth is null, which will cause an error when accessing depth.Asks[1].Price, so make sure you can access the exchange interface when testing the code.
    */
    var price = depth.Asks[1].Price
    Log("Sell 2 price is:", price)
}
def main():
    depth = exchange.GetDepth()
    price = depth["Asks"][1]["Price"]
    Log("Sell 2 price is:", price)
void main() {
    auto depth = exchange.GetDepth();
    auto price = depth.Asks[1].Price;
    Log("Sell 2 price is:", price);
}

テストexchange.GetDepth()機能:

function main() {
    // BTC U-based perpetual contract
    var depth = exchange.GetDepth("BTC_USDT.swap")
    Log(depth)
}
def main():
    depth = exchange.GetDepth("BTC_USDT.swap")
    Log(depth)
void main() {
    auto depth = exchange.GetDepth("BTC_USDT.swap");
    Log(depth);
}

設定されたときexchange取引対象は,先物として,symbol特定のシンボル (フューチャーシンボル) のオーダーブックデータを要求するパラメータ.

バックテストシステムでは,各グレードのデータがexchange.GetDepth()機能シミュレーションバックテストシステムでは,バックテストによって返されるデータは,exchange.GetDepth()機能リアル・ティックバックテストは 2階層の深層スナップショットです

{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker.GetTicker}, {@fun/Market/Market/

exchange.GetTrades

{@struct/Trade Trade} の構造配列を取得します. 現時点での設定された取引ペア,契約コード,すなわち市場取引データに対応するスポットまたは契約.

についてexchange.GetTrades()この関数は,データ要求が成功した場合に {@struct/Trade Trade} 構造の配列を返し,データ要求が失敗した場合に null 値を返します. {@struct/Trade Trade}配列,ゼロ値

交換.GetTrades (ゲットトレード) 交換.GetTrades (シンボル)

パラメータsymbol要求された {@struct/Trade Trade} 配列データに対応する特定の取引ペアと契約コードを指定するために使用されます.このパラメータが通過しなければ,現在設定されている取引ペアと契約コードの最新の取引記録データがデフォルトで要求されます.exchange.GetTrades(symbol)機能exchangeUSDT と BTC と取引される通貨で注文簿データを要求する必要がある場合,パラメータsymbolこれは:"BTC_USDT"FMZ プラットフォームで定義された取引ペア形式です.exchange.GetTrades(symbol)機能exchangeBTCのU標準永続契約のオーダーブックデータを要求する必要がある場合,パラメータはsymbolこれは:"BTC_USDT.swap"形式は,トレーディングペアそして契約コードFMZ プラットフォームによって定義され,文字で区切られています.exchange.GetTrades(symbol)機能exchangeBTCのU標準オプション契約のオーダーブックデータを要求する必要がある場合,パラメータsymbolこれは:"BTC_USDT.BTC-240108-40000-C"(Binance Option BTC-240108-40000-C を例として) 形式は,トレーディングペアFMZプラットフォームで定義され,取引所によって定義された特定のオプション契約コードは,文字.で分離されます. シンボル 偽り 文字列

function main(){
    var trades = exchange.GetTrades()
    /*
        The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
        At this point, trade is null. When accessing trade[0].Id, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
    */
    Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type)
}
def main():
    trades = exchange.GetTrades()
    Log("id:", trades[0]["Id"], "time:", trades[0]["Time"], "Price:", trades[0]["Price"], "Amount:", trades[0]["Amount"], "type:", trades[0]["Type"])
void main() {
    auto trades = exchange.GetTrades();
    Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type);
}

試験するexchange.GetTrades()機能:

function main() {
    // BTC's U-based perpetual contract
    var trades = exchange.GetTrades("BTC_USDT.swap")
    Log(trades)
}
def main():
    trades = exchange.GetTrades("BTC_USDT.swap")
    Log(trades)
void main() {
    auto trades = exchange.GetTrades("BTC_USDT.swap");
    Log(trades);
}

設定されたときexchange取引対象は,先物として,symbol特定のシンボル (フューチャーシンボル) の市場取引記録データを要求するパラメータ.

exchange.GetTrades()現行の取引ペア,市場の取引履歴 (自分のものではなく) を取得する機能. いくつかの取引所はこの機能をサポートせず,返される特定のデータは,取引記録の範囲が取引所に依存し,特定の状況に応じて処理する必要がある程度です. 返されるデータは配列で,各要素が時間順に並べられ,exchange.GetRecords ()この関数は同じ順序のデータを返します つまり,配列の最後の要素は現在の時間に近いデータです についてexchange.GetTrades()この関数で表示される値が,シミュレーションバックテストシステムでバックテストします.exchange.GetTrades()使用するときに機能リアル・ティックバックテストシステムにおけるバックテストは,オーダーフローのスナップショットデータ,つまり {@struct/Trade Trade} 構造配列です. 支援しない取引所exchange.GetTrades()機能:

機能名 サポートされていないスポット交換 サポートされていない先物取引
GetTrades は Futures_BitMart / Futures_Bibox について

{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {

exchange.GetRecords

現在設定されている取引ペア,契約コード,すなわちKラインデータに対応するスポットまたはコントラクトの {@struct/Record Record} 構造配列を取得します.

についてexchange.GetRecords()この関数は,データ要求が成功すると {@struct/Record Record} 構造の配列を返し,データ要求が失敗すると null 値を返します. {@struct/Record Record}配列,ゼロ値

交換.GetRecords (取得記録) 交換.GetRecords (レコードのシンボル) 交換.GetRecords (記号,点) exchange.GetRecords (シンボル,ピリオド,制限) 交換.GetRecords (期間) 交換.GetRecords (期間,制限)

パラメータsymbolこのパラメータが送信されない場合,現在設定されている取引ペアと契約コードのK線データはデフォルトで要求されます.exchange.GetRecords(symbol)機能exchangeUSDT と BTC と取引通貨でデータを取得するために要求する必要がある場合,パラメータsymbolこれは:"BTC_USDT"FMZ プラットフォームで定義された取引ペア形式です.exchange.GetRecords(symbol)機能exchangeBTCのU標準永続契約のオーダーブックデータを要求する必要がある場合,パラメータはsymbolこれは:"BTC_USDT.swap"形式は,トレーディングペアそして契約コードFMZ プラットフォームによって定義され,文字で区切られています.exchange.GetRecords(symbol)機能exchangeBTCのU標準オプション契約のオーダーブックデータを要求する必要がある場合,パラメータsymbolこれは:"BTC_USDT.BTC-240108-40000-C"(Binance Option BTC-240108-40000-C を例として) 形式は,トレーディングペアFMZプラットフォームで定義され,取引所によって定義された特定のオプション契約コードは,文字.で分離されます. シンボル 偽り 文字列 パラメーターperiod要求されたK線データの期間を指定します.例えば: {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15}など.パラメータの値period定義された標準周期だけでなく,秒で整数値も通過できます.このパラメータが通過しなければ,デフォルトで要求されるK線データの期間は,現在の戦略リアルタイム/バックテスト構成のデフォルトK線周期です. 期間 偽り 番号 パラメーターlimitこのパラメータが送信されない場合,デフォルトの要求長は,交換K線インターフェースの時点で要求される最大数のK線バーである.このパラメータは,交換K線データをクエリするページングを引き起こし,ページングクエリ中に関数呼び出しの時間の消費が増加する可能性があります. 制限 偽り 番号

function main() {
    // Print K-line data with a K-line period of 120 seconds (2 minutes)
    Log(exchange.GetRecords(60 * 2))         
    // Print K-line data with a K-line period of 5 minutes
    Log(exchange.GetRecords(PERIOD_M5))      
}
def main():
    Log(exchange.GetRecords(60 * 2))
    Log(exchange.GetRecords(PERIOD_M5))
void main() {
    Log(exchange.GetRecords(60 * 2)[0]);
    Log(exchange.GetRecords(PERIOD_M5)[0]);
}

カスタム期間のK線データを取得します

function main() {
    var records = exchange.GetRecords(PERIOD_H1)
    /*
        The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
        At this point, records is null. When accessing records[0].Time, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
    */
    Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High)
    Log("The second k-line data is Time:", records[1].Time ,"Close:", records[1].Close)
    Log("Current K-line (latest)", records[records.length-1], "Previous K-line", records[records.length-2])
}
def main():
    records = exchange.GetRecords(PERIOD_H1)
    Log("The first k-line data is Time:", records[0]["Time"], "Open:", records[0]["Open"], "High:", records[0]["High"])
    Log("The second k-line data Time:", records[1]["Time"], "Close:", records[1]["Close"])
    Log("Current K-line (latest)", records[-1], "Previous K-line", records[-2])
void main() {
    auto records = exchange.GetRecords(PERIOD_H1);
    Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High);
    Log("The second k-line data Time:", records[1].Time, "Close:", records[1].Close);
    Log("Current K-line (latest)", records[records.size() - 1], "Previous K-line", records[records.size() - 2]);
}

出力K線バーデータ:

function main() {
    var records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
    Log(records)
}
def main():
    records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
    Log(records)
void main() {
    auto records = exchange.GetRecords("BTC_USDT.swap", 60, 100);
    Log(records);
}

設定されたときexchange取引対象は,先物として,symbol, periodそしてlimit特定の製品 (将来の製品) のK線データを要求するパラメータ

バックテストと実際の取引ページで設定できます. パラメータを指定するとexchange.GetRecords()函数で,そのパラメータ期間に対応するK線データが取得されます.関数を呼び出すときにパラメータが指定されていない場合は,バックテストと実際の市場パラメータに設定されたK線期間に従って対応するK線データが返されます. 返される値は,数列です.Record蓄積されたK線バーの上限は,exchange.SetMaxBarLen()関数設定. 設定されていない場合のデフォルト制限は5000バーです. K線データが K線バー蓄積制限に達すると,K線バーを追加して最古のK線バーを削除することによって更新されます (例えば,キューイン/アウト).TradeK線を生成するために,リアルタイムで エクスチェンジのKラインインターフェースがページングクエリをサポートしている場合,複数のAPIリクエストがexchange.SetMaxBarLen()線長を大きく設定する機能です 必要なのはexchange.GetRecords()- バックテストシステムは,バックテストの時間範囲が開始される前に (デフォルトは5000で,バックテストシステムの設定とデータの量は返された最終数値に影響を与える) 初期Kラインデータとして,一定の数のKラインバーを事前に取得します. - 実際の取引中に得られたKラインバーの数は,取引所のKラインインターフェースから得ることができる最大量のデータに基づいています. についてperiod5 秒間でK線データを取得する要求です.periodパラメータは60で割り切れない (つまり,表示された期間は分で割り切れない). 基礎システムでは,exchange.GetTrades()取引記録データを取得し,必要なK線データを合成します.periodパラメータが60で割り切れる場合,必要なK線データは最低1分間のK線データを用い合成されます (可能な限り,必要なK線データはより長い期間を使って合成されます). バックテストシステムにおけるシミュレーションレベルのバックテストには,基礎K線周期の設定が必要である (バックテストシステムがレベルバックテストをシミュレートするとき,対応するK線データは,セットの基礎K線周期に従ってTickデータを生成するために使用される).戦略で得られたK線データの期間は,基礎K線周期よりも小さくならないことに注意すべきである.シミュレーションレベルのバックテストでは,バックテストシステムの各期間のK線データは,基礎K線期間のK線データから合成される. についてC++この言語は,自分のK線データを構築する必要がある場合,次のコード例を持っています.

#include <sstream>
void main() { 
    Records r;
    r.Valid = true;
    for (auto i = 0; i < 10; i++) {
        Record ele;
        ele.Time = i * 100000;
        ele.High = i * 10000;
        ele.Low = i * 1000;
        ele.Close = i * 100;
        ele.Open = i * 10;
        ele.Volume = i * 1;
        r.push_back(ele);
    }
    // Output display: Records[10]
    Log(r);                      
    auto ma = TA.MA(r,10);       
    // Output display: [nan,nan,nan,nan,nan,nan,nan,nan,nan,450]
    Log(ma);                     
}

支援しない取引所exchange.GetRecords()機能:

機能名 サポートされていないスポット交換 サポートされていない先物取引
GetRecords を取得する ザイフ / コインチェック / ビットフライヤー フューチャーズ_Aevo

{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.SetMaxBarLen exchange.SetMaxBarLen}, {@fun/Market/exchange.SetMaxBarLen exchange.SetMaxBarLen}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetDepth exchange.GetDepth exchange

exchange.GetPeriod

FMZ Quant Trading プラットフォームのウェブサイトページで設定されたK-ライン期間を取得して,バックテストとライブ取引で戦略を実行します.exchange.GetRecords()パラメータを通過することなく機能する.

数秒で整数値を表示します 番号

交換.GetPeriod (取得期間)

function main() {
    // For example, the K-line period set on the website page of the FMZ Quant Trading platform during backtesting and live trading is 1 hour.
    var period = exchange.GetPeriod()
    Log("K-line period:", period / (60 * 60), "hours")
}
def main():
    period = exchange.GetPeriod()
    Log("K-line period:", period / (60 * 60), "hours")
void main() {
    auto period = exchange.GetPeriod();
    Log("K-line period:", period / (60 * 60.0), "hours");
}

{@fun/Market/exchange.GetRecords exchange.GetRecords} 取引先を チェックする

exchange.SetMaxBarLen

K線の最大長さを設定します

交換する.SetMaxBarLen ((n)

パラメータn最大K線長を指定するために使用されます. n 本当 番号

function main() {
    exchange.SetMaxBarLen(50)
    var records = exchange.GetRecords()
    Log(records.length, records)
}
def main():
    exchange.SetMaxBarLen(50)
    r = exchange.GetRecords()
    Log(len(r), r)
void main() {
    exchange.SetMaxBarLen(50);
    auto r = exchange.GetRecords();
    Log(r.size(), r[0]);
}

についてexchange.SetMaxBarLen()機能は暗号通貨戦略の実行時間には2つの側面に影響を与える:

  • 最初の呼び出しで得られるK線バー (Bars) の数に影響を与える.
  • K線バー (バー) の最大数に影響を与える.

{@fun/Market/exchange.GetRecords exchange.GetRecords} 取引先を チェックする

exchange.GetRawJSON

元のコンテンツを最後に戻すrest現在の交換オブジェクトの要求 ({@var/EXCHANGE exchange}, {@var/EXCHANGE/exchanges exchanges}).

回答データrest要求する 文字列

交換する.GetRawJSON()

function main(){
    exchange.GetAccount(); 
    var obj = JSON.parse(exchange.GetRawJSON());
    Log(obj);
}
import json
def main():
    exchange.GetAccount()
    obj = json.loads(exchange.GetRawJSON())
    Log(obj)
void main() {
    auto obj = exchange.GetAccount();
    // C++ does not support the GetRawJSON function
    Log(obj);
}

についてexchange.GetRawJSON()この機能は,実際の取引にのみサポートされています.C++ language.

{@var/EXCHANGE exchange} 交換する

exchange.GetRate

交換対象の為替レートを取得します.

交換対象の為替レートの現在の値. 番号

エクスチェンジ.GetRate ((()

function main(){
    Log(exchange.GetTicker())
    // Set up exchange rate conversion
    exchange.SetRate(7)
    Log(exchange.GetTicker())
    Log("Current exchange rate:", exchange.GetRate())
}
def main():
    Log(exchange.GetTicker())
    exchange.SetRate(7)
    Log(exchange.GetTicker())
    Log("Current exchange rate:", exchange.GetRate())
void main() {
    Log(exchange.GetTicker());
    exchange.SetRate(7);
    Log(exchange.GetTicker());
    Log("Current exchange rate:", exchange.GetRate());
}

もしexchange.SetRate()換算率を設定するために呼び出されていなかった場合,exchange.GetRate()この関数は,現在表示されている通貨 (quoteCurrency) に関するデータが変換されていないことを表示します. 通貨レートの値が,exchange.SetRate()例えばexchange.SetRate(7)価格情報,例えば,オート,深さ,および注文価格exchange交換対象は,設定された為替レートに掛けることで変換されます.7- わかった もしexchange呼び出し後,名義通貨としてUSDと交換に対応します.exchange.SetRate(7)リアルマーケットのすべての価格は,CNYに近い価格に変換されます.7この時点で,交換レートの値は,exchange.GetRate()7.

{@fun/Trade/exchange.SetRate exchange.SetRate} {@fun/Trade/exchange.SetRate exchange.SetRate} {@fun/Trade/exchange.SetRate exchange.SetRate} {@fun/Trade/exchange.SetRate} {@trade.exchange.setRate} {@trade.exchange.setRate.setRate.setRate} {@fun/Trade.exchange.setRate.setRate} {@trade.exchange.setRate.setRate}

exchange.SetData

についてexchange.SetData()戦略が実行されているときに読み込まれるデータを設定するために使用されます.

パラメータの後の文字列の長さvalueJSONコード化 番号

exchange.SetData ((キー,値) を表示する

データ収集の名前 キー 本当 文字列 読み込むデータexchange.SetData()配列のデータ構造があります. データ構造は,配列が要求するデータ形式と同じです.exchange.GetData()外部データ要求時の機能,すなわち:"schema": ["time", "data"]- わかった 価値 本当 配列

/*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() {
    var data = [
        [1579536000000, "abc"],
        [1579622400000, 123],
        [1579708800000, {"price": 123}],
        [1579795200000, ["abc", 123, {"price": 123}]]
    ]
    exchange.SetData("test", data)
    while(true) {
        Log(exchange.GetData("test"))
        Sleep(1000)
    }
}
'''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"}]
'''              

def main():
    data = [
        [1579536000000, "abc"],
        [1579622400000, 123],
        [1579708800000, {"price": 123}],
        [1579795200000, ["abc", 123, {"price": 123}]]
    ]
    exchange.SetData("test", data)
    while True:
        Log(exchange.GetData("test"))
        Sleep(1000)
/*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"}]
*/              

void main() {
    json data = R"([
        [1579536000000, "abc"],
        [1579622400000, 123],
        [1579708800000, {"price": 123}],
        [1579795200000, ["abc", 123, {"price": 123}]]
    ])"_json;
    
    exchange.SetData("test", data);
    while(true) {
        Log(exchange.GetData("test"));
        Sleep(1000);
    }
}

パラメータのデータがvalue形式は,dataタイムスタンプが表示されているように,1579622400000時間に対応します2020-01-22 00:00:00この時間後に実行すると,呼び出すexchange.GetData()次のデータタイムスタンプの前にデータを取得する関数1579708800000時間2020-01-23 00:00:00受け取るものは[1579622400000, 123]プログラムが実行され続けるにつれて,そのデータの内容,時間の変化,など,データ項目を項目ごとに取得します.次の例では,実行時に (バックテストまたはライブ取引),現在の瞬間はタイムスタンプに達または超過します.1579795200000についてexchange.GetData()函数が呼び出し,返した値は:{"Time":1579795200000,"Data":["abc", 123,{"price":123}]}. "Time":1579795200000対応する1579795200000データで[1579795200000, ["abc", 123, {"price": 123}]]. "Data":["abc", 123, {"price": 123}]データに対応する["abc", 123, {"price": 123}]][1579795200000, ["abc", 123, {"price": 123}]].

読み込まれるデータは,あらゆる計測可能な情報の戦略的定量評価に使用される経済指標,業界データ,関連指標などである.

{@fun/Market/exchange.GetData exchange.GetData} 情報を交換する

exchange.GetData

についてexchange.GetData()この関数は,データ読み込みをexchange.SetData()外部リンクによって提供されます.

データ収集の記録 オブジェクト

交換する.GetData (キー) 交換.GetData (キー,タイムアウト)

データ収集の名前 キー 本当 文字列 ミリ秒でキャッシュタイムアウトを設定します. リアルトレードでは1分キャッシュタイムアウトをデフォルトで設定します. タイムアウト 偽り 番号

/*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)
    }
}
'''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"}]
'''  
def main():
    exchange.SetData("test", [[1579536000000, _D(1579536000000/1000)], [1579622400000, _D(1579622400000/1000)], [1579708800000, _D(1579708800000/1000)]])
    while True:
        Log(exchange.GetData("test"))
        Sleep(1000 * 60 * 60 * 24)
/*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"}]
*/    
void main() {
    json arr = R"([[1579536000000, ""], [1579622400000, ""], [1579708800000, ""]])"_json;
    arr[0][1] = _D(1579536000000);
    arr[1][1] = _D(1579622400000);
    arr[2][1] = _D(1579708800000);
    exchange.SetData("test", arr);
    while(true) {
        Log(exchange.GetData("test"));
        Sleep(1000 * 60 * 60 * 24);
    }
}

データを直接書き込むための電話です

/*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() {
    while(true) {
        Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
        Sleep(1000)
    }
}
'''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"}]
'''              

def main():
    while True:
        Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
        Sleep(1000)
/*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"}]
*/              

void main() {
    while(true) {
        Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
        Sleep(1000);
    }
}

外部リンクを通じてデータを要求するサポート,要求されたデータのフォーマット:

{
    "schema":["time","data"],
    "data":[
        [1579536000000, "abc"],
        [1579622400000, 123],
        [1579708800000, {"price": 123}],
        [1579795200000, ["abc", 123, {"price": 123}]]
    ]
}

どこにschemaロードされたデータ本体の各レコードのデータ形式で,["time", "data"]入力データ形式に対応するdata属性 保存されているものdataアトリビュートとは,データの本体であり,各エントリにはミリ秒レベルのタイムスタンプとデータ内容 (JSONでコードできる任意のデータ) が含まれます. Goで書かれたテストのためのサービスプログラム:

package main
import (
    "fmt"
    "net/http"
    "encoding/json"
)                

func Handle (w http.ResponseWriter, r *http.Request) {
    defer func() {
        fmt.Println("req:", *r)
        ret := map[string]interface{}{
            "schema": []string{"time","data"},
            "data": []interface{}{
                []interface{}{1579536000000, "abc"},
                []interface{}{1579622400000, 123},
                []interface{}{1579708800000, map[string]interface{}{"price":123}},
                []interface{}{1579795200000, []interface{}{"abc", 123, map[string]interface{}{"price":123}}},
            },
        }
        b, _ := json.Marshal(ret)
        w.Write(b)
    }()
}                

func main () {
    fmt.Println("listen http://localhost:9090")
    http.HandleFunc("/data", Handle)
    http.ListenAndServe(":9090", nil)
}

要求を受信した際にプログラムによる応答データ:

{
    "schema":["time","data"],
    "data":[
        [1579536000000, "abc"],
        [1579622400000, 123],
        [1579708800000, {"price": 123}],
        [1579795200000, ["abc", 123, {"price": 123}]]
    ]
}

試験戦略コード:

function main() {
    Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
    Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
}
def main():
    Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
    Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
void main() {
    Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
    Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"));
}

外部リンクのデータを取得するための呼び出し方法.

function main() {
    Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"))   // The xxx part of the link is the code of the query data, here xxx is an example.
}
def main():
    Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"))
void main() {
    Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"));
}

プラットフォームで作成されたクエリのデータ要求データデータ回答のデータ形式を要求する (時間,スキーマで記述されたデータフィールドを含む必要があります):

{
    "data": [],
    "schema": ["time", "data"]
}

dataフィールドは,必要なデータ内容であり,dataフィールドのデータは, schemaで合意されたものと一致する必要があります.exchange.GetData()JSON オブジェクトが返されます.例えば:{"Time":1579795200000, "Data":"..."}.

バックテストシステムでは,アクセスインターフェースを使用してデータを要求するときに,バックテストシステムは自動的に追加します.from(秒で表示)to(秒で表示される) 要求,パラメータなどperiod(基となるK線期間,時間スタンプはミリ秒で) は,データを取得する時間枠を決定するために使用されます.

{@fun/Market/exchange.SetData exchange.SetData} データを交換する

exchange.GetMarkets

についてexchange.GetMarkets()交換市場情報を入手するために使用されます.

{@struct/Market Market} 構造を含む辞書 オブジェクト

交換.GetMarkets (ゲットマーケットズ)

function main() {
    var markets = exchange.GetMarkets()
    var currency = exchange.GetCurrency()

    // Get the current contract code can also use exchange.GetContractType() function
    var ct = "swap"

    var key = currency + "." + ct
    Log(key, ":", markets[key])
}
def main():
    markets = exchange.GetMarkets()
    currency = exchange.GetCurrency()
    ct = "swap"

    key = currency + "." + ct
    Log(key, ":", markets[key])
void main() {
    auto markets = exchange.GetMarkets();
    auto currency = exchange.GetCurrency();

    auto ct = "swap";
    auto key = currency + "." + ct;
    Log(key, ":", markets[key]);
}

フューチャー取引対象へのコール例:

/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

function main() {
    var arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]

    var tbl1 = {
        type: "table",
        title: "markets1",
        cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        rows: []
    }

    var markets1 = exchange.GetMarkets()
    for (var key in markets1) {
        var market = markets1[key]
        tbl1.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
    }

    for (var symbol of arrSymbol) {
        exchange.GetTicker(symbol)
    }

    var tbl2 = {
        type: "table",
        title: "markets2",
        cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        rows: []
    }

    var markets2 = exchange.GetMarkets()
    for (var key in markets2) {
        var market = markets2[key]
        tbl2.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
    }

    LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''

import json

def main():
    arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]

    tbl1 = {
        "type": "table",
        "title": "markets1",
        "cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        "rows": []
    }

    markets1 = exchange.GetMarkets()
    for key in markets1:
        market = markets1[key]
        tbl1["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])

    for symbol in arrSymbol:
        exchange.GetTicker(symbol)

    tbl2 = {
        "type": "table",
        "title": "markets2",
        "cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        "rows": []
    }

    markets2 = exchange.GetMarkets()
    for key in markets2:
        market = markets2[key]
        tbl2["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])

    LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

void main() {
    auto arrSymbol = {"SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};

    json tbl1 = R"({
        "type": "table",
        "title": "markets1",
        "cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        "rows": []
    })"_json;

    auto markets1 = exchange.GetMarkets();
    for (auto& [key, market] : markets1.items()) {
        json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
        tbl1["rows"].push_back(arrJson);
    }

    for (const auto& symbol : arrSymbol) {
        exchange.GetTicker(symbol);
    }

    json tbl2 = R"({
        "type": "table",
        "title": "markets2",
        "cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
        "rows": []
    })"_json;

    auto markets2 = exchange.GetMarkets();
    for (auto& [key, market] : markets2.items()) {
        json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
        tbl2["rows"].push_back(arrJson);
    }

    json tbls = R"([])"_json;
    tbls.push_back(tbl1);
    tbls.push_back(tbl2);
    LogStatus("`" + tbls.dump() + "`");
}

フューチャー交換オブジェクトを呼び出すexchange.GetMarkets()バックテストシステム内の関数.任意の市場関数を呼び出す前に,GetMarketsは現在のデフォルト取引ペアの市場データを返します.市場関数を呼び出す後,すべての要求された多様性の市場データを返します.以下のテスト例を参照してください:

についてexchange.GetMarkets()この関数は,取引品種の名前というキーで辞書を返します.例えば,取引ペアとしてフォーマットされたスポット修正の場合:

{
    "BTC_USDT" : {...},  // The key value is the Market structure
    "LTC_USDT" : {...},  
    ...
}

フューチャー契約の取引では,単一の種類のための複数の契約がある可能性があるため,例えばBTC_USDT永続契約や四半期契約などがあります.exchange.GetMarkets()function は,契約コードと組み合わせたペアのキー名を含む辞書を返します.例えば:

{
    "BTC_USDT.swap" : {...},     // The key value is the Market structure
    "BTC_USDT.quarter" : {...}, 
    "LTC_USDT.swap" : {...},
    ...
}
  • についてexchange.GetMarkets()機能はライブ取引,バックテストシステムをサポートします.
  • についてexchange.GetMarkets()この関数は,取引所でオンライン取引されている品種のみの市場情報を返します.
  • についてexchange.GetMarkets()この機能はオプション契約をサポートしません.

支援しない取引所exchange.GetMarkets()機能:

機能名 サポートされていないスポット交換 サポートされていない先物取引
GetMarkets を取得する Coincheck / Bithumb / ビットフライヤー

{@struct/市場市場}

exchange.GetTickers

についてexchange.GetTickers()この関数は,交換されたティッカーデータ ({@struct/Ticker Ticker} 構造の配列) を取得するために使用されます.exchangeスポット取引対象である場合,すべての取引対の ticker データを返します.exchangeフューチャー取引対象の場合,すべての契約のティッカーデータを返します.

についてexchange.GetTickers()この関数は {@struct/Ticker Ticker} 構造の配列をデータ要求に成功すると返し,失敗すると null を返します. {@struct/Ticker Ticker}配列,ゼロ値

交換する.GetTickers ((()

function main() {
    var tickers = exchange.GetTickers()
    if (tickers && tickers.length > 0) {
        Log("Number of tradable items on the exchange:", tickers.length)
    }
}
def main():
    tickers = exchange.GetTickers()
    if tickers and len(tickers) > 0:
        Log("Number of tradable items on the exchange:", len(tickers))
void main() {
    auto tickers = exchange.GetTickers();
    if (tickers.Valid && tickers.size() > 0) {
        Log("Number of tradable items on the exchange:", tickers.size());
    }
}

呼んでexchange.GetTickers()市場データを集計する機能です

/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

function main() {
    var arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
    
    // Before requesting other trading pair market data, call Get Tickers
    var tickers1 = exchange.GetTickers()
    var tbl1 = {type: "table", title: "tickers1", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var ticker of tickers1) {
        tbl1.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }
    
    // Request market data for other trading pairs
    for (var symbol of arrSymbol) {
        exchange.GetTicker(symbol)
    }

    // Call GetTickers again
    var tickers2 = exchange.GetTickers()
    var tbl2 = {type: "table", title: "tickers2", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var ticker of tickers2) {
        tbl2.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }

    LogStatus("`" + JSON.stringify([tbl1, tbl2]) +  "`")
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''

import json

def main():
    arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
        
    tickers1 = exchange.GetTickers()
    tbl1 = {"type": "table", "title": "tickers1", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
    for ticker in tickers1:
        tbl1["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
    
    for symbol in arrSymbol:
        exchange.GetTicker(symbol)
    
    tickers2 = exchange.GetTickers()
    tbl2 = {"type": "table", "title": "tickers2", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
    for ticker in tickers2:
        tbl2["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
    
    LogStatus("`" + json.dumps([tbl1, tbl2]) +  "`")
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

json tickerToJson(const Ticker& ticker) {
    json arrJson;

    arrJson.push_back(ticker.Symbol);
    arrJson.push_back(ticker.High);
    arrJson.push_back(ticker.Open);
    arrJson.push_back(ticker.Low);
    arrJson.push_back(ticker.Last);
    arrJson.push_back(ticker.Buy);
    arrJson.push_back(ticker.Sell);
    arrJson.push_back(ticker.Time);
    arrJson.push_back(ticker.Volume);

    return arrJson;
}

void main() {
    std::string arrSymbol[] = {"ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"};
    
    auto tickers1 = exchange.GetTickers();
    json tbl1 = R"({
        "type": "table", 
        "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
        "rows": []
    })"_json;
    tbl1["title"] = "tickers1";
    
    for (const auto& ticker : tickers1) {
        json arrJson = tickerToJson(ticker);
        tbl1["rows"].push_back(arrJson);
    }
    
    for (const std::string& symbol : arrSymbol) {
        exchange.GetTicker(symbol);
    }
    
    auto tickers2 = exchange.GetTickers();
    json tbl2 = R"({
        "type": "table", 
        "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
        "rows": []
    })"_json;
    tbl2["title"] = "tickers2";
    
    for (const auto& ticker : tickers2) {
        json arrJson = tickerToJson(ticker);
        tbl2["rows"].push_back(arrJson);
    }
    
    json tbls = R"([])"_json;
    tbls.push_back(tbl1);
    tbls.push_back(tbl2);
    LogStatus("`" + tbls.dump() + "`");
}

スポット交換オブジェクトを使用し,exchange.GetTickers()バックテストシステムにおける関数.任意の市場関数を呼び出す前に,GetTickersは現在のデフォルト取引ペアのティッカーデータを返します.市場関数を呼び出す後,すべての要求された多様性のティッカーデータを返します.以下のテスト例を参照してください:

  • この機能は,取引先から集計ティッカーのインターフェースを要求し,取引ペア,契約コードを呼び出す前に設定する必要はありません. 交換所のオンライン取引品種のティッカーを返します.
  • バックテストシステムはこの機能をサポートします
  • 集計されたティッカーインターフェースを提供していない Exchange オブジェクトは,この機能をサポートしません.
  • この機能はオプション契約をサポートしません.

支援しない取引所exchange.GetTickers()機能:

機能名 サポートされていないスポット交換 サポートされていない先物取引
GetTickers は Zaif / WOO / Gemini / Coincheck / BitFlyer / ビボックス フューチャーズ_WOO / フューチャーズ_dYdX / フューチャーズ_Deribit / フューチャーズ_Bibox / フューチャーズ_Aevo

{@struct/TickerTicker}, {@fun/Market/exchange.GetTicker交換.GetTicker} 取引先を表示する

ログ 貿易