Type/to search
8
Follow
1361
Followers
シンプルなデジタル通貨スポット取引ロボットを実装する
Discussions
Created 2021-02-18 16:09:43  Updated 2023-09-26 20:57:30
 6
 4118

img

シンプルなデジタル通貨スポット取引ロボットを実装する

暗号通貨業界には、コピーキャットロボットを必要とする手動トレーダーが多くいますが、基礎知識がないとプログラム設計を始めるのに時間がかかることに困っています。このような需要に基づいて、この記事では、アルゴリズム取引の基礎知識を持たない暗号通貨業界の友人を支援するために、シンプルなスポットコピー取引ロボットを設計します。

まず、ニーズを分析しましょう。このロボットの機能は、1 つのアカウントで購入または販売操作が行われると、他のコピー アカウントもそれに追随してこの操作を実行するようにすることです。
したがって、まず 2 つの主題を明確にします。

  • 参照アカウント: このアカウントのすべての動きを監視する監視対象アカウント。
  • コピー アカウント: 注文に従うアカウント。参照アカウントでアクションが発生すると、コピー アカウントは同じアクションを実行します。

このニーズを予備的に特定したので、次のステップについて引き続き検討する必要があります。参照アカウントのアクションをどのように識別しますか?

スポット口座の場合、参照口座の監視は非常に簡単で、最新の口座情報データ内のコイン数と、現在取得している最新の口座情報データ内のコイン数を比較するだけです。
現在取得している最新のアカウント情報データのコイン数が前回の記録よりも多い場合、参照アカウントが購入操作を実行し、購入が成功したことが証明されます。逆にコインが少ない場合は、参照アカウントに対して売却操作が実行されます。このアクションを発見したら、他の取引所アカウントでも同じ操作を実行できるようになります。

参照アカウントでトランザクションが実行されたことが判明した場合、最新のアカウントデータレコードを更新し、次回取得されたアカウント情報と比較して、新しいトランザクションアクションがあるかどうかを判断する必要があります。

上記のロジックは、戦略コードによって記述されます。

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 // 更新参考交易所最近一次的账户信息,用于下次对比

この戦略の主な検出ロジックは上記のコードです。設計を簡素化するために、この戦略では FMZ 公式 [デジタル通貨取引ライブラリ] テンプレートを使用します。$.Buy , $.Sellこれらはすべてこのテンプレートの機能であり、注文操作を実行することがその機能です。

各アカウントのデータの監視を容易にするために、戦略にいくつかのステータス バー表示を追加します。完全な戦略は次のとおりです。

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 } }

FMZ の wexApp 模擬交換テストを使用してリアルタイム テストを実行してみましょう。ここで、互いに独立した 3 つの wexApp アカウントを追加しました。そのうちの 1 つは参照交換として機能し、他の 2 つはコピー交換として機能します。

img

次に、FMZ の取引端末を使用して手動で注文を出し、ロボットが自動的に注文に従うかどうかを確認します。

img

ロボットがトランザクションを検出し、コピー操作を実行したことがわかります。

img

完全な戦略: https://www.fmz.com/strategy/255182

この戦略は学習のみを目的としています。ご質問がある場合は、メッセージを残してください。

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)