리소스 로딩... 로딩...

구조

무역

시장 거래 기록의 구조

시장 거래 기록 ID 또는 교환 인터페이스에서 ID가 제공되지 않으면 시간표를 사용하여 채우십시오. 아이디 문자열 밀리초 시간표 시간 번호 거래 가격 가격 번호 거래 금액 금액 번호 주문 유형, {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}를 참조하십시오. 종류 번호

exchange.GetTrades() 함수는 트레이드의 배열 또는 빈 배열을 반환합니다.

{@fun/Market/exchange.GetTrades exchange.GetTrades}

시장의 구조.

원본 데이터가 교환 인터페이스에서 반환됩니다. 이러한 속성은 백테스팅에 사용할 수 없습니다. 정보 물체 의Symbol이 필드는 FMZ 플랫폼에서 정의한 거래 품종 코드입니다.

  • 스팟 거래 대상의 경우,Symbol필드 값 (예제) 는:BTC_USDT, BTC_USDT 스팟 거래 쌍을 나타냅니다.
  • 미래에셋 거래 대상의 경우,Symbol필드 값 (예를 들어) 은BTC_USDT.swap, BTC에 대한 USDT 사유 상속 계약을 나타냅니다.
  • 미래에셋 거래 대상의 경우,Symbol필드 값은 (예를 들어):BTC_USDT.BTC-240108-40000-C이 계약은 2024년 1월 8일 실시일과 40,000달러의 실시가격으로 USDT에 대한 BTC의 콜옵션 계약입니다.

기호 문자열 가장 높은 가격, 또는 거래소 인터페이스가 24시간 동안 가장 높은 가격을 제공하지 않는다면, 판매 한 가격으로 채우십시오. 높은 번호 가장 낮은 가격 또는 거래소 인터페이스가 24시간 최저 가격을 제공하지 않으면 구매 한 가격으로 채우십시오. 낮은 번호 현재 순간은 한 가지 가격으로 판매됩니다. 팔아 번호 현재 순간은 한 가지 가격으로 구매합니다. 구매 번호 최신 거래 가격입니다. 마지막 번호 기간 오픈 가격, 거래소 인터페이스가 24시간의 롤링 기간 오픈 가격을 제공하지 않으면 현재 가격을 채우기 위해 사용합니다. 오픈 번호 최근 거래 금액, 원칙적으로, 현금 거래 금액은 기본 통화이며 계약 거래 금액은 계약 수입니다. 교환 인터페이스가 그러한 데이터를 제공하지 않으면 교환 인터페이스에서 사용할 수있는 데이터로 채워집니다. 예를 들어, 거래 금액은 코팅 통화로 표시 될 수 있습니다. 부피 번호 밀리초 수준 시간표 시간 번호 위치, 대부분의 교환 인터페이스는 이 데이터를 제공하지 않으며 이 데이터가 지원되지 않을 때 값은 0입니다. 오픈인터레스 번호

exchange.GetTicker() 함수는 틱커 구조를 반환합니다. 옵션 계약의 경우,exchange.GetTicker()함수 호출은 오류가 발생하기 쉽다. 옵션 계약 시장 유동성이 일반적으로 낮기 때문에 첫 번째 구매 또는 첫 번째 판매에 대한 대기 주문이 종종 없습니다.Ticker구조장Buy또는Sell0이 되면 에러 프롬프트가 터집니다.

{@fun/Market/exchange.GetTicker 교환.GetTicker}, {@fun/Market/exchange.GetTickers 교환.GetTickers}

기록

표준 OHLC 구조인 K-Line Bar의 구조는 계산과 분석을 위한 K-Line와 지표를 그리는데 사용됩니다.

밀리초 수준 시간표, 시간 속성의 값이 이 K-라인 바의 기간의 시작 시간표인 레코드 구조를 위해. 시간 번호 개막 가격 오픈 번호 가장 높은 가격 높은 번호 가장 낮은 가격. 낮은 번호 마감 가격. 꽉 막 번호 위치 값, 대부분의 교환 인터페이스는 이 데이터를 제공하지 않습니다. 이 데이터가 지원되지 않을 때 값은 0입니다. 오픈인터레스 번호 거래 금액. 원칙적으로, 스팟 거래 금액은 기본 통화이며 계약 거래 금액은 계약 수입니다. 거래 인터페이스가 그러한 데이터를 제공하지 않으면 거래 인터페이스의 기존 데이터로 채워집니다. 예를 들어, 거래 금액은 코팅 통화입니다. 부피 번호

exchange.GetRecords() 함수는 레코드 배열 또는 빈 배열을 반환합니다. 각 레코드 구조는 K-라인 바, 즉 K-라인 바를 나타냅니다.

{@fun/Market/exchange.GetRecords exchange.GetRecords}

순서

순서의 구조

교환 인터페이스 응답의 원래 데이터, 이러한 속성은 백테스팅에 사용할 수 없습니다. 정보 물체 의Symbol이 필드는 FMZ 플랫폼에 의해 정의된 거래 제품 코드이며 그 형식은Symbol{@struct/Ticker Ticker} 구조의 필드.

  • 스팟 교환 대상의 경우,Symbol필드 값은 (예를 들어):BTC_USDT, BTC_USDT 스팟 거래 쌍을 나타냅니다.
  • 미래에셋 거래 대상의 경우,Symbol필드 값은 (예를 들어):BTC_USDT.swap, BTC의 USDT 표준 영구 계약을 나타냅니다.

