2016-11-21 8 views
0

私は、YoBit API(https://yobit.net/en/api/)を使用するPythonでトレーディングボットを右にしようとしています。唯一の問題は、プライベートAPIの使用方法を認証する方法がわからないことです。誰かが私用のYoBit APIへの働きかけの例を与えることができるかどうか疑問に思っていました。私はこの、しかし、何も返さないがPython 2.7を使用してYoBit APIでどのように認証されますか?

from urllib2 import Request, urlopen 
from pprint import pprint 
import json 
import time 
import requests 
import hmac 
import hashlib 
from urllib import urlencode 

class yobit(object): 

    def __init__(self, key, secret): 
     self.key = 'mykey' 
     self.secret = b'mysecret' 
     self.public = ['info', 'ticker', 'depth', 'trades'] 
     self.trade = ['activeorders'] 

    def query(self, method, values={}): 
     if method in self.public: 
      url = 'https://yobit.net/api/3/'+method 
      for i, k in values.iteritems(): 
       url += '/'+k 

      req = requests.get(url) 
      return json.loads(req.text) 

     elif method in self.trade: 
      url = 'https://yobit.net/tapi' 
      values['method'] = method 
      values['nonce'] = str(int(time.time())) 
      body = urlencode(values) 
      signature = hmac.new(self.secret, body, hashlib.sha512).hexdigest() 
      headers = { 
       'Content-Type': 'application/x-www-form-urlencoded', 
       'Key': self.key, 
       'Sign': signature 
      } 

      req = requests.post(url,data=values,headers=headers) 
      return json.loads(req.text) 

     return false 


yobit('activeorders','liv_btc') 

...誰かが私は、Python 2.7に変換するために私のベストを尽くしたし、この思い付いたのPython 3の作業認証を持っていると主張ポストを見つけました。

答えて

0

'アクティブオーダー'を 'アクティブオーダー'に変更します。 コードは正しく動作します。

self.trade = ['ActiveOrders'] 
0

私はこの問題を抱えていました。デフォルトのUser-Agentのリクエストはブロックされました。これは、トレーディングAPIの作業を実装したものです:

接続= YobitConnection( "あなたのキー"、 "あなたの秘密"):

import hmac 
import hashlib 
import time 
import json 
from urllib.request import urlopen, Request 
from urllib.parse import urlencode 

TRADE_API = 'https://yobit.net/tapi' 


class YobitConnection: 

    def __init__(self, api_key, secret): 
     self.api_key = api_key 
     self.secret = secret 

    def execute_query(self, method, params=None): 
     if params is None: 
      params = {} 
     params['method'] = method 
     params['nonce'] = str(int(time.time())) 
     post_data = urlencode(params).encode() 
     signature = hmac.new(
         self.secret.encode(), 
         post_data, 
         hashlib.sha512).hexdigest() 
     headers = { 
      'Sign': signature, 
      'Key': self.api_key, 
      'User-Agent': "Mozilla/5.0" 
     } 
     request = Request(TRADE_API, post_data, headers=headers) 
     response = urlopen(request) 
     return json.loads(response.read()) 

あなたはこのようにそれを使用することができます connection.execute_query( 'ActiveOrders' { '対': 'eth_btc'})

0

は、次のように変更します。

def __init__(self, key, secret): 
     self.key = key 
     self.secret = secret 
     self.public = ['info', 'ticker', 'depth', 'trades'] 
     self.trade = ['ActiveOrders'] 

def __init__(self, key, secret): 
     self.key = 'mykey' 
     self.secret = b'mysecret' 
     self.public = ['info', 'ticker', 'depth', 'trades'] 
     self.trade = ['activeorders'] 

self.key , self.secret, self.tradeラインにおける差分の点に注意してください!

と上記your_key, your_secretがyobit.netユーザーセンターから入手することができます

yobit('activeorders','liv_btc') 

yb = yobit('your_key','your_secret') 
print yb.execute_query('ActiveOrders', {'pair': 'eth_btc'}) 

に対する通知の最後の行を変更します。

私は上記の変更を行い、正常に動作するようにテストしました。 通常、次のような出力が得られます。

{ 
    "success": 1 
} 
関連する問題