[TOC]

양적 거래 분야에서 간단하고 사용하기 쉬운 양적 거래 도구는 항상 부의 증가와 위험 관리를 달성하는 데 중요한 열쇠 중 하나였습니다. 그러나 시장 경쟁이 점점 더 치열해짐에 따라 전통적인 거래 도구로는 더 이상 급변하는 시장 수요에 대처하기에 충분하지 않습니다. 끊임없이 변화하는 디지털 자산의 세계에서 양적 거래자가 경쟁 우위를 유지할 수 있도록 FMZ 모바일 앱에 새로운 주요 기능인 거래 터미널이 추가되었습니다. 이 기능은 거래 효율성을 향상시킬 뿐만 아니라 거래를 지원하는 사용자 정의 플러그인을 사용하여 거래 경력에 새로운 활력을 불어넣을 수 있습니다.
FMZ 양적 거래 플랫폼에서모바일 APP 다운로드 페이지FMZ 정량적 모바일 앱을 다운로드할 수 있습니다. 다운로드 및 설치 후 FMZ 모바일 앱을 열고 FMZ 계정에 로그인하세요.

FMZ Quant는 FMZ.COM 국제 사이트와 FMZ.CN 국내 사이트(다른 시장 지원)로 나뉜다는 점에 유의해야 합니다. 로그인 시 해당 사이트를 선택해야 합니다. 다른 사이트 계정은 독립적이며 보편적이지 않습니다.
FMZ 양적 거래 플랫폼 모바일 APP 거래 터미널은 주요 거래소의 API를 집약하고 중앙화한 양적 거래 도구입니다. 다양한 거래소 간을 빠르게 전환할 수 있으며, FMZ 플랫폼의 다양한 기능을 활용하여 데이터 수집 및 분석, 실시간 데이터 모니터링, 프로그래밍 기반 거래, 반자동 및 수동 거래 및 기타 작업을 실현할 수 있습니다.
FMZ Quantitative Mobile APP에 로그인하면 메인 인터페이스에서 “Trading Terminal” 기능을 볼 수 있습니다. 클릭하여 트레이딩 터미널 인터페이스로 들어갑니다.
FMZ가 모바일 APP 거래 단말기를 출시하기 전에 FMZ 웹 단말기는 이미 거래 단말기 기능을 출시했습니다. 웹 기반 거래 단말기와 모바일 APP 기반 거래 단말기는 모두최소한 하나의 호스터 애플리케이션을 배포하세요。 실제로 거래소로 전송되는 모든 상호작용 요청은 모바일 앱이 아닌 보관 기관에서 실행되므로 더 안전합니다. 또한 API 키가 IP 주소에 연결되어 있어 모바일 폰 IP가 변경되면 사용할 수 없는 번거로움도 피할 수 있습니다.

1. 트레이딩 터미널 메인 인터페이스:
거래 터미널을 열면 거래 터미널의 메인 인터페이스를 볼 수 있습니다. 빨간색 상자 영역을 클릭하여 “Custodian”, “Exchange” 및 “Trading Pair” 구성 인터페이스를 엽니다.

2. 거래 지역:
거래 영역에는 시장 심도 데이터가 표시됩니다. 거래 제어를 통해 주문 가격, 주문 수량, 주문 방향, 레버리지 및 기타 설정을 설정할 수 있습니다.

메인 인터페이스 하단의 라벨에는 “주문”, “포지션”, “자산”과 같은 정보가 표시되어 자금, 포지션, 주문을 한눈에 볼 수 있습니다.
3. K-라인 차트:
주문 시 캔들스틱 차트를 살펴보고 싶으신 분들을 위해, 현재 상품의 미니 캔들스틱 차트를 확장하여 보여주는 배려심 있는 접이식 디스플레이 컨트롤이 여기에 디자인되어 있습니다.

시장 거래 기록, 깊이 및 기타 정보를 보여주는 K-라인 차트를 더 넓은 영역에 표시하려는 경우 이 K-라인 아이콘을 클릭하여 전문가용 K-라인 차트 페이지로 이동할 수 있습니다.

전문가용 K-라인 차트 인터페이스:

전문적인 K-라인 차트 인터페이스는 수평으로도 표시될 수 있습니다.