기호 문자열 주문 ID, 이 속성은 교환 제품 코드와 교환 원래 주문 ID, 영어 koma로 분리됩니다. 예를 들어, 속성Id포트 거래 쌍의 형식ETH_USDTOKX 교환 순서는 다음과 같습니다.ETH-USDT,1547130415509278720- 네 아이디 문자열 명령의 가격, 이 속성이 시장 명령에 0 또는 -1이 될 수 있다는 점에 유의하십시오. 가격 번호 배치된 주문의 수, 시장 주문의 이 속성은 화폐가 아닌 금액이 될 수 있다는 점에 유의하십시오. 금액 번호 트랜잭션 수, 교환 인터페이스에서 이 데이터가 제공되지 않는 경우 0으로 표시될 수 있습니다. 거래 금액 번호 평균 거래 가격, 일부 거래소가 이 데이터를 제공하지 않는다는 점에 유의하십시오. 이 속성은 0으로 설정됩니다. 평균 가격 번호 주문 상태는 {@var/ORDER_STATE/ORDER_STATE_PENDING ORDER_STATE_PENDING}, {@var/ORDER_STATE/ORDER_STATE_CLOSED ORDER_STATE_CLOSED}, {@var/ORDER_STATE/ORDER_STATE_CANCELED ORDER_STATE_CANCELED}, {@var/ORDER_STATE/ORDER_STATE_UNKNOWN ORDER_STATE_UNKNOWN}로 참조하십시오. 상태 번호 주문 유형, {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}를 참조하십시오. 종류 번호 계약 주문의 개시 및 종료 방향은 {@var/ORDER_OFFSET/ORDER_OFFSET_OPEN ORDER_OFFSET_OPEN}, {@var/ORDER_OFFSET/ORDER_OFFSET_CLOSE ORDER_OFFSET_CLOSE}를 참조하십시오. 오프셋 번호 이 속성은 스팟 주문에서"", 즉 빈 문자열. 계약 주문에서, 이 속성은 특정 계약 코드입니다. 계약 유형 문자열

Order순서 구조를 반환 할 수 있습니다exchange.GetOrder()그리고exchange.GetOrders()기능.exchange.GetOrders()함수는 배열을 반환합니다Order구조 또는 빈 배열입니다. 완료되지 않은 순서가 없다면, 그것은 반환[], 빈 배열입니다.Status의 재산Order순서 구조는 다음과 같은 상수와 직접 비교할 수 있습니다.ORDER_STATE_PENDING그 양이 같는지 확인하고, 따라서 주문 상태를 결정합니다.

단방향 포지션 모드에서, 명령이 닫기 (감축) 명령인지 여부를 결정하는 것이 불가능하면,Offset필드는 기본적으로 열기 방향으로 설정됩니다.ORDER_OFFSET_OPEN.

{@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}

주문서

시장 깊이에 대한 주문 구조

가격. 가격 번호 금액 금액 번호

GetDepth() 함수는 Bids, Asks의 속성 값이 OrderBook 배열인 데이터 구조를 반환합니다.

{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@struct/Depth Depth}

깊이

시장 깊이 구조

판매 주문 배열, 즉 OrderBook 배열, 가장 낮은에서 가장 높은 가격에 의해 정렬되며 배열의 첫 번째 OrderBook 구조는 가장 낮은 가격을 가지고 있습니다. 묻습니다. 배열 구매 주문 배열, 즉 OrderBook 배열은 가장 높은 것부터 가장 낮은 것까지 가격에 의해 정렬되며 배열의 첫 번째 OrderBook 구조는 가장 높은 가격을 가지고 있습니다. 입찰 배열 밀리초 수준 시간표 시간 번호

exchange.GetDepth() 함수는 Depth 구조를 반환합니다.

{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@struct/OrderBook OrderBook}

계좌

계좌 정보의 구조

원본 데이터가 교환 인터페이스에서 반환됩니다. 이러한 속성은 백테스팅에 사용할 수 없습니다. 정보 물체 거래 쌍이 BTC_USDT인 경우 현금으로 사용 가능한 통화 수, 잔액은 현재 사용 가능한 USDT의 수를 의미합니다. U 표준 계약에서 잔액은 사용 가능한 마진 (USDT, quoteCurrency) 의 금액을 의미합니다. 재고 번호 주문이 완료되지 않을 때 동결된 자산의 가치 얼어붙은 균형 번호 사용 가능한 거래 화폐의 수, 현장, 거래 쌍이 BTC_USDT라면, 주식은 현재 사용 가능한 BTC의 수를 의미합니다. 주식은 통화 기반 계약에서 사용 가능한 마진 (화폐, 기본 통화) 의 수를 의미합니다. 물류 번호 주문이 완료되지 않을 때 동결된 자산의 가치 냉동물 번호 오직 선물 거래소만 이 분야를 지원합니다.Equity현계약 설정 하에 선물 계좌 마진의 총 자금입니다. 거래소 인터페이스에서 관련 데이터를 제공하지 않는 경우, 이 필드는 0입니다.

자기자본 번호 이 필드는 선물 거래소 객체에서만 지원됩니다.UPnL필드는실적화되지 않은 이익과 손실현재 계약 설정에 따라 선물 계정 마진으로 개설된 모든 포지션.

UPnL 번호

exchange.GetAccount() 함수는 계정 구조를 반환합니다. 반환된 구조의 데이터는 현재 설정된 거래 쌍, 계약 코드에 달려 있습니다.

{@fun/Account/exchange.GetAccount exchange.GetAccount}

자산

특정 통화 자산 정보의 구조

암호화폐 자산에 대한 거래소 정의 이름, 같은 암호화폐에 대한 거래소에서 거래소에 따라 다를 수 있습니다.BTC호출 될 수 있습니다XBT일부 거래소에서 통화 문자열 통화 자산의 사용 가능한 잔액. 금액 번호 동화로 동결된 자산의 수 얼어붙은 금액 번호

FrozenAmount외환 자산의 경우 채무되지 않은 주문에 잠금된 자산과 선물 포지션에 잠금된 마진 부분을 포함할 수 있습니다.

{@fun/Account/exchange.GetAssets exchange.GetAssets}

위치

계약 포지션 정보 구조

