2017-12-11 8 views
1

私は、最後の購入を比較し、受信した注文を販売しているcryptocurrencieの交換を取り出し、その差をプリントするボットを作っています。 私の問題は、今、何度も何度も受け取った最後の注文を印刷することです。私はそれがwhileループのためだと思います。同じことを何度も印刷せずに最後の2枚だけを印刷する方法はありますか?私はOrderedDictを使用することを考えていたが、私はそれをJsonでどのように使用するか分からない。ここでは、コード関係は次のとおりです。APIから受け取った最後の要素を印刷する

import time, requests, json 




> while True: 
>  BU = requests.session() 
>  URL = 'https://bittrex.com/api/v1.1/public/getmarkethistory?market=BTC-DOGE' 
>  r = BU.get(URL, timeout=(15, 10)) 
>  time.sleep(1) 
>  MarketPairs = json.loads(r.content) 
>  for element in MarketPairs['result']: 
>   id = element['Id'] 
>   price = element['Price'] 
>   tot = element['Total'] 
>   time = element['TimeStamp'] 
>   type = element['OrderType'] 
> 
> 
>   if time > '2017-12-11T21:37:01.103': 
>    print type, id, tot, price, time 
>    time.sleep(1) 

答えて

0

私はそれが唯一の最後の価格が印刷されます、そして、それは以前のもの

import requests as req 
import time 

previous=None 
while 1: 
    url='https://bittrex.com/api/v1.1/public/getmarkethistory?market=BTC-DOGE' 
    response = req.get(url,timeout=(15,10)).json() 
    result = response["result"] 

    last_price_dict = result[0] 
    id=last_price_dict["Id"] 
    price = last_price_dict["Price"] 
    total = last_price_dict["Total"] 
    timestamp = last_price_dict["TimeStamp"] 
    order_type=last_price_dict["OrderType"] 
    this_one = (id, total, price, timestamp) 
    if id != previous: 
     print(this_one) 
     previous = id 
    time.sleep(3) 
+0

異なるだ場合にのみ、私がしようとしている ...これは何をしたいですねこの問題に約3日間の解決策を見つける、あなたは私があなたにどれほど感謝しているか分かりません。私はどこで間違っているのかをすぐに説明できますか?コードは今すばらしく働いています、ありがとう、あなたは本当に私の一日を作りました。 – Sile

+0

whileループは正常です。しかし、まず最初に必要なのは、コードのすべての結果を処理するコードです。第二に、 ''時間> '2017-12-11T21:37:01.103'の部分がハードコードされているので、何かが印刷されたら、毎回印刷されます。 Bittrexは価格が変わった場合にのみ変更することができるほどスマートであるため、Idをチェックすることです。同じ事を2回送信しません。だから一度新しいIDを確認したなら、あなたは新しい情報を持っていると確信しています=>それでそれを印刷してください – dgan

+0

もう一度@dganありがとう – Sile

関連する問題