En resa att hitta en väg till programmatiskt kort krypto från USA, du skulle tro att detta skulle vara enkelt... Tänk om!
Utbyten finns överallt... Coinbase, Binance, Gemini, Robinhood, Kraken, eToro, Crypto.com, TradeStation, Coinmama, …
och de med ett API... Binance, Bittrex, Poloniex, Coinbase, Kraken, BitFinex, Bitstamp, Hitbtc, BitForex, …
och ännu färre erbjuder korthandel från en 🇺🇸 IP-adress. Så finns det utbyten som erbjuda kort handel via API för amerikanska kunder? Binance.us erbjuder inte korthandel till USA-baserade kunder.
Det är förvirrande och i rörelse!
Tidigare i år gick jag och letade efter ett svar.
My kriterierna var ganska enkla:
- måste vara legitim för amerikanska användare, ingen VPN-hackning för att låtsas bo någon annanstans
- måste har API i deras utbyte
- måste möjliggör blankning (marginalhandel)
- trevligt om de har gedigen kundsupportchatt/e-post
Varför? Eftersom min kryptokvantrigg vill shorta som en del av sin strategi och den kan inte göra det på Binance.us, åtminstone inte när detta skrivs.
Många av börserna ovan berättar inte tydligt om de betjänar amerikanska kunder eller inte tills du försöker registrera dig. Det är en verklig smärta!
Andra tillåter amerikanska IP-adresser men erbjuder inte korta positioner, och återigen inte lätt att säga och från och med datumet för detta stycke är det ett rörligt mål.
Vissa av dessa börser har fruktansvärda avgifter, eToro (bäst att undvika detta) tar ut en avgift för "ingen användning" för ett konto som inte har loggats in under en viss tidsperiod. ⏰ 💵 Vad söker du?
Andra utbyten som BitForex (undvik den här också) ha ett "chattrum" för support där tusentals användare "yttrar sin åsikt". Efter flera dagars försök att förstå hur man kortar via API och fått galna svar gav jag upp. 🐒 Vad söker du?
Verkligheten är att de flesta börser idag inte är anpassade för utvecklare och kvanttyper, varför skulle de vara det? Det är inte den feta delen av marknaden.
Äntligen efter en hel del arbete hittade jag CoinMetro ... baserat i Tallinn Estland.
Här är en primer på detta utbyte och deras taxeringsblad. Registreringen är enkel, amerikanska användare måste autentisera och tillhandahålla verifierat ID.
Skaffa sig rabatter, positiva vibbar och bra karman genom att använda min hänvisningskod för att registrera dig: https://coinmetro.com/?ref=georgek
Ha tålamod eftersom ID-verifieringen görs av deras supportteam. Krypto kan överföras till ditt konto när det har verifierats.
CoinMetro registrering här..
När du är registrerad kan du gå till deras 'utbyte' instrumentpanelen och till derasMarginal' instrumentbräda…
Det är inte intuitivt men du kan SCROLL NED för att se avsnittet om marginalsäkerheter på instrumentpanelen:
Ovan är ett exempel på ~500 USD som tillämpas på marginalsäkerheter. Använd reglaget för att ställa in beloppet från din plånbok. Du kan enkelt hämta denna marginalsäkerhet (igen med skjutreglaget) efter att ha tagit dig ur marginalpositioner.
Avgifterna för marginalaffärer är betydande, 0.20% av handelsvärdet för en kort och köp rundresa… Jämför detta med 0.15 % tur och retur för lång position på Binance.us (med BNB för avgifter).
Observera att (0.20 %) som visas i marginalinstrumentpanelen är för tur och retur position, för summan av öppna och stänga av marginalpositionen.
Dessutom finns marginal 'låneavgifter”...
Räntor 0.08222% dagligen — beräknas var 4:e timme på lånad marginal
Låt oss räkna ut detta i ett scenario, låt oss föreställa oss att du tar en marginalposition för 100 USD, håller den i 48 timmar och sedan stänger den, avgifterna blir:
- provision: 100*0.2 % … 0.20 USD
- ränta: 0.08222 x 100 *2 … 0.17 USD
Totala avgifter för denna handel: $0.57 (0.37%)
Ett annat scenario, låt oss föreställa oss att du tar en marginalposition för 10000 10 EUR, håller den i XNUMX dagar och sedan stänger den, avgifterna skulle vara:
- provision: 10000 0.2*20,00 % … XNUMX EUR
- ränta: 0.08222 x 10000 *10 … 82,00 EUR
Totala avgifter för denna handel: 102,00 EUR (1.02 %)
Håll koll på och redovisa provisioner noggrant, som vanligt.
Provisionen tas från handeln, en marknadsköpsorder på det beloppet i XCM (nyttotoken för avgifter på CoinMetro), vilket skapar mer volym och efterfrågan på token.
Provisionsavgifter visas i "Beställningshistorik" under "Avgifter":
Du kan också samla in "rabatter" på avgifter genom att hålla i CoinMetro-myntet: XCM
Folket i Telegram-chattgruppen berättar för mig att "handelsgolv" av XCM är satt till USD 15cent, dvs. det kan inte handlas för mindre än så. Från och med den här artikeln är priset 22 cent så det är intressant.
Här är länken till CoinMetros API i Postman: https://documenter.getpostman.com/view/3653795/SVfWN6KS
Du kan experimentera med Postman REST API-gränssnittet. Välj sedan ett språk i den övre rullgardinsmenyn för att se exempelkod i den stilen.
Hittade ett Python-omslag för CoinMetro REST-api här:
Bara kopiera CMapi.py till din arbetskatalog och importera den, enkelt. Inget behov av att installera något, detta är bara ett tunt omslag. Autentiseringsomslaget ingår och är användbart.
Låt oss börja med några grundläggande importer:
importera CMapi
från datetime import datetime, timedelta
importera json
importförfrågningar
Och en klientinitieringsfunktion med ditt referenser:
klient = CMapi.CMClient(email='YOUREMAIL@somewhere.com', passwd='DITT LÖSENORD', hashkey='Ja')
Nu kan vi få handelstillgångar:
client.get_trading_assets()[{'name': 'Bitcoin',
'symbol': 'BTC',
'type': 'mynt',
'canDeposit': Sant,
'canWithdraw': Sant,
'canTrade': Sant,
'sentimentData': {'sentiment': 32.276666666666664,
'intresse': 0.8021655707519841},
'siffror': 6,
'minQuty': 0.00025,
'maxSwap': 2500,
'canMarket': Sant,
'id': Inget},...
Ditt kontosaldo:
saldon = client.get_balances(){'ETH': {'ETH': 0, 'EUR': -0.07, 'BTC': -2e-06, 'USD': -0.09},
'USD': {'USD': 494.66, 'EUR': 419.33, 'BTC': 0.01066, 'ETH': 0.1537},
'XCM': {'XCM': 0, 'EUR': 0, 'BTC': 0, 'USD': 0, 'ETH': 0},
'TOTAL': {'EUR': 419.33, 'BTC': 0.01066, 'USD': 494.66, 'ETH': 0.1537},
'REF': {'XCM': 0, 'EUR': 0, 'BTC': 5e-06, 'USD': 0, 'ETH': 0}}
Få historisk data:
nu = datetime.now() — timedelta(minutes= 3)ljus = client.get_historical_prices(pair=’ETHUSD’, timeframe=60000, From=now.strftime(‘%s’)+’000’)för c i ljus['candleHistory']:
print(datetime.fromtimestamp(c['timestamp']/1000.0), c['o'], c['c'])2021-08-15 16:44:00 3249.6723259755 3249.6723259755
2021-08-15 16:45:00 3249.6723259755 3249.6723259755
2021-08-15 16:46:00 3249.6723259755 3249.4520935
2021-08-15 16:47:00 3249.6723259755 3247.57055175
Och mer, se CMapi.py för mer information.
REST API har marginalhandelsslutpunkter, men tyvärr gjorde inte Python-omslaget det (vid tidpunkten för detta stycke), så vi tar till att göra REST-förfrågningar.
Skapa ordning
Här är ett exempel på en SHORT Market-order via REST API:
BAS = "https://api.coinmetro.com"# sälj KORT på marginal
headers={"Authorization":client.bearerToken, 'Content-Type': 'application/x-www-form-urlencoded'}nyttolast = f'orderType=market&buyingCurrency=USD&sellingCurrency=ETH&sellingQty=0.0315&margin=true'response = requests.request("POST", f'{BASE}/exchange/orders/create', headers=headers, data = nyttolast)
responseJson = json.loads(response._content)
Byt ut valutan och antalet med dina variabler.
Du kan också paketera parametrarna i JSON-strukturen.
Notera marginal=sant parametern måste du också allokera marginalsäkerhet (i instrumentpanelen) innan du försöker handla på marginal med API:et.
Svarsnyttolasten är ungefär:
{'användar-ID': '60e8fc89116db05a7fdb857b', 'order-ID': '60e8fc89116db05a7fdb857b1629051520858cb64815e410cbbac'ype', 'orderCbbac', 'orderCbbac', 'orderCbbac', 'order:buurt' Valuta': 'ETH', 'sellingQty': 0.0315, 'marginal' : 'true', 'timeInForce': 4, 'boughtQty': 99.824, 'soldQty': 0.0315, 'creationTime': 1629051520860, 'seqNumber': 5018778582, 'firstFillTime:1629051520860Fill'1629051520860, 'firstFillTime:5018778581Fill':1629051520860:0.0315:3169.015873015873:1629051520860:99.824 XNUMX, 'fyller' : [{'seqNumber': XNUMX, 'timestamp': XNUMX, 'qty': XNUMX, 'price': XNUMX, 'side': 'sell'}'], 'XNUMXty'XNUMX, 'XNUMX', 'XNUMX', 'XNUMX' .XNUMX}
Notera 'takerQuty’, detta är USD-beloppet för marginalsäkerheter i USD som denna transaktion tog.
Få beställningar
Du kan få en lista över fyllda beställningar sedan en viss tid:
nu = datetime.now() — timedelta(timmar=5)
nowInt = int(now.strftime('%s')+'000')fills = client.get_order_fills(since=nowInt)[{'pair': 'ETHUSD',
'seqNumber': 5018778581,
'tidsstämpel': 1629051520860,
'antal': 0.0315,
'pris': 3169.015873015873,
'side': 'sälja',
'orderID': '60e8fc89116db05a7fdb857b1629051520858cb64815e410cbbac'},
{'pair': 'ETHUSD',
'seqNumber': 5018888387,
'tidsstämpel': 1629051959955,
'antal': 0.031454,
'pris': 3173.6504101227188,
'side': 'köpa',
'orderID': '60e8fc89116db05a7fdb857b16290519599523046b30d3585a5d7'}]
Lägg märke till elementen "antal" och "pris". Du kan använda kvant * pris för att få valutabeloppet och köpa en position, enligt följande:
BAS = "https://api.coinmetro.com"kvantitet = kort['pris']*kort['antal']# köp (stäng kort position)
headers={"Authorization":client.bearerToken, 'Content-Type': 'application/x-www-form-urlencoded'}nyttolast = f’orderType=market&buyingCurrency=ETH&sellingCurrency=USD&sellingQty=’+qty+’&margin=true’
respons = requests.request(“POST”, f'{BASE}/exchange/orders/create', headers=headers, data = nyttolast)
responseJson = json.loads(response._content)
{'userID': '60e8fc89116db05a7fdb857b',
'orderID': '60e8fc89116db05a7fdb857b162911944571101e1277f9d9f8be1',
'orderType': 'market',
'buyingCurrency': 'ETH',
'sellingCurrency': 'USD',
'sellingQty': 99.943,
'margin': 'true',
'timeInForce': 4,
'köpt Antal': 0.030455,
"sålt Antal": 99.943,
'creationTime': 1629119445720,
'seqNumber': 5036606277,
'firstFillTime': 1629119445721,
'lastFillTime': 1629119445721,
'fills': [{'seqNumber': 5036606276,
'tidsstämpel': 1629119445721,
'antal': 0.030455,
'pris': 3281.6614677392877,
'side': 'köp'}],
'kompleteringstid': 1629119445721,
'takerQty': 0.030455}
Och slutligen för att stänga en befintlig (tillsatt) position behöver vi först dess orderID:
nu = datetime.now() — timedelta(days=1)
nowInt = int(now.strftime('%s')+'000')
fills = client.get_order_fills(since=nowInt)
Stäng position
Låt oss stänga den senaste (fyllda) beställningen:
# stängt läge# få den senast fyllda beställningen
s = fyllningar[-1]headers={"Authorization":client.bearerToken, 'Content-Type': 'application/x-www-form-urlencoded'}
nyttolast = {}response = requests.request(“POST”, f’{COINMETRO}/exchange/orders/close/’+s[‘orderID’], headers=headers, data = nyttolast)responseJson = json.loads(response._content)orderID 60e8fc89116db05a7fdb857b1629139458123bbb67a60d23c7838 open qty 0.0311
{'användar-ID': '60e8fc89116db05a7fdb857b', 'order-ID': '60e8fc89116db05a7fdb857b1629139458123bbb67a60d23c7838_CLIP,'y: 'C0.0311_CL','y: 'C4_CL' 'sellingCurrency': 'USD', 'margin': 'true', ' buyingQty': 0.0311, 'timeInForce': 100.204, 'boughtQty': 1629139525626, 'soldQty': 5042414933, 'creationTime': 1629139525627, 'seqNumber': 1629139525627, 'Sista 5042414932,'1629139525627Fill:0.0311, '3221.993569131833Fill:1629139525627, '0.0311Fill:XNUMX,'XNUMXFill ': XNUMX, 'fyller' : [{'seqNumber': XNUMX, 'timestamp': XNUMX, 'qty': XNUMX, 'price': XNUMX, 'side': 'buy'}, 'completion :XNUMX', 'completion :QXNUMX', 'XNUMX. XNUMX}
Du kommer att se all denna aktivitet återspeglas i din CoinMetro-instrumentpanel.
- 100
- 7
- Konto
- ALGO
- Alla
- api
- Artikeln
- Tillgångar
- Autentisering
- tillstånd
- BÄST
- binance
- Bit
- Bitcoin
- Bitfinex
- Bitstamp
- bittrex
- bnB
- BTC
- Köp
- avgifter
- koda
- Coin
- coinbase
- provision
- Skapa
- referenser
- crypto
- Crypto.com
- Valuta
- Helpdesk
- Kunder
- instrumentbräda
- datum
- Efterfrågan
- DID
- siffror
- ETH
- ETHUSD
- eToro
- EU
- EV
- utbyta
- Utbyten
- experimentera
- avgifter
- Slutligen
- Förnamn
- fungera
- tvillingarna
- GM
- god
- Grupp
- hacking
- här.
- HitBTC
- hålla
- Hur ser din drömresa ut
- How To
- hr
- HTTPS
- ia
- intresse
- IP
- IP-adress
- IT
- kraken
- språk
- LINK
- Lista
- Lång
- Framställning
- marginalhandel
- marknad
- Medium
- NY
- erbjudanden
- öppet
- beställa
- ordrar
- poloniex
- pris
- Verkligheten
- Remiss
- respons
- REST
- rik
- Robin Hood
- sälja
- känsla
- in
- Kort
- Enkelt
- So
- starta
- Strategi
- stödja
- Målet
- Telegram
- tid
- token
- handla
- handel
- Handel
- handlar krypto
- transaktion
- us
- USD
- användare
- verktyg
- Verktygstoken
- värde
- Verifiering
- volym
- VPN
- W
- plånbok
- Arbete
- skrivning
- X
- år