원본 데이터가 교환 인터페이스에서 반환됩니다. 이러한 속성은 백테스팅에 사용할 수 없습니다. 정보 물체 의Symbol이 필드는 FMZ 플랫폼에 의해 정의된 거래 제품 코드이며 그 형식은Symbol{@struct/Ticker Ticker} 구조의 필드.

  • 스팟 교환 대상의 경우,Symbol필드 값은 (예를 들어):BTC_USDT, BTC_USDT 스팟 거래 쌍을 나타냅니다.
  • 미래에셋 거래 대상의 경우,Symbol필드 값은 (예를 들어):BTC_USDT.swap, BTC의 USDT 표준 영구 계약을 나타냅니다.

기호 문자열 위치 바 크기, 계산으로 채우면 교환 인터페이스가 이 데이터를 제공하지 않으면 정확하지 않을 수 있습니다. 마진 레벨 번호 포지션 크기는 보통 양진 정수 (계약 번호 수) 입니다. 계약 곱셈자, 값 등과 같은 계약 사양이 거래소마다 다를 수 있습니다. 금액 번호 포지션 동결 금액, 종료된 오더가 완료되지 않을 때 일시적으로 동결된 포지션의 수 얼어붙은 금액 번호 포지션의 평균 가격, 원칙적으로 포지션 전체의 평균 가격 (결산에 참여하지 않습니다.) 가격 번호 포지션의 부동 수익/손실은 원칙적으로 포지션의 실현되지 않은 이익/손실입니다. 데이터가 거래소 인터페이스에서 제공되지 않으면 거래소 인터페이스의 다른 이익/손실 데이터로 채워집니다. 이익과 손실 가치의 단위는 현재 계약 마진의 단위와 동일합니다. 수익 번호 포지션 유형, {@var/POSITION_DIRECTION/PD_LONG PD_LONG}, {@var/POSITION_DIRECTION/PD_SHORT PD_SHORT}를 참조하십시오. 종류 번호 계약 코드, 자세한 내용은 {@fun/Futures/exchange.SetContractType exchange.SetContractType} 함수의 설명을 참조하십시오. 계약 유형 문자열 거래소 인터페이스가 이 데이터를 제공하지 않는 경우 0으로 채워진 위치가 차지하는 마진. 마진 번호