거래 터미널 플러그인은 무엇을 할 수 있나요?
플러그인을 개발하는 데 어떤 프로그래밍 언어와 도구를 사용합니까?
무엇을 얻을 수 있나요?
FMZ 커뮤니티에서 사용자들은 다음과 같은 요구 사항을 제시했습니다.
js를 사용하여 Binance Exchange의 모든 U 계약 통화를 탐색하고 각 통화에 대해 10u 포지션(롱)을 엽니다. 이 코드를 어떻게 작성합니까?
이 수요 시나리오는 실제로 거래 터미널 플러그인을 사용하여 완전히 실현될 수 있으며, 거래 터미널은 플러그인 전략을 실행하는 데 무료입니다. 장기 실시간 전략 거래 터미널 플러그인 지원 거래와 비교하면 의심할 여지 없이 좋은 선택이에요.
사용자가 제기한 이러한 요구사항을 어떻게 설계하고 구현할지 살펴보겠습니다.
먼저, 거래 터미널 플러그인을 생성하고 플러그인 전략에 3개의 매개변수를 추가해야 합니다.

이제 플러그인 작성을 시작합니다.
function main() {
let exName = exchange.GetName()
if (exName != "Futures_Binance") {
return "not support!"
}
let apiBase = "https://fapi.binance.com"
if (isSimulate) {
apiBase = "https://testnet.binancefuture.com"
Log("切换基地址:", apiBase)
}
exchange.SetBase(apiBase)
try {
var obj = JSON.parse(HttpQuery(apiBase + "/fapi/v1/exchangeInfo"))
} catch (e) {
Log(e)
}
let pairs = []
for (var i in obj.symbols) {
if (obj.symbols[i]["status"] !== "TRADING" || obj.symbols[i]["quoteAsset"] !== "USDT") {
continue
}
let = pair = obj.symbols[i]["baseAsset"] + "_" + obj.symbols[i]["quoteAsset"]
pairs.push(pair)
}
let markets = _C(exchange.GetMarkets)
for (var i in pairs) {
// /*
// 这里为了测试,只开仓10个品种,如果要全品种,这段注释内容可以删除
if (i >= 9) {
break
}
// */
let pair = pairs[i]
exchange.SetCurrency(pair)
exchange.SetContractType("swap")
let ticker = exchange.GetTicker()
if (!ticker) {
continue
}
let = amountPrecision = markets[pair + ".swap"]["AmountPrecision"]
exchange.SetDirection("buy")
let amount = _N(qty / ticker.Last, amountPrecision)
if (amount > 0) {
exchange.Buy(-1, amount)
}
Sleep(100)
}
// 获取所有持仓
let pos = exchange.IO("api", "GET", "/fapi/v2/positionRisk")
if (!pos) {
return
}
// 查看持仓
return pos.filter(item => Number(item.positionAmt) != 0)
}
거래 터미널 플러그인을 작성한 후 테스트할 수 있습니다.
모바일 APP의 거래 터미널에서 “…” 버튼을 클릭하여 거래 터미널 플러그인 목록을 엽니다. 현재 FMZ 계정 전략 라이브러리의 모든 거래 터미널 플러그인이 이 목록에 표시되며, 선택하여 사용합니다.

