Перейти к публикации
Форум ботоводов

Бот для Tradesatoshi


Рекомендованные сообщения

Добрый день! Огромное спасибо за Ваш сайт! Очень много интересной и полезной информации! Прямо руки чешутся вот взять и что нибудь написать! А раз чешутся - сел писать. Опыта работы с Python практически нет, зато есть сайт с примерами! Решил не начинать с гигантов мысли  бирж, а взять что нибудь попроще, вроде Tradesatoshi (tradesatoshi.com). Расчет простой - раз биржа маленькая, то и конкурентов поменьше. Конкретных примеров для Tradesatoshi на Вашем сайте нет,  зато есть много примеров для других бирж.  Что же я дурнее паровоза, неужели не смогу написать? И вуаля ! Через неделю проб и ошибок я не смог даже подключиться через API ключи к бирже, чтобы считать свой баланс.  Это было фаталити! Стоит признать, что я дурнее паравоза , что я был немного оптимистичен. Поэтому - HELP ME! HELP ME!!! Помогите  подключится через API ключи к бирже, а дальше уже я сам по примерам маленькими шажочками.... Заранее огромное спасибо!

Ссылка на комментарий
Поделиться на других сайтах

Добрый день!

На самом деле TradeSatoshi собрали такое количество мелких ограничений и неявных тонкостей, и сделали такое куцее и неполное описание, что задача, которая в итоге занимает несколько строк кода, может занять кучу времени на тестирование и отладку.

Например, json.dumps в python оставляет пробелы между разделителями, а json_encode в пхп не оставляет, и в итоге, когда от итоговой строки мы берем Base64, получаем строку с одинаковым началом, одинаковым окончанием но отсутствующими тремя символами в середине. У них приемник написан на php, этот нюанс пришлось учесть.

Еще, url нужно переводить в urlencode, и, потом брать base64 от всего этого, а когда мы кодируем урл, то получаем символы вида %3F - и их оказывается нужно переводить в нижний регистр и т.п.

К счастью, всё это решаемо, вот так будет выглядеть код для получения приватных данных:

import requests
import hmac, hashlib
import time
import urllib
import base64
import json


API_KEY = ''
API_SECRET = ''

def get_private_data(uri, **kwargs):
    nonce = int(time.time()*1000)

    q = json.dumps(kwargs, separators=(',', ':'))
    b64_q = base64.b64encode(bytes(q, 'utf-8'))
    raw_s = API_KEY + "POST" + urllib.parse.quote_plus(uri).lower() + str(nonce) + b64_q.decode('utf-8')

    hmacsignature = base64.b64encode(hmac.new(base64.b64decode(API_SECRET), raw_s.encode('utf-8'), hashlib.sha512).digest())

    headers = {
        'Content-Type': 'application/json; charset=utf-8',
        'User-Agent': 'Mozilla/4.0 (compatible; TradeSatoshi API Python client; )',
        'Authorization': 'Basic ' + API_KEY + ':'+hmacsignature.decode('utf-8')+':'+str(nonce)
    }

    r = requests.post(uri, data=q, headers=headers, verify=False)

    try:
        print(r.json())
    except:
        print(r.text)


# Баланс по монете
get_private_data(
    uri = "https://tradesatoshi.com/api/private/getbalance",
    Currency='DOGE',
)

# Баланс по всем монетам
#get_private_data(
#    uri = "https://tradesatoshi.com/api/private/getbalances"
#)

# Информация по ордеру
#get_private_data(
#    uri = "https://tradesatoshi.com/api/private/getorder",
#    OrderId=123,
#)

# Получить информацию по ордерам
#get_private_data(
#    uri = "https://tradesatoshi.com/api/private/getorders",
#    # Market='LTC_BTC', 
#    # count = 20
#)

# Разместить ордер
#get_private_data(
#    uri = "https://tradesatoshi.com/api/private/submitorder",
#    Market='LTC_BTC', 
#    Type = 'buy',
#    Amount=1,
#    Price=0.1
#)

# Отменить ордер
#get_private_data(
#    uri = "https://tradesatoshi.com/api/private/cancelorder",
#    Type='Single', 
#    OrderId=123
#)

# Получить историю торгов
#get_private_data(
#    uri = "https://tradesatoshi.com/api/private/gettradehistory",
#    #Market='LTC_BTC', 
#    count=20,
#    #PageNumber=0
#)

# История пополнений
#get_private_data(
#    uri = "https://tradesatoshi.com/api/private/getdeposits",
#    Currency='DOGE',
#    Count=20
#)

Публичные данные можно получать просто через requests.get 

Закинул файл сюда

Удачи)

Ссылка на комментарий
Поделиться на других сайтах

  • 9 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...