Een reis om een weg naar toe te vinden programmatisch korte crypto uit de VS, je zou denken dat dit simpel zou zijn… denk nog eens na!
Uitwisselingen zijn overal... Coinbase, Binance, Gemini, Robinhood, Kraken, eToro, Crypto.com, TradeStation, Coinmama, …
en degenen met een API... Binance, Bittrex, Poloniex, Coinbase, Kraken, BitFinex, Bitstamp, Hitbtc, BitForex, …
en nog minder bieden Short trading aan vanaf een 🇺🇸 IP-adres. Zo zijn er uitwisselingen die bied short trading aan via API voor Amerikaanse klanten? Binance.us biedt geen short trading aan aan in de VS gevestigde klanten.
Het is verwarrend en in beweging!
Begin dit jaar ging ik op zoek naar een antwoord.
My criteria waren vrij eenvoudig:
- Dan moet je wees legitiem voor Amerikaanse gebruikers, geen VPN-hacking om te doen alsof je ergens anders woont
- Dan moet je hebben API in hun uitwisseling
- Dan moet je short selling mogelijk maken (margehandel)
- mooi als ze een solide chat/e-mail voor klantenondersteuning hebben
Waarom? Omdat mijn crypto-quantum-installatie short wil gaan als onderdeel van zijn strategie en dat niet kan doen op Binance.us, althans niet op het moment dat ik dit schrijf.
Veel van de bovenstaande beurzen vertellen u niet duidelijk of ze wel of niet Amerikaanse klanten bedienen totdat u zich probeert te registreren. Dat is echt pijn!
Anderen staan wel Amerikaanse IP-adressen toe, maar bieden geen shortposities aan, en wederom is het niet gemakkelijk te zeggen en vanaf de datum van dit stuk is het een bewegend doelwit.
Sommige van deze uitwisselingen brengen verschrikkelijke kosten met zich mee, eToro (het beste om dit te vermijden) brengt een 'geen gebruik'-vergoeding in rekening voor een account waarop gedurende een bepaalde periode niet is ingelogd. ⏰ 💵 Wat?
Andere uitwisselingen zoals bitforex (vermijd deze ook) hebben een 'chatroom' voor ondersteuning waar duizenden gebruikers 'hun mening uiten'. Na meerdere dagen proberen te begrijpen hoe ik via de API moest shorten en gekke reacties kreeg, gaf ik het op. 🐒 Wat?
De realiteit is dat de meeste beurzen tegenwoordig niet gericht zijn op ontwikkelaars en kwantitatieve typen. Waarom zouden ze dat wel zijn? Dat is niet het dikke deel van de markt.
Eindelijk, na behoorlijk wat werk, vond ik CoinMetro… gevestigd in Tallin Estland.
Hier is een primer op deze uitwisseling en hun tariefblad. Aanmelden is eenvoudig, Amerikaanse gebruikers moeten zich authenticeren en een geverifieerd identiteitsbewijs opgeven.
Krijgen kortingen, positieve vibes en lekker karma door mijn verwijzingscode te gebruiken om u aan te melden: https://coinmetro.com/?ref=georgek
Wees geduldig, want de ID-verificatie wordt uitgevoerd door hun ondersteuningsteams. Crypto kan na verificatie naar uw account worden overgezet.
CoinMetro-aanmelding hier.
Zodra u bent geregistreerd, kunt u naar hun 'uitwisseling' dashboard en naar hun 'Marge'dashboard…
Het is niet intuïtief, maar u kunt NAAR BENEDEN SCROLLEN om het marge-onderpandgedeelte van het dashboard te zien:
Hierboven ziet u een voorbeeld van ~US$500 toegepast op margeonderpand. Gebruik de schuifregelaar om het bedrag uit uw portemonnee in te stellen. U kunt dit margeonderpand eenvoudig ophalen (opnieuw met de schuifregelaar) nadat u uit de margeposities bent gekomen.
De kosten voor margetransacties zijn aanzienlijk: 0.20% van de handelswaarde voor een short- en buy-transactie rondvaart… Vergelijk dit met een retour van 0.15% voor een longpositie op Binance.us (met gebruik van BNB voor vergoedingen).
Houd er rekening mee dat de (0.20%) die in het margedashboard wordt weergegeven, betrekking heeft op de retourpositie, voor het totaal van de opening en sluiting van de margepositie.
Daarnaast zijn er marges 'leenkosten'...
Selectie 0.08222% dagelijks — elke 4 uur berekend op geleende marge
Laten we dit in een scenario uitwerken. Laten we ons voorstellen dat u een margepositie van 100 dollar inneemt, deze 48 uur vasthoudt en vervolgens sluit. De kosten zouden als volgt zijn:
- commissie: 100*0.2% … $0.20
- rente: 0.08222 x 100 *2 … $0.17
Totale kosten voor deze transactie: $ 0.57 (0.37%)
Een ander scenario, laten we ons voorstellen dat u een margepositie van EUR 10000 inneemt, deze 10 dagen vasthoudt en vervolgens sluit. De kosten zouden als volgt zijn:
- commissie: 10000*0.2% … EUR 20,00
- rente: 0.08222 x 10000 *10 … EUR 82,00
Totale kosten voor deze transactie: EUR 102,00 (1.02%)
Houd de commissies zoals gewoonlijk nauwlettend in de gaten en houd er rekening mee.
De commissie wordt uit de transactie gehaald, een marktkooporder van dat bedrag in XCM (het utility-token voor vergoedingen bij CoinMetro), waardoor er meer volume en vraag naar het token ontstaat.
Commissiekosten zijn te zien in het scherm 'Bestelgeschiedenis' onder 'Kosten':
U kunt ook 'kortingen' op vergoedingen verzamelen door de CoinMetro-munt vast te houden: XCM
De mensen in de Telegram-chatgroep vertellen me dat de 'beursvloer' van XCM is vastgesteld op 15 dollarcent, dat wil zeggen. het kan niet voor minder dan dat worden verhandeld. Vanaf dit artikel is de prijs 22 cent, dus dat is interessant.
Hier is de link naar de API van CoinMetro in Postman: https://documenter.getpostman.com/view/3653795/SVfWN6KS
U kunt experimenteren met de Postman REST API-interface. Selecteer vervolgens een taal in de bovenste vervolgkeuzelijst om voorbeeldcode in die stijl te zien.
Ik heb hier een Python-wrapper voor de CoinMetro REST-api gevonden:
Kopieer gewoon CMapi.py in uw werkmap en importeer deze eenvoudig. U hoeft niets te installeren, dit is slechts een dunne verpakking. De authenticatieverpakking is inbegrepen en nuttig.
Laten we beginnen met enkele basisimporten:
CMapi importeren
van datetime import datetime, timedelta
json importeren
importaanvragen
En een clientinitialisatiefunctie met jouw referenties:
klant = CMapi.CMClient(email='UWEMAIL@ergens.com', passwd='JOUWWACHTWOORD', hashkey='Ja')
Nu kunnen we handelsactiva krijgen:
klant.get_trading_assets()[{'naam': 'Bitcoin',
'symbool': 'BTC',
'type': 'munt',
'canDeposit': Waar,
'kan zich terugtrekken': Waar,
'canTrade': Waar,
'sentimentData': {'sentiment': 32.276666666666664,
'rente': 0.8021655707519841},
'cijfers': 6,
'minAantal': 0.00025,
'maxSwap': 2500,
'canMarket': Waar,
'id': Geen},...
Uw rekeningsaldi:
saldi = 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},
'TOTAAL': {'EUR': 419.33, 'BTC': 0.01066, 'USD': 494.66, 'ETH': 0.1537},
'REF': {'XCM': 0, 'EUR': 0, 'BTC': 5e-06, 'USD': 0, 'ETH': 0}}
Historische gegevens verkrijgen:
nu = datetime.now() — timedelta(minuten= 3)kaarsen = client.get_historical_prices(pair='ETHUSD', tijdsbestek=60000, From=now.strftime('%s')+'000')voor c in kaarsen['kaarsgeschiedenis']:
print(datetime.fromtimestamp(c['tijdstempel']/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
En meer, zie CMapi.py voor meer info.
De REST API heeft eindpunten voor margehandel, maar helaas deed de Python-wrapper dat niet (ten tijde van dit stuk), dus nemen we onze toevlucht tot het doen van REST-verzoeken.
Maak een bestelling
Hier is een voorbeeld van een SHORT Market-order via REST API:
BASIS = "https://api.coinmetro.com"# verkoop SHORT op marge
headers={"Authorisatie":client.bearerToken, 'Content-Type': 'application/x-www-form-urlencoded'}payload = f'orderType=market&buyingCurrency=USD&verkoopvaluta=ETH&verkoopaantal=0.0315&marge=waar'response = request.request("POST", f'{BASE}/exchange/orders/create', headers=headers, data = payload)
responseJson = json.loads(response._content)
Vervang de valuta en Aantal door uw variabelen.
U kunt de parameters ook in een JSON-structuur verpakken.
Merk op marge=waar parameter, moet u ook marge-onderpand toewijzen (in het dashboard) voordat u probeert op marge te handelen met behulp van de API.
De responslading is zoiets als:
{'userID': '60e8fc89116db05a7fdb857b', 'orderID': '60e8fc89116db05a7fdb857b1629051520858cb64815e410cbbac', 'orderType': 'market', 'buyingCurrency': 'USD', 'sellingCurrency' : 'ETH', 'verkoopaantal': 0.0315, 'marge' : 'true', 'timeInForce': 4, 'boughtQty': 99.824, 'soldQty': 0.0315, 'creationTime': 1629051520860, 'seqNumber': 5018778582, 'firstFillTime': 1629051520860, 'lastFillTime': 1629051520860 5018778581, 'vullingen' : [{'seqNumber': 1629051520860, 'timestamp': 0.0315, 'qty': 3169.015873015873, 'price': 1629051520860, 'side': 'sell'}], 'completionTime': 99.824, 'takerQty': XNUMX .XNUMX}
Merk op 'afnemerAantal', dit is het USD-bedrag aan margeonderpand in USD dat deze transactie heeft gekost.
Bestellingen ontvangen
U kunt een lijst met uitgevoerde bestellingen sinds enige tijd opvragen:
nu = datetime.now() — timedelta(uren=5)
nuInt = int(nu.strftime('%s')+'000')vullingen = client.get_order_fills(sinds=nowInt)[{'paar': 'ETHUSD',
'volgnummer': 5018778581,
'tijdstempel': 1629051520860,
'aantal': 0.0315,
'prijs': 3169.015873015873,
'kant': 'verkopen',
'orderID': '60e8fc89116db05a7fdb857b1629051520858cb64815e410cbbac'},
{'paar': 'ETHUSD',
'volgnummer': 5018888387,
'tijdstempel': 1629051959955,
'aantal': 0.031454,
'prijs': 3173.6504101227188,
'kant': 'kopen',
'orderID': '60e8fc89116db05a7fdb857b16290519599523046b30d3585a5d7'}]
Let op de elementen 'aantal' en 'prijs'. Je kunt gebruiken aantal * prijs om de hoeveelheid valuta te verkrijgen en een positie te kopen, als volgt:
BASIS = "https://api.coinmetro.com"aantal = kort['prijs']*kort['aantal']# kopen (shortpositie sluiten)
headers={“Authorisatie”:client.bearerToken, 'Content-Type': 'application/x-www-form-urlencoded'}payload = f'orderType=market&buyingCurrency=ETH&sellingCurrency=USD&sellingQty='+qty+'&margin=true'
response = request.request(“POST”, f'{BASE}/exchange/orders/create', headers=headers, data = payload)
responseJson = json.loads(response._content)
{'userID': '60e8fc89116db05a7fdb857b',
'orderID': '60e8fc89116db05a7fdb857b162911944571101e1277f9d9f8be1',
'orderType': 'markt',
'buyingCurrency': 'ETH',
'sellingCurrency': 'USD',
'verkoopaantal': 99.943,
'marge': 'waar',
'timeInForce': 4,
'gekochtAantal': 0.030455,
'verkochtAantal': 99.943,
'creationTime': 1629119445720,
'volgnummer': 5036606277,
'firstFillTime': 1629119445721,
'laatstevultijd': 1629119445721,
'vult': [{'volgnummer': 5036606276,
'tijdstempel': 1629119445721,
'aantal': 0.030455,
'prijs': 3281.6614677392877,
'kant': 'kopen'}],
'voltooiingstijd': 1629119445721,
'afnemeraantal': 0.030455}
En tenslotte hebben we om een bestaande (vervulde) vacature te sluiten deze eerst nodig Order ID:
nu = datetime.now() — timedelta(dagen=1)
nuInt = int(nu.strftime('%s')+'000')
vullingen = client.get_order_fills(sinds=nowInt)
Sluit positie
Laten we de meest recente (gevulde) bestelling sluiten:
# gesloten positie# ontvang de meest recent gevulde bestelling
s = vullingen[-1]headers={“Authorisatie”:client.bearerToken, 'Content-Type': 'application/x-www-form-urlencoded'}
lading = {}response = request.request(“POST”, f'{COINMETRO}/exchange/orders/close/'+s['orderID'], headers=headers, data = payload)responseJson = json.loads(response._content)orderID 60e8fc89116db05a7fdb857b1629139458123bbb67a60d23c7838 open qty 0.0311
{'userID': '60e8fc89116db05a7fdb857b', 'orderID': '60e8fc89116db05a7fdb857b1629139458123bbb67a60d23c7838_CL', 'orderType': 'markt', 'buyingCurrency': 'ETH', 'sellingC urrency': 'USD', 'marge': 'true', ' buyQty': 0.0311, 'timeInForce': 4, 'boughtQty': 0.0311, 'soldQty': 100.204, 'creationTime': 1629139525626, 'seqNumber': 5042414933, 'firstFillTime': 1629139525627, 'lastFillTime ': 1629139525627, 'vult' : [{'seqNumber': 5042414932, 'timestamp': 1629139525627, 'qty': 0.0311, 'price': 3221.993569131833, 'side': 'kopen'}], 'completionTime': 1629139525627, 'takerQty': 0.0311. XNUMX}
U ziet al deze activiteiten terug in uw CoinMetro-dashboard.
- 100
- 7
- Account
- IETS
- Alles
- api
- dit artikel
- Activa
- authenticatie
- machtiging
- BEST
- binance
- Beetje
- Bitcoin
- Bitfinex
- Bitstamp
- bittrex
- bnb
- BTC
- kopen
- lasten
- code
- Munt
- coinbase
- commissie
- Wij creëren
- Geloofsbrieven
- crypto
- Crypto.com
- Valuta
- Klantenservice
- Klanten
- dashboards
- gegevens
- Vraag
- DEED
- cijfers
- ETH
- ETHUSD
- eToro
- EU
- EV
- uitwisseling
- Exchanges
- experiment
- vergoedingen
- Tot slot
- Voornaam*
- functie
- Gemini
- GM
- goed
- Groep
- hacking
- hier
- HitBTC
- houden
- Hoe
- How To
- hr
- HTTPS
- ia
- belang
- IP
- IP-adres
- IT
- Kraken
- taal
- LINK
- Lijst
- lang
- maken
- margehandel
- Markt
- Medium
- NY
- bieden
- open
- bestellen
- orders
- poloniex
- prijs
- Realiteit
- Verwijzing
- antwoord
- REST
- tuig
- Robinhood
- verkopen
- sentiment
- reeks
- Bermuda's
- Eenvoudig
- So
- begin
- Strategie
- ondersteuning
- doelwit
- Telegram
- niet de tijd of
- teken
- handel
- trades
- Handel
- crypto verhandelen
- transactie
- us
- USD
- gebruikers
- utility
- Utility-token
- waarde
- Verificatie
- volume
- VPN
- W
- Portemonnee
- Mijn werk
- het schrijven van
- X
- jaar