exchange.GetPositions() 함수는 위치 배열 또는 빈 배열을 반환합니다. 암호화폐 선물에 대해, 거래소에서 반환하는 위치 구조 배열을 참고하는 것이 중요합니다.GetPositions() 함수. 거래소에서 제공되는 데이터가 균일하지 않기 때문에 위치 데이터 구조의 FrozenAmount, Profit 및 Margin 속성에 대해, GetPositions( 인터페이스에서 교환 객체에서 반환되는 데이터의 정의가 다를 수 있습니다. 예를 들어, 일부 거래소에는 위치 데이터에서 위치 동결 데이터가 없습니다. 따라서 FrozenAmount은 0입니다. 특정 데이터를 계산해야하는 경우 계산 및 분석을 위해 정보 속성의 원래 데이터를 사용할 수 있습니다.

{@fun/Futures/exchange.GetPositions exchange.GetPositions}

시장

거래되는 품종에 대한 시장 정보의 구조

예를 들어,"btcusdt", 그Symbol이 속성의 형식과 정의가 거래소에서 거래되는 품종의 원래 이름을 기록합니다.Symbol{@struct/Ticker Ticker} 구조의 필드. 기호 문자열 예를 들어,"BTC", 그BaseAsset필드는 거래된 통화 (즉: 기본 통화) 의 이름을 기록합니다. 기본 자산 문자열 예를 들어,"USDT", 그QuoteAsset이 필드는 통일적으로 대문자로 표시된 통화 이름 (즉: quoteCurrency) 을 기록합니다. 코팅자산 문자열 예를 들어,0.01, 그TickSize이 필드는 거래소에서 거래되는 항목의 가격에서 가장 작은 변화의 값을 기록합니다. 틱 사이즈 번호 예를 들어,0.01, 그AmountSize해당 거래에 대한 거래소에 배치된 주문량의 최소 변화의 값을 기록합니다. 양 크기 번호 예를 들어,2, 그PricePrecision이 필드는 거래소에서 거래되는 항목의 가격의 정확도를 기록하고, 가격이 2 소수점까지 정확하다는 것을 나타냅니다. 가격 정밀성 번호 예를 들어,3, 그AmountPrecision이 필드는 거래되는 품종에 대한 거래소에 배치된 주문의 정확성을 기록하며, 주문이 3 소수점까지 정확하다는 것을 나타냅니다. 금액정확성 번호 예를 들어,0.001, 그MinQty이 필드는 거래소에 해당 거래에 대한 최소 주문 크기를 기록합니다. 분량 번호 예를 들어,1000, 그MaxQty이 필드는 거래의 그 종류에 대해 거래소에 배치될 수 있는 최대 주문 수를 기록합니다. 최대 시간 번호 예를 들어,5, 그MinNotional해당 거래종에 대한 거래소에 지어진 명령의 최소 금액을 기록합니다. 미노니셔널 번호 예를 들어,9999999, 그MaxNotional해당 거래종에 대한 거래소에 배치된 주문의 최대 금액을 필드에서 기록합니다. 최대수준 번호 필드CtVal거래소에서 거래 상품의 계약의 가치를 기록합니다.CtValCcy예를 들어:CtVal0.01입니다.CtValCcy"BTC"즉, 계약은 0.01 BTC가 됩니다. CtVal 번호 필드CtValCcy계약의 가치 단위를 기록합니다. 계약의 가치 단위는 다음과 같습니다.BTC, USD, ETH, 등등 CtValCcy 번호 필드Info거래소의 시장 정보 인터페이스에 의해 반환되는 종에 대한 원료 데이터를 기록합니다. 정보 물체

exchange.GetMarkets() 함수는 이 함수를 포함하는 사전을 반환합니다.Market구조. 각 거래소에서 시장 정보 데이터에 대한 지원 수준이 다르기 때문에, 교환에 의해 지원되지 않는 필드는 무시됩니다. 위의 필드의 값은 교환 인터페이스의 원료 데이터에서 가져옵니다.Info field.

{@fun/Market/exchange.GetMarkets 교환.GetMarkets}

재정 지원

거래 상품의 투자율 정보 구조. 암호화폐 영구 계약만 투자율을 지원합니다.

암호화폐 선물 거래금융율 인터페이스가 호출될 때 원료 데이터가 반환됩니다. 정보 물체 의Symbol필드는 FMZ 플랫폼에서 정의한 거래 제품 코드입니다. 기호 문자열 자금율 간격, 밀리 초로288000008시간 간격입니다. 간격 번호 다음 투자율 기간의 시작 시간 (이 기간의 결제 시간) 의 시간표, 밀리 초로 표시됩니다. 시간 번호 이 기간에 사용 될 금융 비율 비율 번호

각기 다른 선물 거래소의 영구 계약금융율은 다른 계산 방법과 메커니즘을 가지고 있으며, 결제 주기는 1시간, 4시간, 8시간, 1일입니다. 미래에셋 거래소의 상시 계약의 현재 투자율은 고정값과 실시간으로 계산되는 변동값을 가지고 있습니다. 의Rate필드는 자금 조달율 값입니다.%. 만약 당신이 그것을 값으로 변환하려면%100으로 곱해서%마지막에.

{@fun/Futures/exchange.GetFundings exchange.GetFundings}

다른구조

HttpQuery 옵션

이 JSON 구조는 HttpQuery 함수의 매개 변수와 HttpQuery_Go 함수를 구성하여 Http 요청을 전송하는 데 사용됩니다.

요청 방법, 예를 들어:GET, POST, 등등 방법 문자열 요청 본체. 예를 들어, POST 요청에서 본체는 양식 데이터, JSON, 텍스트 등을 포함할 수 있습니다. 몸 문자열 문자 집합의 코딩. 예를 들어, 본부에서 텍스트 데이터의 코딩을 이렇게 지정합니다."UTF-8"- 네 카르세트 문자열 쿠키는 클라이언트 (일반적으로 브라우저) 와 서버 사이의 상태 정보를 저장하고 교환하는 데 사용되는 작은 데이터입니다. 쿠키 문자열 브라우저의 지문을 시뮬레이션하는 데 사용됐어요 프로필 문자열 true로 설정되면 HttpQuery 함수 호출은 전체 응답 메시지를 반환합니다. false로 설정되면 응답 메시지 Body의 데이터만 반환됩니다. 디버그 bool 요청 헤더 정보는 키-값 쌍 (JSON 구조) 의 형태로 존재하며 콘텐츠 유형, 인증 정보, 캐시 제어 등 다양한 정보를 전송하는 데 사용됩니다. 헤더 JSON 타임아웃 설정 1000을 설정하면 1초의 타임아웃을 의미합니다. 타임아웃 번호

사용 예제:

function main() {
    var options = {
        method: "POST",
        body: "a=10&b=20&c=30",
        charset: "UTF-8",
        cookie: "session_id=12345; lang=en",
        profile: "chrome_103",
        debug: false,
        headers: {"TEST-HTTP-QUERY": "123"},
        timeout: 1000
    }
    var ret = HttpQuery("http://127.0.0.1:8080", options)
    Log(ret)
}

위 코드가 실행될 때 전송되는 http 메시지는:

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: session_id=12345; lang=en
Host: 127.0.0.1:8080
Test-Http-Query: 123
Transfer-Encoding: chunked
User-Agent: Mozilla/5.0 (Macintosh; ...
Accept-Encoding: gzip, deflate, br

e
a=10&b=20&c=30
0

{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}

HttpQuery-return

이 JSON 구조는 디버그 모드에서 HttpQuery 함수가 반환하는 데이터 구조입니다options구조 매개 변수는 사실입니다.

http 상태 코드 상태 코드 번호 헤더 정보를 요청합니다. 헤더 JSON 쿠키 정보 쿠키 배열 요청의 전체 경로 정보 흔적 JSON 메시지 길이가 길이 번호 메시지 내용 몸체 문자열

반환된 JSON 데이터 구조의 예는:

{
    "StatusCode": 302,
    "Header": {
        "Content-Type": ["text/html"],
        // ...
    },
    "Cookies": [{
        // ...
    }],
    "Trace": {},
    "Length": 154,
    "Body": "..."
}

{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}

LogStatus 테이블

이 JSON 구조는 전략 상태 표시줄에 표시되는 테이블 콘텐츠를 구성하는 데 사용됩니다.

분석 및 표시되는 UI와 컨트롤의 유형을 설정하는 데 사용됩니다. 상태 표시줄 테이블의 경우 고정 설정되어 있습니다.table- 네 종류 문자열 상태 표시줄 테이블의 제목을 설정하는 데 사용됩니다. 제목 문자열 상태 표시줄 테이블의 열 제목을 설정하는 데 사용됩니다. 배열의 첫 번째 요소는 첫 번째 열의 제목입니다. 배열 상태 표시줄 테이블의 행 데이터를 설정하는 데 사용됩니다. 행 배열의 첫 번째 요소 (동차원 배열) 는 또한 배열 구조입니다. 이 배열 구조의 길이는 테이블 열의 수와 일치해야합니다 (배열 구조의 요소는 테이블 열 이름에 하나씩 대응합니다), 즉 테이블의 첫 번째 데이터 행. 행 배열

function main() {
    var tbl = {
        type: "table", 
        title: "title", 
        cols: ["Column 1", "Column 2", "Column 3"], 
        rows: [
            ["Row 1 Column 1", "Row 1 Column 2", "Row 1 Column 3"],
            ["Row 2 Column 1", "Row 2 Column 2", "Row 2 Column 3"],
            ["Row 3 Column 1", "Row 3 Column 2", "Row 3 Column 3"],
        ]
    }
    LogStatus("`" + JSON.stringify(tbl) + "`")
}

{@fun/Log/LogStatus LogStatus}

로그 상태-btnTypeOne

이 JSON 구조는 상태 표시줄에 있는 버튼 컨트롤을 구성하는 데 사용됩니다. 버튼 제어 JSON 구조는 상태 표시줄 테이블 JSON 구조에 삽입될 수 있습니다. 이 구조는 오래된 버전 구조이며, 플랫폼은 여전히 호환적입니다. 버튼 JSON 구조의 최신 버전을 사용하는 것이 좋습니다. 상태 표시줄 버튼 컨트롤을 구성하는 예제 ( 버튼을 트리거하고 클릭 한 후, 팝업 박스는 입력 필드를 통해 구성되는 단일 입력 컨트롤을 포함합니다):

{
    "type": "button", 
    "cmd": "open", 
    "name": "opening a position", 
    "input": {
        "name": "number of opening positions", 
        "type": "number", 
        "defValue": 1
    }
}

상태 표시 표시 버튼을 클릭하여 활성화되는 팝업 박스의 컨트롤은input또는group.

버튼 제어 장치의 고정 설정은:button- 네 종류 문자열 버튼 타입 설정 클래스 문자열 버튼 컨트롤의 텍스트, 즉 버튼 이름. 이름 문자열 버튼 컨트롤이 클릭 동작을 트리거할 때 전략에 전송되는 인터랙티브 명령 내용. cmd 문자열 버튼 컨트롤의 설명. 설명은 위상 표시줄의 버튼에 마우스를 누르면 표시됩니다. 설명 문자열 버튼을 비활성화 (진짜) / 활성화 (거짓) 로 설정합니다. 장애인 bool 상호 작용을 위한 상태 표시줄 버튼을 구성할 때, 데이터 입력도 지원됩니다. 상호 작용 명령은 궁극적으로GetCommand()함수를 추가합니다.input상태 표시줄에 있는 버튼 컨트롤의 JSON 데이터 구조에 항목을 입력 버튼이 트리거 될 때 표시되는 팝업 박스에서 입력 컨트롤을 구성합니다. 예를 들어,input필드:

{
    "name": "Number of opening positions", 
    "type": "number", 
    "defValue": 1,
    "description": "test",                  
}

위의 JSON 구조의 각 필드의 설명:

  • 이름 상태 표시줄 버튼을 눌러서 나오는 팝업 박스의 컨트롤의 제목이 클릭 동작을 트리거합니다.
  • 설명 상태 표시줄 버튼이 클릭 동작을 트리거 한 후에 팝업 박스에 있는 컨트롤의 설명.
  • 종류 상태 표시줄 버튼이 클릭 동작을 트리거 한 후 팝업 박스에서 나타나는 컨트롤의 유형. 타입 필드의 가능한 값은 다음과 같습니다:
    1. "number": 숫자 입력 제어.
    2. "string": 문자열 입력 제어.
    3. "selected": 드롭다운 박스 제어.
    4. "boolean": 스위치 제어.
  • defValue 상태 표시줄 버튼이 클릭 동작을 트리거 한 후 팝업 박스에서 나타나는 컨트롤의 기본 값. 드롭다운 박스 타입 컨트롤 (선택된) 이면, defValue 필드는 드롭다운 박스 옵션을 설정하는 데 사용됩니다. 예를 들어:"input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}, 드롭다운 박스 옵션의 텍스트 설명은 A, B, C로 설정됩니다.

드롭다운 박스 타입 컨트롤로 확장된 필드:

  • 옵션 상태 표시줄 버튼 컨트롤에 의해 트리거되는 페이지의 드롭다운 박스 컨트롤은 옵션을 설정하기 위해 옵션 필드를 사용할 수 있습니다. 옵션 필드의 옵션은 문자열을 지원하는 것뿐만 아니라{text: "description", value: "value"}defValue 필드를 사용하여 기본 옵션을 설정합니다.
  • 복수 이 필드가 true로 설정되면 드롭다운 박스에서 여러 선택이 지원됩니다.

입력 JSON 의inputfield는 상태 표시줄 버튼을 클릭하면 나타나는 팝업 상자에서 컨트롤을 구성합니다.group그리고input제어기 그룹을 구성합니다.group같은 데이터 구조를 가지고input필드 값. 해당 필드의 설명 참조하십시오input field.

그룹 배열

예를 들어class상태 표시줄의 버튼의 JSON 구조의 값:

function main() {
    var table = {
        type: "table",
        title: "Status bar button style",
        cols: ["Default", "Original", "Success", "Information", "Warning", "Danger"], 
        rows: [
            [
                {"type":"button", "class": "btn btn-xs btn-default", "name": "Default"},
                {"type":"button", "class": "btn btn-xs btn-primary", "name": "Original"},
                {"type":"button", "class": "btn btn-xs btn-success", "name": "Success"},
                {"type":"button", "class": "btn btn-xs btn-info", "name": "Information"},
                {"type":"button", "class": "btn btn-xs btn-warning", "name": "Warning"},
                {"type":"button", "class": "btn btn-xs btn-danger", "name": "Danger"}
            ]
        ]
    }
    LogStatus("`" + JSON.stringify(table) + "`")
}

사용 예제group필드와input필드:

function main() {
    // The drop-down box control in the page triggered by the testBtn1 button uses the options field to set options and the defValue field to set the default options. This is different from other examples in this chapter that directly use defValue to set options.
    var testBtn1 = {
        type: "button",
        name: "testBtn1",
        cmd: "cmdTestBtn1",
        input: {name: "testBtn1ComboBox", type: "selected", options: ["A", "B"], defValue: 1}
    }
  
    /* 
      Status bar button control (set input field implementation) testBtn2 button triggered by the page in the drop-down box control using the options field to set the options, options field in the options field not only supports the string,
      it also supports the use of ```{text: "description", value: "value"}``` structure. Use the defValue field to set the default option. The default option can be multiple selection (multiple selection is achieved through an array structure). Multiple selection requires setting the additional field multiple to true.
    */
    var testBtn2 = {
        type: "button", 
        name: "testBtn2",
        cmd: "cmdTestBtn2",
        input: {
            name: "testBtn2MultiComboBox", 
            type: "selected", 
            description: "Implementing multiple selection in drop-down box", 
            options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}],
            defValue: ["A", "C"],
            multiple: true
        }
    }
  
    // Status bar grouping button control (set group field implementation) testBtn3 button triggered by the page in the drop-down box control using the options field to set options, also supports the direct use of defValue set options.
    var testBtn3 = {
        type: "button",                     
        name: "testBtn3",
        cmd: "cmdTestBtn3", 
        group: [
            {name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]}, 
            {name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"}, 
            {name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]}, 
            {
                name: "comboBox4", 
                label: "labelComboBox4", 
                description: "Drop-down box 4", 
                type: "selected", 
                defValue: ["A", "C"], 
                multiple: true, 
                options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
            }
        ]
    }
    while (true) {
        LogStatus("`" + JSON.stringify(testBtn1) + "`\n", "`" + JSON.stringify(testBtn2) + "`\n", "`" + JSON.stringify(testBtn3) + "`\n")
        var cmd = GetCommand()
        if (cmd) {
            Log(cmd)
        }
        Sleep(5000)
    }
}

