현재 설정된 거래 쌍, 계약 코드, 즉 티커 데이터에 해당하는 스팟 또는 계약의 {@struct/Ticker Ticker} 구조를 얻으십시오.GetTicker ()
함수는 교환 객체 {@var/EXCHANGE exchange}의 멤버 함수입니다.exchange
객체 구성원 함수 (방법) 는exchange
이 문서에서는 반복되지 않을 것입니다.
이exchange.GetTicker()
function는 데이터 요청이 성공할 때 {@struct/Ticker Ticker} 구조를 반환하고 데이터 요청이 실패할 때 null 값을 반환합니다.
{@struct/Ticker Ticker}, null 값
교환.GetTicker() 교환.GetTicker (기호)
매개 변수symbol
요청된 {@struct/Ticker Ticker} 데이터에 대응하는 특정 거래 쌍 및 계약 코드를 지정하는 데 사용됩니다. 이 매개 변수가 전달되지 않으면 현재 설정된 거래 쌍 및 계약 코드의 시장 데이터가 기본적으로 요청됩니다.
전화할 때exchange.GetTicker(symbol)
기능exchange
즉석 교환 대상이 됩니다. USDT로 표기된 통화와 BTC로 거래되는 통화로 시장 데이터를 요청해야 하는 경우, 매개 변수symbol
이 경우:"BTC_USDT"
, 그리고 형식은 FMZ 플랫폼에 의해 정의된 거래 쌍 형식입니다.
전화할 때exchange.GetTicker(symbol)
기능exchange
미래에셋 거래소 객체입니다. BTCsymbol
이 경우:"BTC_USDT.swap"
, 그리고 형식은거래 쌍그리고계약 코드FMZ 플랫폼에 의해 정의되며, exchange.GetTicker(symbol)
기능exchange
만약 당신이 BTCsymbol
이 경우:"BTC_USDT.BTC-240108-40000-C"
(Binance 옵션 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
시뮬레이션 값, 판매 한 것에서 가져와 그 때 시장에서 하나를 구입합니다.Ticker
이 자료는exchange.GetTicker()
실제 시장에서High
그리고Low
값은 캡슐화 된 교환에 의해 반환 된 데이터에 기반합니다.Tick
인터페이스, 특정 기간 (일반적으로 24시간 기간) 내 최고와 최저 가격을 포함합니다.
지원하지 않는 거래소exchange.GetTicker()
기능:
함수 이름 | 지원되지 않는 스팟 교환 | 지원되지 않은 선물 거래 |
---|---|---|
GetTicker | – | 퓨처스_에보 |
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTickers exchange.GetTickers}
현재 설정된 거래 쌍, 계약 코드, 즉 주문록 데이터에 대응하는 스팟 또는 계약의 {@struct/Depth Depth} 구조를 얻으십시오.
이exchange.GetDepth()
이 함수는 데이터 요청이 성공하면 {@struct/Depth Depth} 구조를 반환하고 데이터 요청이 실패하면 null을 반환합니다.
{@struct/Depth Depth}, null 값
교환.그트데프스 (GetDepth)) 교류.GetDepth (신호)
매개 변수symbol
요청된 {@struct/Depth Depth} 데이터에 대응하는 특정 거래 쌍 및 계약 코드를 지정하는 데 사용됩니다. 이 매개 변수가 전달되지 않으면 현재 설정된 거래 쌍 및 계약 코드의 주문록 데이터가 기본적으로 요청됩니다.exchange.GetDepth(symbol)
기능exchange
즉석 교환 대상이 됩니다. USDT로 표정된 통화와 BTC로 거래 화폐로 주문 책 데이터를 요청해야 하는 경우, 매개 변수symbol
이 경우:"BTC_USDT"
, 그리고 형식은 FMZ 플랫폼에 의해 정의 거래 쌍 형식입니다.exchange.GetDepth(symbol)
기능exchange
미래에셋 거래소 객체입니다. 당신이 BTC의 U-표준 영구 계약의 주문서 데이터를 요청해야 하는 경우, 매개 변수symbol
이 경우:"BTC_USDT.swap"
, 그리고 형식은거래 쌍그리고계약 코드FMZ 플랫폼에 의해 정의, 문자 exchange.GetDepth(symbol)
기능exchange
미래에셋 거래소 객체입니다. BTCsymbol
이 경우:"BTC_USDT.BTC-240108-40000-C"
(Binance 옵션 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()
기능을 사용할 때진짜 틱백테스팅은 두 번째 레벨의 심층 스냅샷입니다.
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
현재 설정된 거래 쌍, 계약 코드, 즉 시장 거래 데이터에 대응하는 스팟 또는 계약의 {@struct/Trade Trade} 구조 배열을 얻으십시오.
이exchange.GetTrades()
함수는 데이터 요청이 성공하면 {@struct/Trade Trade} 구조의 배열을 반환하고 데이터 요청이 실패하면 null 값을 반환합니다.
{@struct/Trade Trade} 배열, null 값
거래소.GetTrades 교환.GetTrades (신호)
매개 변수symbol
요청된 {@struct/Trade Trade} 배열 데이터에 대응하는 특정 거래 쌍 및 계약 코드를 지정하는 데 사용됩니다. 이 매개 변수가 전달되지 않으면 현재 설정된 거래 쌍 및 계약 코드의 최신 거래 기록 데이터가 기본적으로 요청됩니다.exchange.GetTrades(symbol)
기능exchange
즉석 거래 대상이 됩니다. 만약 USDT로 표정된 통화와 BTC로 거래되는 통화로 주문서 데이터를 요청해야 한다면,symbol
이 경우:"BTC_USDT"
, 그리고 형식은 FMZ 플랫폼에 의해 정의 거래 쌍 형식입니다.exchange.GetTrades(symbol)
기능exchange
미래에셋 거래소 객체입니다. 당신이 BTC의 U-표준 영구 계약의 주문서 데이터를 요청해야 하는 경우, 매개 변수symbol
이 경우:"BTC_USDT.swap"
, 그리고 형식은거래 쌍그리고계약 코드FMZ 플랫폼에 의해 정의, 문자 exchange.GetTrades(symbol)
기능exchange
미래에셋 거래소 객체입니다. BTCsymbol
이 경우:"BTC_USDT.BTC-240108-40000-C"
(Binance 옵션 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 | – | 퓨처스_비트마트 / 퓨처스_비박스 |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}
현재 설정된 거래 쌍, 계약 코드, 즉 K-라인 데이터에 대응하는 스팟 또는 계약의 {@struct/Record Record} 구조 배열을 얻으십시오.
이exchange.GetRecords()
function는 데이터 요청이 성공할 때 {@struct/Record Record} 구조의 배열을 반환하고, 데이터 요청이 실패할 때 null 값을 반환합니다.
{@struct/Record Record} 배열, null 값
교환.GetRecords() 교환.GetRecords (기호) exchange.GetRecords (표자, 점) exchange.GetRecords (기호, 지점, 제한) 교환.GetRecords (정기) 교환.GetRecords (기간, 제한)
매개 변수symbol
요청된 {@struct/Record Record} 배열 데이터에 대응하는 특정 거래 쌍 및 계약 코드를 지정하는 데 사용됩니다. 이 매개 변수가 전달되지 않으면 현재 설정된 거래 쌍 및 계약 코드의 K-라인 데이터가 기본적으로 요청됩니다.exchange.GetRecords(symbol)
기능exchange
즉석 교환 대상이 됩니다. USDT로 표기된 통화와 BTC로 거래 화폐로 데이터를 요청해야 하는 경우, 매개 변수symbol
이 경우:"BTC_USDT"
, 그리고 형식은 FMZ 플랫폼에 의해 정의 거래 쌍 형식입니다.exchange.GetRecords(symbol)
기능exchange
미래에셋 거래소 객체입니다. 당신이 BTC의 U-표준 영구 계약의 주문서 데이터를 요청해야 하는 경우, 매개 변수symbol
이 경우:"BTC_USDT.swap"
, 그리고 형식은거래 쌍그리고계약 코드FMZ 플랫폼에 의해 정의, 문자 exchange.GetRecords(symbol)
기능exchange
미래에셋 거래소 객체입니다. BTCsymbol
이 경우:"BTC_USDT.BTC-240108-40000-C"
(Binance 옵션 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-라인 바 수입니다. 이 매개 변수는 교환 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-라인 데이터를 요청하는 매개 변수
기본 K-라인 기간은 백테스트 및 실제 거래 페이지에서 설정할 수 있습니다.exchange.GetRecords()
함수, 그 매개 변수 기간에 대응하는 K-라인 데이터가 얻을 것입니다. 함수를 호출 할 때 매개 변수가 지정되지 않으면, 해당 K-라인 데이터가 백테스트와 실제 시장 매개 변수에서 설정된 K-라인 기간에 따라 반환됩니다.
반환 값은Record
구조, 반환 K-선 데이터는 시간이 지남에 따라 축적됩니다, 축적된 K-선 바의 상한 한계는exchange.SetMaxBarLen()
함수 설정. 설정되지 않은 경우 기본 제한은 5000 바입니다. K-라인 데이터가 K-라인 바 축적 제한에 도달하면 K-라인 바를 추가하고 가장 오래된 K-라인 바를 삭제하여 업데이트됩니다. 일부 거래소는 K-라인 인터페이스를 제공하지 않으므로 도커는 시장 거래 기록 데이터를 수집합니다 (Trade
구조화된 배열) 를 실시간으로 K선을 생성합니다.
만약 교환의 K-라인 인터페이스가 페이징 쿼리를 지원한다면, 여러 API 요청이exchange.SetMaxBarLen()
더 큰 K-선 길이를 설정하는 함수입니다.
그 때exchange.GetRecords()
함수는 초기 K-라인 데이터로 호출되면 얻은 K-라인 바의 수는 백테스팅과 실제 거래에 따라 다릅니다. - 백테스팅 시스템은 백테스팅 시간 범위가 시작되기 전에 일정 수의 K-라인 바를 미리 얻을 것입니다. (예정값은 5000, 백테스팅 시스템의 설정 및 데이터 양은 반환된 최종 숫자에 영향을 줄 것입니다.) - 실제 거래 중에 얻은 K-라인 바의 수는 거래소의 K-라인 인터페이스에서 얻을 수있는 최대 데이터 양에 기반합니다.
의period
매개 변수가 5로 설정되면, 5초의 기간으로 K-라인 데이터를 얻기 위한 요청입니다.period
매개 변수는 60으로 나눌 수 없습니다 (즉, 표시된 기간은 분으로 나눌 수 없습니다). 기본 시스템은exchange.GetTrades()
거래 기록 데이터를 얻고 필요한 K-라인 데이터를 합성합니다.period
이 매개 변수는 60으로 나눌 수 있습니다. 그러면 필요한 K-라인 데이터는 최소 1분 K-라인 데이터를 사용하여 합성됩니다. 가능하면 필요한 K-라인 데이터는 더 큰 기간을 사용하여 합성됩니다.
백테스팅 시스템에서 시뮬레이션 레벨 백테스팅은 기본 K-라인 기간을 설정해야 합니다 (백테스팅 시스템이 레벨 백테스팅을 시뮬레이션할 때, 대응하는 K-라인 데이터는 기본 K-라인 기간에 따라 Tick 데이터를 생성하는 데 사용됩니다). 전략에서 얻은 K-라인 데이터의 기간이 기본 K-라인 기간보다 작지 않아야 한다는 점에 유의해야 합니다. 시뮬레이션 레벨 백테스팅에서 백테스팅 시스템 내의 각 기간의 K-라인 데이터는 기본 K-라인 기간의 K-라인 데이터로부터 합성됩니다.
의C++
이 언어는 다음과 같은 코드 예제를 가지고 있습니다.
#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 | 자이프 / 코인체크 / 비트플라이어 | 퓨처스_에보 |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.SetMaxBarLen exchange.SetMaxBarLen}
FMZ 양자 거래 플랫폼 웹 사이트 페이지에서 설정된 K-라인 기간을 얻으십시오 라이브 거래에서 역 테스트 및 전략을 실행 할 때, 즉 기본 K-라인 기간을 호출 할 때 사용exchange.GetRecords()
매개 변수를 전달하지 않고 작동합니다.
K-선 기간은 초, 정수 값은 초입니다. 번호
교환.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}
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()
이 기능은 암호화폐 전략 실행시간에 두 가지 측면에 영향을 미칩니다.
{@fun/Market/exchange.GetRecords exchange.GetRecords}
원래 콘텐츠를 마지막에 반환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 교환}
교환 대상에 대해 현재 설정된 환율을 얻으십시오.
교환 대상의 환율의 현재 값 번호
교환.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()
함수는 1의 기본 비율 값을 반환 합니다. 즉, 현재 표시된 통화 (quoteCurrency) 와 관련된 데이터가 변환되지 않았습니다.
환율 값이exchange.SetRate()
예를 들어,exchange.SetRate(7)
그 다음 모든 가격 정보, 예를 들어 코팅, 깊이, 주문 가격exchange
교환 대상은 설정된 환율에 곱하여 변환됩니다7
...
만약exchange
USD를 통역 통화로 교환하는 것과 일치합니다.exchange.SetRate(7)
, 라이브 시장의 모든 가격은 CNY에 가까운 가격으로 변환됩니다.7
이 시점에서 환율 값은exchange.GetRate()
이7
.
{@fun/Trade/exchange.SetRate exchange.SetRate}
이exchange.SetData()
이 함수는 전략이 실행될 때 로딩되는 데이터를 설정하는 데 사용됩니다.
매개 변수 다음 문자열의 길이는value
JSON 코딩
번호
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.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"]
}
exchange.GetData()
함수가 호출되면 JSON 객체가 반환됩니다. 예를 들어:{"Time":1579795200000, "Data":"..."}
.
백테스팅을 위해 데이터를 한 번에 얻고 실시간 거래에 대한 데이터를 1 분 캐시합니다. 백테스팅 시스템에서 액세스 인터페이스를 사용하여 데이터를 요청할 때 백테스팅 시스템은 자동으로 추가합니다.from
(초로 표시된 시간),to
(초로 시간표) 요청, 파라미터period
(K-라인 기간, 밀리초로 시간표) 는 데이터를 획득해야 할 시간 프레임을 결정하는 데 사용됩니다.
{@fun/Market/exchange.SetData exchange.SetData}
이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()
함수는 계약 코드와 결합된 쌍의 키 이름을 가진 사전을 반환합니다. 예를 들어:
{
"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 | 코인체크 / 비트럼브 / 비트플라이어 | – |
{@struct/시장시장}
이exchange.GetTickers()
이 함수는 교환 집계된 틱어 데이터를 얻기 위해 사용된다. {@struct/Ticker Ticker} 구조의 배열.exchange
스팟 거래 대상이 될 때 모든 거래 쌍에 대한 틱어 데이터를 반환합니다.exchange
선물 거래 대상일 때 모든 계약에 대한 틱어 데이터를 반환합니다.
이exchange.GetTickers()
함수는 데이터를 요청하는 데 성공할 때 {@struct/Ticker Ticker} 구조의 배열을 반환하고 실패할 때 null을 반환합니다.
{@struct/Ticker Ticker} 배열, null 값
교환.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.GetTickers()
기능:
함수 이름 | 지원되지 않는 스팟 교환 | 지원되지 않은 선물 거래 |
---|---|---|
GetTickers | Zaif / WOO / Gemini / Coincheck / BitFlyer / Bibox | 선물_WOO / 선물_dYdX / 선물_데리빗 / 선물_비박스 / 선물_에보 |
{@struct/TickerTicker}, {@fun/Market/exchange.GetTicker 교환.GetTicker}
로그 무역