# Coinbase Pro DCA Python Code - CBP定投代码

By [Kenny (Kang Zeng)](https://paragraph.com/@kenny-kang-zeng) · 2021-11-12

---

*   Install python
    
*   Install cbpro library by: pip install cbpro
    
*   In Coinbase Pro, create your trading API, replace the key, b64secret and passphrase in the code
    
*   In Coinbase Pro, connect your bank account for USD fund deposit
    
*   Uncomment this line: #print(auth\_client.get\_accounts()) , temporarily delete all code after this line, run the code to retrieve the account string for your bank account, replace the ‘bbbbbbb’ string in the code with the account string
    
*   Run the code with command: python [coinbase-dca.py](http://coinbase-dca.py) 100 DOT
    

Now your Coinbase Pro account should automatically bought 100 USD of DOT token with market price.

Have fun!

    import cbpro
    import sys
    import time
    
    key = 'kkkkkkkkkkkkkkkkkkkkkkkkkk'
    b64secret = 'ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss'
    passphrase = 'pppppppppp'
    
    amount = sys.argv[1]
    coin = sys.argv[2]
    usd_amount = int(amount)
    print('Buy ' + coin + ' with $' + amount + ' ...')
    
    auth_client = cbpro.AuthenticatedClient(key, b64secret, passphrase)
    public_client = cbpro.PublicClient()
    
    coin_ticker = coin + '-USD'
    
    coin_price=round(float(public_client.get_product_ticker(product_id=coin_ticker)['price']),2)
    print('Current ' + coin + ' Price is: $' + str(coin_price))
    
    ## Display all accounts
    ##print(auth_client.get_accounts())
    
    ## Default is BTC
    coin_string = '43b6105b-731f-4659-9a67-4afb9d0befd6'
    
    if coin == 'UNI':
      coin_string='b308ab2f-8108-418e-b7ab-ed200bc9b7bb'
    if coin == 'LINK':
      coin_string='00845604-e10d-4158-8c9d-2536b98ac7ea'
    if coin == 'ANKR':
      coin_string='79635096-5ab7-4d03-ac0a-9cfc8ce9fad6'
    if coin == 'MATIC':
      coin_string='78066072-9e61-4e90-b77f-b8660bf87ac3'
    if coin == 'STORJ':
      coin_string=' b0cadd56-4b53-46d5-8b1a-af148d5ee67f'
    if coin == 'BAL':
      coin_string='62155e5a-a664-42bf-8bf8-dc5b10de5d49'
    if coin == 'MANA':
      coin_string='44e8585c-0708-42d3-9126-b1061bac1919'
    if coin == 'ALGO':
      coin_string='1e3131ff-c290-49fb-a349-3a64ee3f6003'
    if coin == 'DOGE':
      coin_string='931a38f0-beb1-4aca-b48a-9ef1f1342033'
    if coin == 'ADA':
      coin_string='aeeae914-85b3-46cd-a0af-b2cff05b27d4'
    if coin == 'ADA':
      coin_string='aeeae914-85b3-46cd-a0af-b2cff05b27d4'
    if coin == 'ICP':
      coin_string='35d0aa3f-c702-432b-a27b-0897c93099ae'
    if coin == 'FIL':
      coin_string='1588ca41-3e14-40d0-98f5-b2a282f83757'
    if coin == 'AAVE':
      coin_string='3370b1db-9807-4487-a3fa-d3fb8f5d4081'
    if coin == 'ALGO':
      coin_string='1e3131ff-c290-49fb-a349-3a64ee3f6003'
    if coin == 'SNX':
      coin_string='5ce13adb-bd33-4688-a4c7-ee067d94d3b8'
    if coin == 'FET':
      coin_string='e0a6572b-1c5d-4008-b294-ed018df8a43c'
    if coin == 'GRT':
      coin_string='6d020f78-5505-4f5d-b218-cc0a5633201b'
    if coin == 'CRV':
      coin_string='4a87fa2a-95a7-481c-9564-f3603fbe19da'
    if coin == 'ATOM':
      coin_string='91bbb9a4-c030-404c-aacb-a4a4c8f4d890'
    if coin == 'AXS':
      coin_string='b6d00425-20e2-426a-96b1-beab13e81bcd'
    if coin == 'DOT':
      coin_string='4a47096f-97f7-4069-b44e-ce6613d521f2'
    if coin == 'AAVE':
      coin_string='3370b1db-9807-4487-a3fa-d3fb8f5d4081'
    if coin == 'REN':
      coin_string='83a27416-c523-4f55-9b1e-337b65a836de'
    
    ## Show coin balance
    print(auth_client.get_account(coin_string))
    
    ## Show USD balance
    print(auth_client.get_account('eb3f5c47-6b9f-432d-9a43-67bc3c79ee8d'))
    
    ## Print coin and USD balance
    coin_account = round(float(auth_client.get_account(coin_string)['available']),5)
    usd_account = round(float(auth_client.get_account('eb3f5c47-6b9f-432d-9a43-67bc3c79ee8d')['available']),2)
    
    print (coin + ' Balance is: ' + str(coin_account))
    print ('USD Balance is: $' + str(usd_account))
    
    #### Deposit amount USD from bank account
    print ('Deposit ' + amount + ' USD from Bank account to CoinBase Pro account')
    
    ######### Depositing USD #########
    if usd_amount > 1:
      print(auth_client.deposit(amount, 'USD', 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'))  ## Bank Account
      time.sleep(5)
    
    usd_new_account = round(float(auth_client.get_account('eb3f5c47-6b9f-432d-9a43-67bc3c79ee8d')['available']),2)
    usd_available= round(usd_new_account - usd_account,2)
    
    ## print coin and USD balance
    print ('New USD Balance is: $' + str(usd_new_account))
    print ('Total USD Added: $' + str(usd_available))
    
    ## debug
    ##usd_available = 100
    
    if (usd_available >= usd_amount) :
    
      #CoinBase Pro Buy coin with USD
      print ('CoinBase Pro Account: Buy $' + amount + ' USD of ' + coin + ' ...' )
    
      ########## Buying coin ##########
      print(auth_client.place_market_order(product_id=coin_ticker, side='buy', funds=amount))
      time.sleep(10)
    
      coin_new_account = round(float(auth_client.get_account(coin_string)['available']),5)
      print ('New ' + coin + ' Balance is: ' + str(coin_new_account))
    
      coin_available= round(coin_new_account - coin_account,5)
    
      print ('Total ' + coin + ' Added: ' + str(coin_available))

---

*Originally published on [Kenny (Kang Zeng)](https://paragraph.com/@kenny-kang-zeng/coinbase-pro-dca-python-code-cbp)*