{@fun/Log/LogStatus LogStatus}

LogStatus-btnTypeTwo

이 JSON 구조는 상태 표시줄에 있는 버튼 컨트롤을 구성하는 데 사용된다. 버튼 제어 JSON 구조는 상태 표시줄 테이블 JSON 구조에 삽입될 수 있다. 버튼 JSON 구조의 최신 버전. 상태 표시줄 버튼 컨트롤을 구성하는 예제 ( 버튼을 트리거하고 클릭 한 후, 팝업 박스는 그룹 필드를 통해 구성되는 여러 입력 컨트롤을 포함합니다):

{
    "type": "button",
    "cmd": "open",
    "name": "Open a position and place an order",
    "group": [{
        "type": "selected",
        "name": "tradeType",
        "label": "order type",
        "description": "market order, limit order",
        "default": 0,
        "group": "trading setup",
        "settings": {
            "options": ["market order", "limit order"],
            "required": true,
        }
    }, {
        "type": "selected",
        "name": "direction",
        "label": "trading direction",
        "description": "buy, sell",
        "default": "buy",
        "group": "trading setup",
        "settings": {
            "render": "segment",
            "required": true,
            "options": [{"name": "buy", "value": "buy"}, {"name": "sell", "value": "sell"}],
        }
    }, {
        "type": "number",
        "name": "price",
        "label": "price",
        "description": "order price",
        "group": "trading setup",
        "filter": "tradeType==1",
        "settings": {
            "required": true,
        }
    }, {
        "type": "number",
        "name": "amount",
        "label": "order quantity",
        "description": "order quantity",
        "group": "trading setup",
        "settings": {
            "required": true,
        }
    }],
}

