最好买硬币!

optimal-buy-cbpro的Python项目详细描述


optimal buy cbpro(以前的optimal buy gdax)

Build StatusMaintainabilityTest CoveragePyPI version

计划从Coinbase Pro(以前的GDax)购买BTC、ETH和LTC是最佳选择!

crypto

这是什么?

这是一个python脚本,可以用来自动购买比特币、以太坊, LiteCoin,以及更多使用CoinBase Pro API的应用程序。默认情况下,它购买这三种货币, 按市值加权(按 coinmarketcap.com),使用dollar cost averaging的形式,根据 以下逻辑(假设为默认值):

  1. 检查菲亚特(默认为美元)、BTC、ETH和LTC的当前余额
  2. 如果菲亚特的余额高于25美元,则购买按市场加权的BTC、ETH和LTC 上限如下:
    • 如果有足够的菲亚特,在 当前价格减去0.5%至4.5%,每个订单剩余的1/5 每枚硬币的购买金额(参见 “Details on the orders placed”,下面)
    • 如果没有足够的美元可用,1个购买订单在0.5%的折扣 当前价格(见 “Order Minimums”)
  3. 如果菲亚特账户余额低于25美元(或您指定的任何金额),则提取 硬币到所需地址

实际上,这个脚本模拟了市值加权指数的行为 基金,但不收费。它也只支持在CoinBase Pro上交易的硬币 (因为这是唯一一个拥有ACH存款API的交易所)。

您也可以使用相同的脚本从您的银行帐户安排存款 周期性的,比如当你得到报酬的时候。参数可以配置为适合 您的偏好,如购买哪种硬币、外部余额、折扣 值、步数等。

订单、存款和取款在sqlite数据库中跟踪,取款 将天平添加到Coinbase Pro上的天平上,以确保重量 随着时间的推移而保持。sqlite数据库可以换成任何 sqlalchemy支持。

关于默认参数的注意事项:您可能希望更改 --starting-discount--discount-step--order-count。传播越广 订单数量(即当前价格与最低价格之间的差额 价格订单),他们将需要更长的时间来填充(如果他们填充),并且越接近 订单越多,你越有可能错过更大的降价。你 应该考虑到你对风险的偏好以及你想优化多少 抓住那些下挫vs.不错过收获。这里没有魔法。我的 个人建议是,在一定程度上接近违约,并尝试 每周继续多存一点菲亚特以分散风险 钓几条。

理想情况下,此脚本将有助于确保当我们蘸水时-

dip

我们购买

自担风险使用

嗯。如果你失去了一切,那不是我的错。

除非你把absolute trust放在我身上,我建议你找个网上的人 克隆repo并构建自己的容器以保护自己不受任何 有趣的生意。

我怎么用?

