2017-09-30 1 views
0

Poloniex에서 BTC에 관한 모든 거래 내역을 Python으로 USD에 제출하고 싶습니다. 열쇠와 비밀을 입력했습니다. 나는 코드를 아래와 같이 가지고있다 :Poloniex에서 파이썬으로 BTC에 대한 거래 내역을 얻는 방법은 무엇입니까?

import urllib 
import urllib2 
import json 
import time 
import hmac,hashlib 

def createTimeStamp(datestr, format="%Y-%m-%d %H:%M:%S"): 
    return time.mktime(time.strptime(datestr, format)) 

class poloniex: 
    def __init__(self, APIKey, Secret): 
     self.APIKey = APIKey 
     self.Secret = Secret 

    def post_process(self, before): 
     after = before 

     # Add timestamps if there isnt one but is a datetime 
     if('return' in after): 
      if(isinstance(after['return'], list)): 
       for x in xrange(0, len(after['return'])): 
        if(isinstance(after['return'][x], dict)): 
         if('datetime' in after['return'][x] and 'timestamp' not in after['return'][x]): 
          after['return'][x]['timestamp'] = float(createTimeStamp(after['return'][x]['datetime'])) 

     return after 

    def api_query(self, command, req={}): 

     if(command == "returnTicker" or command == "return24Volume"): 
      ret = urllib2.urlopen(urllib2.Request('https://poloniex.com/public?command=' + command)) 
      return json.loads(ret.read()) 
     elif(command == "returnOrderBook"): 
      ret = urllib2.urlopen(urllib2.Request('https://poloniex.com/public?command=' + command + '&currencyPair=' + str(req['currencyPair']))) 
      return json.loads(ret.read()) 
     elif(command == "returnMarketTradeHistory"): 
      ret = urllib2.urlopen(urllib2.Request('https://poloniex.com/public?command=' + "returnTradeHistory" + '&currencyPair=' + str(req['currencyPair']))) 
      return json.loads(ret.read()) 
     else: 
      req['command'] = command 
      req['nonce'] = int(time.time()*1000) 
      post_data = urllib.urlencode(req) 

      sign = hmac.new(self.Secret, post_data, hashlib.sha512).hexdigest() 
      headers = { 
       'Sign': sign, 
       'Key': self.APIKey 
      } 

      ret = urllib2.urlopen(urllib2.Request('https://poloniex.com/tradingApi', post_data, headers)) 
      jsonRet = json.loads(ret.read()) 
      return self.post_process(jsonRet) 


    def returnTicker(self): 
     return self.api_query("returnTicker") 

    def return24Volume(self): 
     return self.api_query("return24Volume") 

    def returnOrderBook (self, currencyPair): 
     return self.api_query("returnOrderBook", {'currencyPair': currencyPair}) 

    def returnMarketTradeHistory (self, currencyPair): 
     return self.api_query("returnMarketTradeHistory", {'currencyPair': currencyPair}) 


    # Returns all of your balances. 
    # Outputs: 
    # {"BTC":"0.59098578","LTC":"3.31117268", ... } 
    def returnBalances(self): 
     return self.api_query('returnBalances') 

    # Returns your open orders for a given market, specified by the "currencyPair" POST parameter, e.g. "BTC_XCP" 
    # Inputs: 
    # currencyPair The currency pair e.g. "BTC_XCP" 
    # Outputs: 
    # orderNumber The order number 
    # type   sell or buy 
    # rate   Price the order is selling or buying at 
    # Amount  Quantity of order 
    # total   Total value of order (price * quantity) 
    def returnOpenOrders(self,currencyPair): 
     return self.api_query('returnOpenOrders',{"currencyPair":currencyPair}) 


    # Returns your trade history for a given market, specified by the "currencyPair" POST parameter 
    # Inputs: 
    # currencyPair The currency pair e.g. "BTC_XCP" 
    # Outputs: 
    # date   Date in the form: "2014-02-19 03:44:59" 
    # rate   Price the order is selling or buying at 
    # amount  Quantity of order 
    # total   Total value of order (price * quantity) 
    # type   sell or buy 
    def returnTradeHistory(self,currencyPair): 
     return self.api_query('returnTradeHistory',{"currencyPair":currencyPair}) 

    # Places a buy order in a given market. Required POST parameters are "currencyPair", "rate", and "amount". If successful, the method will return the order number. 
    # Inputs: 
    # currencyPair The curreny pair 
    # rate   price the order is buying at 
    # amount  Amount of coins to buy 
    # Outputs: 
    # orderNumber The order number 
    def buy(self,currencyPair,rate,amount): 
     return self.api_query('buy',{"currencyPair":currencyPair,"rate":rate,"amount":amount}) 

    # Places a sell order in a given market. Required POST parameters are "currencyPair", "rate", and "amount". If successful, the method will return the order number. 
    # Inputs: 
    # currencyPair The curreny pair 
    # rate   price the order is selling at 
    # amount  Amount of coins to sell 
    # Outputs: 
    # orderNumber The order number 
    def sell(self,currencyPair,rate,amount): 
     return self.api_query('sell',{"currencyPair":currencyPair,"rate":rate,"amount":amount}) 

    # Cancels an order you have placed in a given market. Required POST parameters are "currencyPair" and "orderNumber". 
    # Inputs: 
    # currencyPair The curreny pair 
    # orderNumber The order number to cancel 
    # Outputs: 
    # succes  1 or 0 
    def cancel(self,currencyPair,orderNumber): 
     return self.api_query('cancelOrder',{"currencyPair":currencyPair,"orderNumber":orderNumber}) 

    # Immediately places a withdrawal for a given currency, with no email confirmation. In order to use this method, the withdrawal privilege must be enabled for your API key. Required POST parameters are "currency", "amount", and "address". Sample output: {"response":"Withdrew 2398 NXT."} 
    # Inputs: 
    # currency  The currency to withdraw 
    # amount  The amount of this coin to withdraw 
    # address  The withdrawal address 
    # Outputs: 
    # response  Text containing message about the withdrawal 
    def withdraw(self, currency, amount, address): 
     return self.api_query('withdraw',{"currency":currency, "amount":amount, "address":address}) 