상태 표시 표시 버튼을 클릭하여 활성화되는 팝업 박스의 컨트롤은input또는group.

버튼 제어 장치의 고정 설정은:button- 네 종류 문자열 버튼 컨트롤의 텍스트, 즉 버튼 이름. 이름 문자열 버튼 컨트롤이 클릭 동작을 트리거할 때 전략에 전송되는 인터랙티브 명령 내용. cmd 문자열 상호 작용을 위한 상태 표시줄 버튼을 구성할 때, 데이터 입력도 지원됩니다. 상호 작용 명령은 궁극적으로GetCommand()함수를 추가합니다.input상태 표시줄에 있는 버튼 컨트롤의 JSON 데이터 구조에 항목을 입력 버튼이 트리거 될 때 표시되는 팝업 박스에서 입력 컨트롤을 구성합니다. 입력 구조의 오래된 버전과 비교하면 새로운 버전에는 몇 가지 새로운 필드와 변화가 있습니다.

{
    "type": "selected",
    "name": "test",         
    "label": "topic",       
    "description": "desc",  
    "default": 1,
    "filter": "a>1",
    "group": "group1",
    "settings": { ... },    // Component configuration
}

위의 JSON 구조에서 각 필드의 설명과 설명:

  • 종류 컨트롤 타입 (필요한 필드) 는 다음 설정을 지원합니다."number"숫자 입력 상자"string"문자열 입력 박스,"selected"드롭다운 박스,"boolean"컨트롤을 바꿔

  • 이름 만약 현재 JSON 구조가 입력 필드의 필드 값이라면, 레이블 필드가 설정되지 않은 경우, 이름이란 상태 표시줄 버튼을 클릭한 후 팝업 상자에서 팝업되는 컨트롤 제목입니다. 현재 JSON 구조가 그룹 필드의 필드 값 (열 구조) 의 요소인 경우, 네임은 제어 제목으로 사용되지 않습니다. 네임 필드는 제어 입력 내용의 필드 이름을 표시하는 데 사용됩니다. 예를 들어 그룹 필드의 추출은 예로 사용됩니다.

    var testBtn3 = {
        type: "button",                     
        name: "testBtn3",
        cmd: "cmdTestBtn3", 
        group: [
            {name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]}, 
            {name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"}, 
            {name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]}, 
            {
                name: "comboBox4", 
                label: "labelComboBox4", 
                description: "Drop-down box 4", 
                type: "selected", 
                defValue: ["A", "C"], 
                multiple: true, 
                options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
            }
        ]
    }
    

    이 단편에 따르면, 상태 표시줄 버튼이 상호 작용을 유발하면, 4개의 컨트롤이 있는 팝업 박스가 팝업됩니다. 모두 드롭 다운 박스 컨트롤입니다. 각 컨트롤에 대한 옵션을 설정하고 상호 작용 메시지를 보내기 위해 OK를 클릭한 후, 전략의 GetCommand 함수는cmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}- 네 JSON 구조의 이름의 값은 반환된 상호 작용 정보의 필드 이름으로 사용됩니다. 예를 들어: comboBox1, comboBox2, 등.

  • 라벨 컨트롤의 타이틀을 설정하는 데 사용됩니다.

  • 설명 컨트롤의 설명. 현재 JSON 구조가 그룹 필드의 필드 값 (열 구조) 의 요소이고 레이블 필드가 설정되지 않은 경우, 설명은 상태 표시줄 버튼을 클릭한 후 팝업 상자에서 팝업되는 컨트롤 제목입니다.

  • 기본 컨트롤의 기본 값.

  • 필터 셀렉터, 컨트롤을 숨기는데 사용된다. 이 필드를 설정하지 않는 것은 필터링 (컨트롤을 표시하는 것) 을 의미하지 않는다; 이 필드가 설정되면, 표현식이 사실일 때 필터링 (컨트롤을 표시하는 것) 이 발생하지 않는다. 표현식이 거짓일 때 필터링 (컨트롤을 표시하지 않는 것) 이 발생한다.

  • 그룹 접을 수 있는 컨트롤의 그룹화를 제어하는 데 사용된다.

  • 설정 컴포넌트 구성, 컨트롤은 다양한 UI 옵션이 있습니다. 특정 설정을 하기 위해 이 옵션을 사용 합니다. 예를 들어:

    settings:{
        multiple:true,
        customizable:true,
        options:[{name:'xxx|yyy',value:0}]
    }
    

    설정: setings.required: 필요한지 여부 settings.disabled: 비활성화 여부 settings.min: type=number 때 유효하며, 문자열의 최소 값 또는 최소 길이를 나타냅니다. settings.max: type=number 때 유효하며, 최대 값 또는 문자열의 최대 길이를 나타냅니다. settings.step: type=number와 render=slider에서 유효하며, 단계 길이를 나타냅니다. settings.multiple: type=가 선택되면 유효합니다. 여러 선택이 지원된다는 것을 나타냅니다. settings.customizable: type=가 선택되면 유효하며, 사용자 정의가 지원된다는 것을 나타냅니다. 사용자는 드롭 다운 박스 컨트롤에서 직접 편집하고 새로운 옵션을 추가 할 수 있습니다. 새로 편집된 옵션이 선택되면 상호 작용이 시작되면 옵션이 나타내는 값 대신 옵션의 이름이 사용됩니다. settings.options: type=selected가 되면 유효하며, 선택 옵션 데이터 형식을 표시합니다: [option 1, option 2], [{name:xxx,value:0}, {name:xxx,value:1}]. settings.render: 렌더링 컴포넌트 타입 type=number, settings.render가 설정되지 않은 경우 (예정 번호 입력 상자), 선택: 슬라이더 (슬라이더 바), 날짜 (시간 선택기가 시간표를 반환합니다.) type=string, settings.render가 설정되어 있지 않은 경우 (예정된 단일 줄 입력 상자), 선택: textarea (multi-line input), date (time selector returns yyyy-MM-dd hh:mm:ss), color (color selector returns #FF00FF). type=가 선택되면, settings.render가 설정되지 않습니다 (예정 드롭다운 박스), 선택: 세그먼트 (세그먼트 선택기). type=boolean 때 현재 기본 체크 박스만 있습니다.

입력 JSON 의inputfield는 상태 표시줄 버튼을 클릭하면 나타나는 팝업 상자에서 컨트롤을 구성합니다.group그리고input제어기 그룹을 구성합니다.group같은 데이터 구조를 가지고input필드 값.input field.

그룹 배열

이중 언어 설정을 지원합니다:

{
    type:'selected',
    name:'test',
    label:'选项|options',
    description:'描述|description',
    default:0,                            // Here, the default value is set to 0, which means the value in the option {name:'xxx|yyy',value:0}
    filter:'a>1&&a<10',
    group:'分组|group',
    settings:{
        multiple:true,
        customizable:true,
        options:[{name:'xxx|yyy',value:0}]
    }
}

{@fun/Log/LogStatus LogStatus}

차트 옵션

이 JSON는 사용자 지정 그림 함수의 차트 구성 정보를 설정하는 데 사용됩니다.Chart(). 사용 된 차트 라이브러리는 Highcharts입니다. 몇 가지 기본 구성 필드만 여기에 나열되어 있습니다.

플랫폼 확장 필드. 하이스톡 차트를 사용하려면 true로 설정; 하이스톡 차트를 사용하려면 false로 설정.

__is주식 문자열

{
    layout: 'single', // Not participating in grouping, displayed separately, default is group 'group'
    height: 300,      // Specify height
}

연장 JSON 차트 제목 제목 문자열 X축 구성 x축 JSON Y축 구성 y축 JSON 그래프 데이터 시리즈 시리즈 JSON

간단한 그림 예제:

// This chart is an object in JavaScript language. Before using the Chart function, we need to declare an object variable chart to configure the chart.
var chart = {                                           
    // This field marks whether the chart is a general chart. If you are interested, you can change it to false and run it.
    __isStock: true,                                    
    // Zoom tool
    tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},    
    // title
    title : { text : 'Price difference analysis chart'},                       
    // Select range
    rangeSelector: {                                    
        buttons:  [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
        selected: 0,
        inputEnabled: false
    },
    // The horizontal axis of the coordinate axis is: x-axis, and the current setting type is: time
    xAxis: { type: 'datetime'},                         
    // The vertical axis of the coordinate axis is: the y-axis, the default value is adjusted according to the data size
    yAxis : {                                           
        // title
        title: {text: 'Price difference'},                           
        // Whether to enable the right vertical axis
        opposite: false                                 
    },
    // Data series, this property saves each data series (line, K-line chart, label, etc.)
    series : [                                          
        // The index is 0, and the data array stores the data of the index series.
        {name : "line1", id : "line 1,buy1Price", data : []},                          
        // The index is 1, dashStyle:'shortdash' is set, that is, a dashed line is set
        {name : "line2", id : "line 2,lastPrice", dashStyle : 'shortdash', data : []}  
    ]
}
function main(){
    // Call the Chart function to initialize the chart
    var ObjChart = Chart(chart)         
    // Clear
    ObjChart.reset()                      
    while(true){
        // Get the timestamp of this poll, which is a millisecond timestamp. Used to determine the position of the X-axis written to the chart
        var nowTime = new Date().getTime()
        // Get market data
        var ticker = _C(exchange.GetTicker)
        // Get the buy price from the return value of the market data
        var buy1Price = ticker.Buy    
        // Get the last transaction price. In order to prevent the two lines from overlapping, we add 1.
        var lastPrice = ticker.Last + 1
        // Use the timestamp as the X value and the buy price as the Y value to pass into the data sequence of index 0
        ObjChart.add(0, [nowTime, buy1Price])
        // Same as above
        ObjChart.add(1, [nowTime, lastPrice])
        Sleep(2000)
    }
}

{@fun/Log/Chart Chart}

KLineChart 옵션

이 JSON는 사용자 지정 그림 함수의 차트 구성 정보를 설정하는 데 사용됩니다.KLineChart. 몇 가지 기본 구성 필드만 여기에 나열되어 있습니다.

주요 차트에 그려야 할 지 겹치기 bool X축 구성 x축 JSON Y축 구성 y축 JSON 촛불 차트 구성 촛불 JSON

참고하시기 바랍니다KLineChart 함수를 사용하여 차트를 그리는 특별 기사.

{@fun/Log/KLineChart KLineChart}

세트데이터-데이터

JSON은 데이터 로딩을 설정하는 데 사용됩니다.exchange.SetData()JSON 데이터는 배열 구조입니다. 각각의 요소는 배열입니다.[time, data].

이 데이터의 시간을 표시하는 데이터의 시간표 시간 번호 데이터는 데이터에 의해 로드된 데이터의 특정 시간에 대응하는 데이터의 조각입니다exchange.SetData()전략이 실행되면,exchange.GetData()이 함수는 현재 시간에 따라 해당 타임 스탬프로 데이터를 얻습니다.

데이터 문자열, 숫자, bool, 객체, 배열 등

백테스팅 시스템에 데이터를 로딩하고 전략 백테스트가 실행될 때 데이터를 검색하는 예제:

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

{@funSetData}, {@funGetData}

이벤트 루프 반환

이 JSON은EventLoop()기능.EventLoop()함수 모니터: 1. 웹소켓에서 읽을 수 있는 모든 데이터 이벤트; 2. 작업 완료 이벤트는 교환.Go ()) 및 HttpQuery_Go ()) 함수와 동시에; 3.threading.Thread()자바스크립트 언어 전략의 함수입니다.

