Einige Freunde von Coin Circle, die manuell handeln, benötigen einen Roboter, aber es dauert länger, wenn sie an 0-Grundlagen arbeiten. Aufgrund dieser Bedürfnisse haben wir in diesem Artikel gemeinsam einen einfachen Roboter entwickelt, der ihnen hilft, 0-Grundlagen zu lernen.
Zuerst analysieren wir die Bedürfnisse, und die Funktion des Roboters ist es, zu realisieren, dass, wenn ein Konto eine Kauf- oder Verkaufsaktion ausführt, die anderen Kontos folgen. Wir haben also zwei Themen zuerst definiert:
Wenn wir das erst einmal klargestellt haben, dann müssen wir weiter darüber nachdenken.
Die Überwachung des Referenzkontos ist sehr einfach, wenn es sich um ein Bargeldkonto handelt, indem wir einfach die Anzahl der Münzen in den letzten Kontoinformationsdaten mit der Anzahl der Münzen in den aktuell erhaltenen neuesten Kontoinformationsdaten vergleichen. Wenn die Anzahl der Münzen in den aktuellen Kontoinformationsdaten mehr ist als die Anzahl der Münzen in den letzten Aufzeichnungen, dann ist dies der Beweis, dass das Referenzkonto eine Kaufoperation durchgeführt hat und der Kauf erfolgreich war. Andererseits, wenn es weniger Münzen gibt, dann wird ein Verkauf für das Referenzkonto durchgeführt.
Wenn man feststellt, dass ein Referenzkonto nach einer Transaktion ausgeführt wurde, muss man die letzten Datensätze des Kontos aktualisieren, um zu sehen, ob neue Transaktionen stattgefunden haben.
Die logische Strategie wird in folgenden Codes beschrieben:
// 检测跟单
var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks) // 检测币数发生的变化
var func = null
if (amount > 0) { // 币变多了
func = $.Buy // 买入
} else if (amount < 0) { // 币变少了
func = $.Sell // 卖出
} else {
continue
}
// 执行跟单
Log("跟单!数量:", Math.abs(amount), "#FF0000")
for (var i = 1 ; i < exchanges.length ; i++) { // i 等于 0 时,是参考交易所,不处理,处理其它的跟单交易所
func(exchanges[i], Math.abs(amount)) // 执行具体的交易函数,可能是$.Buy 或者是 $.Sell ,具体看amount 是大于0,还是小于0
}
// 执行跟单之后更新参考交易所账户信息记录
initAcc = nowAcc // 更新参考交易所最近一次的账户信息,用于下次对比
Die Hauptdetektionslogik der Strategie ist der oben genannte Code. Zur Vereinfachung des Designs verwendet die Strategie die offizielle FMZ-Library-Library-Library-Library-Library-Library-Library-Library-Template.$.Buy
, $.Sell
Die Funktion ist die Ausführung der folgenden Operationen.
Die vollständige Strategie zeigt, wie man die Daten der einzelnen Konten einfach überwachen kann, indem man den Statusfenster der Politik hinzufügt:
function test() {
// 测试函数
var ts = new Date().getTime()
if (ts % (1000 * 60 * 60 * 6) > 1000 * 60 * 60 * 5.5) {
Sleep(1000 * 60 * 10)
var x = Math.random()
if (x > 0.5) {
$.Buy(exchange, x / 10)
} else {
$.Sell(exchange, x / 10)
}
}
}
function main() {
LogReset(1)
if (exchanges.length < 2) {
throw "没有跟单的交易所"
}
var exName = exchange.GetName()
// 检测参考交易所
if (exName.includes("Futures_")) {
throw "仅支持现货跟单"
}
Log("开始监控", exName, "交易所", "#FF0000")
// 检测跟单交易所
for (var i = 1 ; i < exchanges.length ; i++) {
if (exchanges[i].GetName().includes("Futures_")) {
throw "不支持期货交易所跟单"
}
}
var initAcc = _C(exchange.GetAccount)
while(1) {
if(IsVirtual()) {
// 测试函数
test()
}
Sleep(5000)
// 更新参考账户当前的账户信息
var nowAcc = _C(exchange.GetAccount)
// 参考交易所账户信息
var refTbl = {
type : "table",
title : "参考交易所",
cols : ["名称", "币", "冻结币", "钱", "冻结钱"],
rows : []
}
refTbl.rows.push([exName, nowAcc.Stocks, nowAcc.FrozenStocks, nowAcc.Balance, nowAcc.FrozenBalance])
// 跟单交易所账户信息
var followTbl = {
type : "table",
title : "跟单交易所",
cols : ["名称", "币", "冻结币", "钱", "冻结钱"],
rows : []
}
for (var i = 1 ; i < exchanges.length ; i++) {
var acc = _C(exchanges[i].GetAccount)
var name = exchanges[i].GetName()
followTbl.rows.push([name, acc.Stocks, acc.FrozenStocks, acc.Balance, acc.FrozenBalance])
}
// 状态栏显示
LogStatus(_D(), "\n`" + JSON.stringify(refTbl) + "`", "\n`" + JSON.stringify(followTbl) + "`")
// 检测跟单
var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks)
var func = null
if (amount > 0) {
func = $.Buy
} else if (amount < 0) {
func = $.Sell
} else {
continue
}
// 执行跟单
Log("跟单!数量:", Math.abs(amount), "#FF0000")
for (var i = 1 ; i < exchanges.length ; i++) {
func(exchanges[i], Math.abs(amount))
}
// 执行跟单之后更新参考交易所账户信息记录
initAcc = nowAcc
}
}
Lassen Sie uns das in der Praxis testen, indem wir FMZ's WexApp Simulation-Exchange testen. Hier habe ich drei WexApp-Accounts hinzugefügt, die unabhängig voneinander sind.
Dann werden wir mit dem FMZ-Trading-Terminal die nächste Rechnung manuell abschalten, um zu sehen, ob der Roboter die Rechnung automatisch bezahlt.
Sie können sehen, dass der Roboter die Transaktion erkannt und die Nachfolge durchgeführt hat.
Die volle Strategie:https://www.fmz.com/strategy/255182
Die Strategie dient nur dem Lernen.
Die SayanerHallo, könnt ihr mir helfen, die Einführung zu finanzieren. Danke.
Die SayanerHallo, könnt ihr mir helfen, die Einführung zu finanzieren. Danke.
FettkäseKann man die Aufhängung erkennen?
13169222039Hallo, ich möchte Sie fragen, ob Sie die Nummer der Person an der Münze bekommen können.
Die Erfinder quantifizieren - Kleine TräumeDie Strategie ist offen, sie ist auf Strategie Square veröffentlicht und die FMZ-Community hat ein Tutorial veröffentlicht, das für die Lehre verwendet wird und für die grundlegende Verwendung bereitgestellt wird.
RootmeEs gibt eine Verzögerung bei den eigentlichen Coins, vielleicht ist dein Preis sehr unterschiedlich.