polo = poloniex('my_key', 'my_security') 
print(polo.returnTradeHistory('BTC_ETH')) 
#print(polo.returnTradeHistory('BTC_USDT)) 

내가 좋아하는 방법을 사용하고 있습니다 :

print(polo.returnTradeHistory('BTC_ETH')) 

을하지만 난 빈 배열 [], 내가 왜 모르는거야? BTC_USD와 같은 것이 작동하지 않았기 때문에이 거래 내역을보고 BTC에 대한 정보를 어떻게 USD로받을 수 있는지 알려주실 수 있습니까? 브라우저는 당신에게 최근의 거래 내역을 표시하는 경우

답변

1
  1. 당신이 당신의 브라우저로 returnTradeHistory 통화를 열 수 있는지 확인은 (https://poloniex.com/public?command=returnTradeHistory&currencyPair=BTC_ETH) , 다 괜찮습니다. 보안 문자를 작성해야하는 경우 IP 주소가 차단/표시됩니다. 사이트를 열 때마다 captcha를 완료해야하는 경우 지원팀에 문의해야합니다.

  2. Poloniex는 현금 거래를 지원하지 않기 때문에 BTC_USD와 같은 직접 거래를 찾을 수 없습니다. You''ll는 다른 사이트에서 교환 비율을 얻을 필요가있다.

  3. 기능 당신이 사용하는 (returnTradeHistory는) 당신의 개인의 역사를 반환합니다. 아직 아무것도 거래하지 않은 경우, 그것은 비어있을 것입니다. 당신은 세계 무역의 역사를 얻고 싶은 경우에, 당신은

+0

대답 해 주셔서 감사합니다 returnMarketTradeHistory을 사용해야합니다. 포인트 1에 따르면 모든 것이 작동하므로 나는 그것이 다른 문제라고 생각한다. – user2856064

+0

나는 당신이 사용하고있는 파이썬 래퍼를 살펴 봤는데, 당신이 사용한 함수는 당신의 개인 거래 내역을 반환 할 것이다. 이것은 아마도 비어있을 것이다. 의도 한 기능은 returnMarketTradeHistory – Cyphrags

+0

입니다. Poloniex API에 대한 문서는 어디에 있습니까? 나는이 사이트를 알고 있습니다 : https://poloniex.com/support/api/ 그러나 매우 짧으며 많은 정보가 없습니다. 함수 returnMarketTradyHistory. 적절한 방법으로 작성된 훌륭한 문서가 있습니까? 고맙습니다. 이 함수를 사용하는 매개 변수 returnMarketTradyHistory를 사용해야하는 이유는 무엇인지, 나는 그것이 어리 석고 어리석은 문서가 없기 때문에 모른다. – user2856064

관련 문제