이벤트 시퀀스 번호 제1항 번호 이벤트 이름 이벤트 문자열 이벤트 스레드 ID 스레드 번호 이벤트 인덱스 지수 번호 나노 시간표 나노 번호

사용exchange.Go()동시 요청 및 이벤트 데이터 구조를EventLoop() function.

{
    "Seq":1,
    "Event":"Exchange_GetTrades",
    "ThreadId":0,
    "Index":3,
    "Nano":1682068771309583400
}

자바스크립트 언어 전략의 동시 실행 스레드에서threading.Thread()함수) 에서postMessage()스레드 객체의 함수는 메시지를 전송하는 데 사용됩니다.EventLoop()메시지를 수신하는 스레드의 함수는 다음 이벤트 데이터 구조를 모니터링합니다.

{
    "Seq":4,
    "Event":"thread",
    "ThreadId":1,
    "Index":0,
    "Nano":1727592066508674000
}

###############################################################################################################################################################################################################################################################

DBExec-return

이 JSON은DBExec()함수; 그것은 또한 SQL 명령어를 실행 할 때 반환exec()원자로에 의해 생성된 객체의 방법Dial() function.

질의할 데이터의 열 이름, 문자열 배열. 열 배열 각 데이터 조각이 열 이름에 대응하는 특정 데이터를 검색합니다. 값 필드의 값은 2차원 배열이며, 각 요소는 배열과 데이터 기록입니다. 값 배열

데이터베이스에서 데이터를 검색하는 예제:

{
    "columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],
    "values":[
        [1518970320000,100,99.1,90,100,12345.6],
        [1518960320000,100,99.1,90,100,12345.6]
    ]
}

{@fun/Global/DBExec DBExec}, {@fun/Global/Dial Dial}

Thread.join-return

이 JSON은 멤버 함수가 반환하는 데이터 구조입니다.join()Thread객체, 동시 스레드에 대한 정보를 저장하는JavaScript언어 전략Threadobject는 스레드 오브젝트를 의미합니다.threading.Thread().

스레드 아이디 id 번호 가닥이 끝나는지 종료 bool 나노초로 나선의 실행 시간은 경과 번호 스레드 함수의 반환 값 ret 번호

다음 코드는 시공 메커니즘을 테스트합니다.join()의 역할Thread객체 및 프린트join() function.

function testFunc() {
    for (var i = 0; i < 5; i++) {
        Log(i)
        Sleep(300)
    }
}

function main() {
    var t1 = threading.Thread(testFunc)
    Log(t1.join(1000))  // undefined
    Log(t1.join())      // {"id":1,"terminated":false,"elapsed":1506864000}
} ```


{@fun/Threads/Thread/join join}
내장 기능 내장 변수