모바일 APP에서 작업을 완료한 후, 다음 코드를 사용하여 Binance 시뮬레이션 디스크의 보유량을 쿼리합니다.
function main() {
let apiBase = "https://testnet.binancefuture.com"
exchange.SetBase(apiBase)
let pos = exchange.IO("api", "GET", "/fapi/v2/positionRisk")
if (!pos) {
return
}
// 查看持仓
return pos.filter(item => Number(item.positionAmt) != 0)
}
쿼리 데이터:
[{
"symbol": "ETCUSDT",
"entryPrice": "16.17",
"unRealizedProfit": "0.08567881",
"positionSide": "LONG",
"updateTime": 1698420908103,
"isolated": false,
"breakEvenPrice": "16.176468",
"leverage": "20",
"adlQuantile": 3,
"positionAmt": "0.65",
"markPrice": "16.30181356",
"liquidationPrice": "0",
"maxNotionalValue": "400000",
"marginType": "cross",
"notional": "10.59617881",
"isolatedMargin": "0.00000000",
"isAutoAddMargin": "false",
"isolatedWallet": "0"
}, {
"positionAmt": "105",
"markPrice": "0.09371526",
"liquidationPrice": "0",
"leverage": "20",
"maxNotionalValue": "90000",
"positionSide": "LONG",
"isolatedWallet": "0",
"symbol": "TRXUSDT",
"updateTime": 1698420906668,
"breakEvenPrice": "0.094497784",
"isolatedMargin": "0.00000000",
"isolated": false,
"entryPrice": "0.09446",
"adlQuantile": 1,
"unRealizedProfit": "-0.07819770",
"isAutoAddMargin": "false",
"notional": "9.84010230",
"marginType": "cross"
}, {
"unRealizedProfit": "-0.00974456",
"isAutoAddMargin": "false",
"notional": "9.97449543",
"isolatedWallet": "0.50309216",
"updateTime": 1698420905377,
"markPrice": "67.85371047",
"isolatedMargin": "0.49334760",
"adlQuantile": 2,
"symbol": "LTCUSDT",
"entryPrice": "67.92",
"liquidationPrice": "64.91958163",
"maxNotionalValue": "250000",
"positionSide": "LONG",
"isolated": true,
"positionAmt": "0.147",
"breakEvenPrice": "67.947168",
"leverage": "20",
"marginType": "isolated"
}, {
"liquidationPrice": "1613.23261508",
"marginType": "isolated",
"isolated": true,
"symbol": "ETHUSDT",
"entryPrice": "1784.27",
"markPrice": "1783.35661952",
"isAutoAddMargin": "false",
"positionSide": "LONG",
"notional": "8.91678309",
"leverage": "10",
"maxNotionalValue": "30000000",
"isolatedWallet": "0.89551774",
"adlQuantile": 1,
"positionAmt": "0.005",
"breakEvenPrice": "1784.983708",
"unRealizedProfit": "-0.00456690",
"isolatedMargin": "0.89095084",
"updateTime": 1698420900362
}, {
"positionAmt": "17.1",
"marginType": "cross",
"isolatedWallet": "0",
"adlQuantile": 2,
"liquidationPrice": "0",
"maxNotionalValue": "250000",
"positionSide": "LONG",
"isolated": false,
"symbol": "EOSUSDT",
"breakEvenPrice": "0.6432572",
"updateTime": 1698420904257,
"isolatedMargin": "0.00000000",
"isAutoAddMargin": "false",
"notional": "10.34550000",
"entryPrice": "0.643",
"markPrice": "0.60500000",
"unRealizedProfit": "-0.64980000",
"leverage": "20"
}, {
"isolated": false,
"adlQuantile": 1,
"liquidationPrice": "0",
"maxNotionalValue": "10000000",
"notional": "9.73993328",
"leverage": "20",
"updateTime": 1698420901638,
"symbol": "BCHUSDT",
"entryPrice": "250.0",
"markPrice": "243.49833219",
"isAutoAddMargin": "false",
"positionSide": "LONG",
"positionAmt": "0.040",
"breakEvenPrice": "250.1",
"isolatedMargin": "0.00000000",
"unRealizedProfit": "-0.26006671",
"marginType": "cross",
"isolatedWallet": "0"
}]
6개의 포지션이 오픈된 것을 볼 수 있습니다. 이는 주문을 할 때 시뮬레이션 주문이기 때문에 제한 가격을 트리거하기 쉽기 때문입니다. 또한 주문이 10U이므로 최소 주문 금액을 트리거하기 쉽습니다. 거래 쌍의 한계입니다. 따라서 여러 가지가 있습니다. 거래 쌍에 대한 주문이 성공적으로 배치되지 않았습니다. 실제 사용에 더 실용적인 상황을 고려해야 하는 경우, 이 플러그인은 더 나은 사용을 위해 최적화될 수 있습니다. 이 코드는 커뮤니케이션을 가르치는 데만 사용됩니다.
FMZ 양적 거래 플랫폼 모바일 APP 거래 터미널에는 흥미로운 플러그인이 많이 있습니다. 함께 살펴보세요!
/upload/asset/16b436307a4ce5c246c2.mp4
FMZ 모바일 앱의 새로운 거래 터미널 기능은 디지털 자산 시장에서 여러분의 오른팔이 되어, 시장 변동과 기회에 더욱 유연하게 대응할 수 있도록 도와드릴 것입니다. 더 이상 전통적인 거래 전략에 국한되지 않고, 사용자 정의 플러그인을 사용하면 보다 스마트하고 효율적이며 시장에 더 잘 적응하는 거래 전략을 만들 수 있습니다. 우리와 함께 양적 거래의 흥미진진한 새로운 장을 시작해 보고 여러분의 거래 기술과 수익을 향상시켜 보세요.