包本身可以用作Docker容器,或者通过安装 带有pip install optimal-buy-cbpro的pip包。使用Docker容器 建议避免python环境问题。运行说明 使用Docker和Systemd如下:

  1. 给自己买个硬件钱包,比如 LedgerTREZOR

  2. 设置Coinbase Pro帐户,并链接您的银行帐户

  3. 创建一个coinbase pro api密钥,其中包含view、trade、manage、transfer和bypass-2fa 权限

  4. 使用 Coinbase Pro API(您可以使用浏览器的 开发人员工具栏, here's a quick video showing how

  5. 用Docker和Systemd在某处(GCE、EC2、Digital Ocean)买台机器

  6. 复制系统文件:

    $ sudo cp systemd/optimal-buy-cbpro-*.{service,timer} /etc/systemd/system
    
  7. 编辑^{}^{}^{},和 ^{}你喜欢。确保您:

    • 更换BTC、ETH和L存放硬币的TC取款地址 放入钱包(使用分类账或Trezor)
    • 弹出正确的API键
    • 检查存款金额(从一些小东西开始,比如150美元 当然,它实际上是首先工作的)
    • 检查计时器日期(可以更改hh:mm,以便 脚本与其他所有脚本的运行时间不同),请确保存款 计时器会根据您的存款计划启动(请记住 通常需要2-5个工作日才能清除)
    • 考虑指定您的外部余额,以便准确地 计算要购买的重量和金额
  8. 启用系统单位:

    $ sudo systemctl enable optimal-buy-cbpro-buy.service
    $ sudo systemctl enable optimal-buy-cbpro-buy.timer
    $ sudo systemctl enable optimal-buy-cbpro-deposit.service
    $ sudo systemctl enable optimal-buy-cbpro-deposit.timer
    
  9. 启动系统计时器: $sudo systemctl start optimal buy cbpro buy.timer$sudo systemctl start optimal-buy-cbpro-deposit.timer

  10. 享受吧!

配置

usage: optimal-buy-cbpro [-h] --mode MODE [--amount AMOUNT] --key KEY
                        --b64secret B64SECRET --passphrase PASSPHRASE
                        [--api-url API_URL]
                        [--payment-method-id PAYMENT_METHOD_ID]
                        [--starting-discount STARTING_DISCOUNT]
                        [--discount-step DISCOUNT_STEP]
                        [--order-count ORDER_COUNT]
                        [--fiat-currency FIAT_CURRENCY]
                        [--withdrawal-amount WITHDRAWAL_AMOUNT]
                        [--db-engine DB_ENGINE] [--max-retries MAX_RETRIES]
                        [--coins COINS] [--base-fee BASE_FEE]

Buy coins!

optional arguments:
  -h, --help            show this help message and exit
  --mode MODE           mode (deposit or buy)
  --amount AMOUNT       amount to deposit
  --key KEY             API key
  --b64secret B64SECRET
                        API secret
  --passphrase PASSPHRASE
                        API passphrase
  --api-url API_URL     API URL (default: https://api.pro.coinbase.com)
  --payment-method-id PAYMENT_METHOD_ID
                        Payment method ID for fiat deposits
  --starting-discount STARTING_DISCOUNT
                        starting discount (default: 0.005)
  --discount-step DISCOUNT_STEP
                        discount step between orders (default: 0.01)
  --order-count ORDER_COUNT
                        number of orders (default: 5)
  --fiat-currency FIAT_CURRENCY
                        Fiat currency (default: USD)
  --withdrawal-amount WITHDRAWAL_AMOUNT
                        withdraw when fiat balance drops below this amount
                        (default: 25)
  --db-engine DB_ENGINE
                        SQLAlchemy DB engine (default:
                        sqlite:///cbpro_history.db)
  --max-retries MAX_RETRIES
                        Maximum number of times to retry if there are any
                        failures, such as API issues (default: 3)
  --coins COINS         Coins to trade, minimum trade size, withdrawal
                        addresses and external balances. Accepts a JSON
                        string.
  --base-fee BASE_FEE   Default base fee to subtract from overall balance.

Default coins are as follows:
    {
      "BTC":{
        "name":"Bitcoin",
        "withdrawal_address":null,
        "external_balance":0
      },
      "ETH":{
        "name":"Ethereum",
        "withdrawal_address":null,
        "external_balance":0
      },
      "LTC":{
        "name":"Litecoin",
        "withdrawal_address":null,
        "external_balance":0
      }
    }

下订单的详细信息

默认情况下,有5个订单(每种货币)以1%的步幅下达, 从当前价格的0.5%折扣开始。举例来说,如果 现在的价格是100美元(比如说,每台LTC),你有100美元要买,订单 会是这样的:

OrderSizePrice
10.2010 LTC$99.5
20.2030 LTC$98.5
30.2051 LTC$97.5
40.2072 LTC$96.5
50.2094 LTC$95.5

此外,每种货币的购买量将基于当前 每枚硬币的市值加权。例如,在编写 重量为:

CoinMarket Cap (USD)Weight
BTC$195,824,365,4350.791
ETH$46,080,472,3720.186
LTC$5,592,776,5400.023

所以如果你的美元账户有1000美元,每个账户的购买金额 变成:

CoinWeightAmount Purchased
BTC0.791$791
ETH0.186$186
LTC0.023$23

注意事项/限制

  • 如果你试图手动交易或同时使用其他机器人, 你可能会过得很不愉快
  • 您可能有几美元(<;$25,您可以用 --withdrawal-amount)一直坐在你的账户里, 即使所有订单都已完成,因为不可能总是 填写所有订单,可能会有小的舍入误差(以美分为单位)
  • 用最少的复杂性尽最大努力使用所有的菲亚特, 但可能不可能立即完成所有订单
  • 市场可能需要几天的时间才能跌到足够的价格,才能让买盘填满
  • 如果市场出现明显的牛市,你的订单将不会 已填充,但每24小时重置一次(使用默认购买计时器)

小费罐

如果你能从中得到一些价值,请寄给我一些硬币以便我能 从我的日常工作中退休:

  • 3TeAE1OKEM5HQUXBBV99MbQYNES8J8N

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
初始化非静态成员:C++与java比较   Java/Spring在线程关闭后为多租户程序获取租户?   java为什么使用WebMVCAutoConfiguration适配器类   java Jsoup将元素转换为TextNode会导致异常   java线程概念中的多线程同步   乔达皈依。时间DateTime到java。sql。日期和时区   java线程检查问题   java JavaFX显示列表的视图是什么类型的?   java Map UI组件未显示在Cuba平台中   java neo4j示例“MyRestaurantSocial”错误   java在Android中定制键盘“回车”按钮   while循环和打印列表中的Java减量变量   即使相同的处理程序正常工作,也会引发java空指针异常