设计自己的机器人(要求图文并茂,写在四线三格内)

时间:2022-08-11 19:49:14 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
设计自己的机器人(要求图文并茂,写在四线三格内)

我最近编写了第一个加密货币交易机器人。从每十分钟收集一次比特币的历史价格开始——我把这些数据装入Python Pandas的数据库里,运行一些程序模拟,进行低买高卖。

这看起来很不错,代码也很简单,用不了几个小时就可以搞定一robin_stock函数,然后用其大干一场。但我错了,这是我在这个失误中学到的东西,可能会帮助你节省一点时间。

模拟交易比现实交易更加简单

当进行模拟交易,操作人可能需要做一些假设。程序决定在哪个时刻以该价格买进或卖出,并且每次都成功的话,就意味着取得了利润的最大值。

但现实并非这么简单。实际交易需要一点进行时间,价格也在不断变化。当程序进行实时交易时,价格发生显著变化之前只能完成一部分的订单,甚至可能无法完成任何订单。

我把这称为“摇摆和错过”。制作出的智能交易机器人需要平滑的处理此类情况。对此,我选择保存交易的订单号,经常对结果进行查询。如果一个小时后这笔交易还没有进行,机器人就会取消订单然后再进行一次尝试。

在模拟中所有的订单都可以按预期完成——但在现实生活中,要检查订单的完成与丢失情况。

限制买卖是好帮手

当进行实时交易时,需要以限价单或者市场单的形式发布这个买


卖。有了市场指令之后,交易将以任何现行汇率完成,这并不好。因为价格可能在几秒钟内波动。这就是使用机器人作为首选的原因。以我通过限制交易的方式下单,如果价格剧烈波动的话,它就不会以超出预期的价格买入或卖出。

注意精确度

现在回想起来,这是显而易见的,但是当代码第一次运用时,它就给我带来了一些麻烦,在模拟中发布一个购买

(cash_on_hand/coin_price)是可行的。当然,模拟可能会储存购买12.2342348998729384797 ETH,但在模拟中没人会在乎。

但是如果在现实生活中尝试这么做是很可能失败的。交易平台对购买量和价格的精确度有限制,并且会根据币种的不同有所变化。你想到这一点的时候就会明白——DOGE目前的售价只有几分之一美分,BTC的售价目前超过1.9万美元,不可能像买BTC一样合理的购买极小部分的DOGE

机器人为每个币种的价格和购买量建立了最精确的查找表,并使用它们计算购买订单数量。如果发生了执行错误,服务器会发送错误反馈。

不能假设服务器总如期望的那样响应

这只是一个编程实践,但是如果不第一时间就写出来的话,这个程序很快就会被理解。每次发出与服务器对话的调用——获取价格、发出订单、检查状态——检查异常,每一次执行中都是如此。

你的模拟如果没有维护窗口,则不会出现服务器故障与对未编写


错误库的调用,现实生活中实际交易的要素如此多,并且……

假设互联网连接失败,电源关闭的内容

必须处理断电、上网和程序崩溃的问题。如果正在计算移动平均线或RSI这类值,或是观察烛台模式,需要非常确定数据的连续性与不中断。如果中断可能导致程序出现错误的调用。需要对状态进行保存,检查数据的日期戳。如果在计算指示符时发现数据中断,则需要暂停执行直到得到需要计算的全部数据。

匹配币种与正确的售价

出现以下错误是完全可能的,机器人试图以另一个币种的价格出售某个币种。这会导致一些非常愚蠢的事情发生。由于一个糟糕的设计决定,某个早期版本的机器人试图以当时BCH的成本出售一些BTC这低了一个数量级。

这个数据没有让我非常难过的原因是,这个价格相差是如此之远,以至于服务器将其标记为错误,如果只是差了,例如,一个因数4话,这个错误交易会让我付出很多代价。

让机器人给你发短信非常有用

大多数手机公司都有发送电子邮件的方式,这些邮件会以短信的形式发送到手机,这让我们可以在做其他事情时实时了解机器人在做什么。例如想知道的机器人取得的成功,或是一定需要知道的机器人做的傻事。

我将短信配置设置为告诉我何时买进买出,并且发送每个交易订单的结果。这样我就知道机器人是否下达了成功的订单。


本文来源:https://www.wddqw.com/doc/46ead67728160b4e767f5acfa1c7aa00b52a9da1.html