지난 기사에서 독자가 언급한 바와 같이, 모니터링 계약 계좌 회계 예제를 필요로하는 절차가 필요하고, 이 기사에서 우리는 바이오인 거래소를 테스트 대상으로 사용하여이 요구를 실현하고, 함께 설계하는 방법을 배우려고합니다.
암호화폐 거래소는 매일 수많은 거래를 처리하고 있으며, 여기에는 다양한 지갑 간의 자산 분할이 포함됩니다. 이러한 분할을 실시간으로 모니터링하는 것이 거래자와 개발자에게 중요합니다. 이 문서에서는 암호화폐 거래소에서 가장 최근의 자산 분할을 모니터링하고 핵심 구성 요소를 논의하는 자바스크립트 코드를 탐구합니다.
이 거래소의 문서를 살펴본 결과, 모든 회전 정보를 검색할 수 있는 회전 역사 인터페이스가 있다는 것을 알게 되었다. 우리는 단지 일어날 수 있는 회전 기록을 모니터링하기 때문에 모든 회전 역사를 얻을 필요가 없다. 우리는 단지 특정 빈도에 따라 최근 범위의 회전 기록을 검사해야 한다. 새로운 회전 기록이 발견되면 업데이트, 알림이 필요하다.
이 인터페이스를 사용하세요:
// GET /sapi/v1/asset/transfer type, size : 100
그렇다면 새로운 스카이브 기록은 어떻게 확인해야 할까요? 비안안 문서에 보면 이 인터페이스가 반환하는 데이터에 시간표가 있다는 것을 알게 되는데, 시간표로 판단하는 것은 매우 간단합니다. 현재 기록된 최대 시간표보다 더 큰 기록만 있으면 새로운 스카이브 회전이 일어난다는 것을 나타냅니다.
当然实际设计的时候还有有很多细节,例如查看文档发现,划转方向有很多,所以我们要对每个划转方向都进行监测。代码中定义了```var dicType = {...}```来管理所有的划转方向。
为了更好的显示内容,我们使用一个状态栏表格在策略界面中输出最近5条的划转信息,所以我们就构造了一个名为:```monitor```的对象用来记录数据。当然你不能无限制的记录划转信息,所以我们只维持每个划转方向100条记录,超过100条就删除过早的记录。
### 代码范例
```js
function getRecentTransferHistory(TransType, typeDesc) {
// GET /sapi/v1/asset/transfer type, size : 100
var rows = null
var ret = exchange.IO("api", "GET", "/sapi/v1/asset/transfer", `type=${TransType}&size=100`)
Log("/sapi/v1/asset/transfer" + `type=${TransType}&size=100`)
if (ret && typeof(ret.rows) != "undefined" && Array.isArray(ret.rows)) {
rows = ret.rows
} else if (ret && typeof(ret.total) != "undefined" && ret.total == 0) {
rows = []
} else {
Log(TransType, typeDesc, "查询失败", ret)
}
return rows
}
var monitor = {}
function monitorTransfers() {
var dicType = {
"MAIN_UMFUTURE": "现货钱包 --> U本位合约钱包",
"MAIN_CMFUTURE": "现货钱包 --> 币本位合约钱包",
"UMFUTURE_MAIN": "U本位合约钱包 --> 现货钱包",
"UMFUTURE_MARGIN": "U本位合约钱包 --> 杠杆全仓钱包",
"CMFUTURE_MAIN": "币本位合约钱包 --> 现货钱包",
"MARGIN_UMFUTURE": "杠杆全仓钱包 --> U本位合约钱包",
"MARGIN_CMFUTURE": "杠杆全仓钱包 --> 币本位合约钱包",
"CMFUTURE_MARGIN": "币本位合约钱包 --> 杠杆全仓钱包",
"FUNDING_UMFUTURE": "资金钱包 --> U本位合约钱包",
"UMFUTURE_FUNDING": "U本位合约钱包 --> 资金钱包",
"FUNDING_CMFUTURE": "资金钱包 --> 币本位合约钱包",
"CMFUTURE_FUNDING": "币本位合约钱包 --> 资金钱包",
"UMFUTURE_OPTION": "U本位合约钱包 --> 期权钱包",
"OPTION_UMFUTURE": "期权钱包 --> U本位合约钱包",
// 统一账户
"MAIN_PORTFOLIO_MARGIN": "现货钱包 --> 统一账户钱包",
"PORTFOLIO_MARGIN_MAIN": "统一账户钱包 --> 现货钱包"
}
Log("开始检测")
_.each(dicType, function(v, k) {
var rows = getRecentTransferHistory(k, v)
var maxTS = 0
_.each(rows, function(row) {
if (typeof(monitor[k]) == "undefined") {
monitor[k] = {"transType": k, "typeDesc": v, "recentRecords": [], "lastTS": 0}
}
if (row["timestamp"] > monitor[k]["lastTS"]) {
monitor[k]["recentRecords"].push(row)
if (monitor[k]["lastTS"] != 0) {
Log("检测到新增划转记录", k, v, row, "#FF0000")
}
}
maxTS = Math.max(maxTS, row["timestamp"])
})
if (rows && rows.length == 0) {
return
}
monitor[k]["lastTS"] = maxTS
var sortedArrayAscending = monitor[k]["recentRecords"].slice().sort((a, b) => a.timestamp - b.timestamp)
monitor[k]["recentRecords"] = sortedArrayAscending
if (monitor[k]["recentRecords"].length > 100) {
monitor[k]["recentRecords"].shift()
}
Sleep(1000)
})
Log("开始结束")
}
function main() {
LogReset()
while (true) {
monitorTransfers()
var tbls = []
_.each(monitor, function(v, k) {
var tbl = {
"type": "table",
"title": v["typeDesc"],
"cols": ["asset", "amount", "status", "tranId", "time"],
"rows": []
}
var arr = v["recentRecords"].slice().sort((a, b) => b.timestamp - a.timestamp)
for (var i = 0; i < arr.length; i++) {
if (i < 5) {
tbl["rows"].push([arr[i]["asset"], arr[i]["amount"], arr[i]["status"], arr[i]["tranId"], _D(arr[i]["timestamp"])])
}
}
tbls.push(tbl)
})
LogStatus(_D(), "\n", "`" + JSON.stringify(tbls) + "`")
Sleep(1000 * 30)
}
}
제공된 자바스크립트 코드는 몇 가지 기능으로 구성되어 있으며, 최근 자산 분할을 모니터링하는 시스템을 구성합니다.
목적: 지정한 매개 변수에 따라 거래소 API에서 최근 자산 이동 역사를 얻는다. 매개 변수: TransType (변경형), typeDesc (변경형) API 끝점: /sapi/v1/asset/transfer.
목적: 미리 정의된 회전 유형을 탐색하고, 최근 회전 역사를 검색하고, 새로운 회전을 기록합니다. dicType를 사용하여 쉽게 읽을 수 있는 설명으로 회전형의 매핑을 수행합니다. 업데이트된 모니터 객체에서 각 유형의 최신 회선을 추적합니다.
목적: 무한한 순환을 실행하고, 지속적인 모니터링, 회전 및 최신 데이터를 표시합니다. monitorTransfers 기능을 정기적으로 사용합니다. 각 회전 유형에 대해 자산, 금액, 상태, 트랜잭션 ID 및 시간표와 같은 열을 포함하는 테이블을 생성합니다.
코드 사용 사전 (dicType) 은 각 지표의 특성에 대한 명확한 설명을 제공하기 위해 지표형 유형을 설명 이름에 매핑합니다.
이 시스템은 새로운 회전을 지속적으로 검사하고, 모니터 객체를 업데이트하고, 감지된 변경사항을 기록합니다.
테이블을 사용하여 자산, 금액, 상태, 트랜잭션 ID 및 시간표 등과 관련된 세부 사항을 포함하여 각 유형의 분할 데이터를 표시하십시오.
각 유형에 대한 최신 스크립트 기록의 롤링 목록을 유지하여 간결하고 적절한 표시를 보장합니다.
수동으로 한 번 회전한 후, 프로그램이 회전 동작을 감지합니다.
제공된 자바스크립트 코드는 암호화폐 거래소에서의 최근 자산 분할을 모니터링하는 강력한 솔루션을 제공합니다. 그것의 역동적이고 실시간 특성으로 인해 거래자와 개발자가 다른 지갑들 사이의 자산 이동을 이해하려는 귀중한 도구가 됩니다. 이 코드는 특정 요구에 따라 수정 및 사용자 정의 할 수 있으며, 암호화폐 거래 전략을 강화하거나 추가 모니터링 기능을 개발하려는 사람들에게 단단한 기반을 제공합니다.
이 글은 여러분의 암호화폐 경력이 정보와 성공으로 가득 차도록 디자인 아이디어를 제공합니다.
98K-파운드 추적_Long조그마한 꿈의 선생님, 현실의 더 이상 A 꿈의 선생님, 가장 큰 사랑 당신을