Type/to search
8
Follow
1361
Followers
Implementieren Sie einen einfachen Spot-Handelsroboter für digitale Währungen
Discussions
Created 2021-02-18 16:09:43  Updated 2023-09-26 20:57:30
 6
 4117

img

Implementieren Sie einen einfachen Spot-Handelsroboter für digitale Währungen

In der Welt der Kryptowährungen gibt es viele manuelle Händler, die Nachahmerroboter benötigen. Ihnen bereitet jedoch die Tatsache Kopfzerbrechen, dass der Einstieg in die programmatische Entwicklung ohne Grundkenntnisse sehr lange dauert. Basierend auf dieser Art von Nachfrage werden wir in diesem Artikel einen einfachen Spot-Copy-Trading-Roboter entwerfen, um Freunden im Kryptowährungskreis zu helfen, die keine Grundkenntnisse im algorithmischen Handel haben.

Lassen Sie uns zunächst die Anforderungen analysieren. Die Funktion dieses Roboters besteht darin, sicherzustellen, dass, wenn ein Konto eine Kauf- oder Verkaufsoperation durchführt, andere Kopierkonten diesem Beispiel folgen und diese Operation ausführen.
Daher klären wir zunächst zwei Themen:

  • Referenzkonto: Ein überwachtes Konto, das jede Bewegung dieses Kontos überwacht.
  • Kopierkonto: Das Konto, das Bestellungen verfolgt. Wenn eine Aktion auf dem Referenzkonto erfolgt, führt das Kopierkonto dieselbe Aktion aus.

Nachdem wir diesen Bedarf vorläufig ermittelt haben, müssen wir weiter über den nächsten Schritt nachdenken. Wie identifizieren wir die Aktionen von Referenzkonten?

Die Überwachung von Referenzkonten ist bei Spotkonten sehr einfach. Wir müssen lediglich die Anzahl der Münzen in den aktuellsten Kontoinformationsdaten mit der Anzahl der Münzen in den aktuellsten aktuell erhaltenen Kontoinformationsdaten vergleichen.
Wenn die Anzahl der Münzen in den aktuell erhaltenen Kontoinformationsdaten höher ist als im vorherigen Datensatz, beweist dies, dass das Referenzkonto einen Kaufvorgang ausgeführt hat und der Kauf erfolgreich war. Sind hingegen weniger Coins vorhanden, wird eine Verkaufsoperation für das Referenzkonto durchgeführt. Nachdem wir diese Aktion entdeckt hatten, ließen wir einfach andere Exchange-Konten denselben Vorgang durchführen.

Wenn festgestellt wird, dass eine Transaktion auf einem Referenzkonto ausgeführt wurde, muss der neueste Kontodatensatz aktualisiert werden, um mit den beim nächsten Mal erhaltenen Kontoinformationen verglichen zu werden und festzustellen, ob eine neue Transaktionsaktion vorliegt.

Die obige Logik wird durch den Strategiecode beschrieben:

javascript
// 检测跟单 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 Haupterkennungslogik der Strategie ist der obige Code. Der Einfachheit halber verwendet die Strategie die offizielle Vorlage der FMZ [Digital Currency Trading Library].$.Buy , $.SellDies sind alles Funktionen dieser Vorlage und ihre Aufgabe besteht in der Ausführung von Bestellvorgängen.

Fügen Sie der Strategie einige Statusleistenanzeigen hinzu, um die Überwachung der Daten jedes Kontos zu erleichtern. Die vollständige Strategie lautet wie folgt:

javascript
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 einen Echtzeittest mit dem simulierten Austauschtest wexApp von FMZ durchführen. Hier habe ich drei voneinander unabhängige wexApp-Konten hinzugefügt. Einer davon dient als Referenzbörse, die anderen beiden dienen als Kopienbörsen.

img

Anschließend platzieren wir über das Handelsterminal von FMZ manuell eine Bestellung und sehen, ob der Roboter die Bestellung automatisch ausführt.

img

Sie können sehen, dass der Roboter die Transaktion erkannt und den Kopiervorgang ausgeführt hat.

img

Vollständige Strategie: https://www.fmz.com/strategy/255182

Die Strategie dient nur zum Lernen. Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht.

Related Recommendations
Comment
All comments (6)

    你好,可以帮忙部署吗,付费求助。感谢。微237650136

    5 years ago

    这个策略代码开源的,策略公开在策略广场了,可以看下FMZ社区置顶的教程,初级教程是教学使用的,会基本的使用就可以部署了。

    5 years ago

    你好,可以帮忙部署吗,付费求助。感谢。微237650136

    5 years ago

    挂单可以检测跟挂单么?

    5 years ago

    您好我想问一下这个可以拿来跟单币coin上面的人码

    5 years ago

    本身币coin上就有延迟,可能你的价格跟他们的就相差很多。

    5 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)