コード例 #1
0
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.

from unicorn_binance_websocket_api.unicorn_binance_websocket_api_manager import BinanceWebSocketApiManager
from unicorn_fy.unicorn_fy import UnicornFy
import time
import logging
import os

logging.basicConfig(
    level=logging.DEBUG,
    filename=os.path.basename(__file__) + '.log',
    format="{asctime} [{levelname:8}] {process} {thread} {module}: {message}",
    style="{")

binance_websocket_api_manager = BinanceWebSocketApiManager(
    exchange="binance.com")
stream_id = binance_websocket_api_manager.create_stream(
    ['ticker'], ['btcusdt', 'bnbbtc', 'ethbtc'])
#binance_websocket_api_manager.create_stream(['miniTicker'], ['btcusdt', 'bnbbtc', 'ethbtc'])
#binance_websocket_api_manager.create_stream(['!miniTicker'], ['arr'])
#binance_websocket_api_manager.create_stream(['!ticker'], ['arr'])

time.sleep(10)
binance_websocket_api_manager.get_stream_subscriptions(stream_id)
time.sleep(5)
print(str(binance_websocket_api_manager.get_results_from_endpoints()))
time.sleep(5)

while True:
    oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer(
    )
コード例 #2
0
    while True:
        if binance_websocket_api_manager.is_manager_stopping():
            exit(0)
        oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer()
        if oldest_stream_data_from_stream_buffer is False:
            time.sleep(0.01)
        else:
            print(oldest_stream_data_from_stream_buffer)


# configure api key and secret for binance.com
api_key = ""
api_secret = ""

# create instances of BinanceWebSocketApiManager
ubwa_com = BinanceWebSocketApiManager(exchange="binance.com")

# create the userData streams
user_stream_id = ubwa_com.create_stream('arr', '!userData', api_key=api_key, api_secret=api_secret)

# start a worker process to move the received stream_data from the stream_buffer to a print function
worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer, args=(ubwa_com,))
worker_thread.start()

# configure api key and secret for binance.com Isolated Margin
api_key = ""
api_secret = ""

# create instances of BinanceWebSocketApiManager
ubwa_com_im = BinanceWebSocketApiManager(exchange="binance.com-isolated_margin")

def print_stream_data_from_stream_buffer(binance_websocket_api_manager):
    time.sleep(30)
    while True:
        if binance_websocket_api_manager.is_manager_stopping():
            exit(0)
        oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer(
        )
        if oldest_stream_data_from_stream_buffer is False:
            time.sleep(0.01)


# create instance of BinanceWebSocketApiManager
#binance_websocket_api_manager = BinanceWebSocketApiManager(throw_exception_if_unrepairable=True)
binance_websocket_api_manager = BinanceWebSocketApiManager(
    throw_exception_if_unrepairable=False)

print("starting monitoring api!")
binance_websocket_api_manager.start_monitoring_api()

try:
    binance_rest_client = Client(binance_api_key, binance_api_secret)
    binance_websocket_api_manager = BinanceWebSocketApiManager()
except requests.exceptions.ConnectionError:
    print("No internet connection?")
    sys.exit(1)

# start a worker process to move the received stream_data from the stream_buffer to a print function
worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer,
                                 args=(binance_websocket_api_manager, ))
worker_thread.start()
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.

from unicorn_binance_websocket_api.unicorn_binance_websocket_api_manager import BinanceWebSocketApiManager

# create instance of BinanceWebSocketApiManager
binance_websocket_api_manager = BinanceWebSocketApiManager()

# get version of the used UNICORN Binance WebSocket API
if binance_websocket_api_manager.is_update_availabe():
    print(
        "Please upgrade to " +
        binance_websocket_api_manager.get_latest_version() + ", you are on",
        binance_websocket_api_manager.get_version())

    latest_release_info = binance_websocket_api_manager.get_latest_release_info(
    )
    if latest_release_info:
        print(
            "Please download the latest release or run `pip install unicorn-binance-websocket-api --upgrade`: "
        )
        print("\ttar: " + latest_release_info["tarball_url"])
 def test_rest_jex_com_testnet(self):
     binance_websocket_api_manager = BinanceWebSocketApiManager(
         exchange="jex.com")
     BinanceWebSocketApiRestclient(binance_websocket_api_manager)
     binance_websocket_api_manager.stop_manager_with_all_streams()
    def test_live_run(self):
        binance_websocket_api_manager = BinanceWebSocketApiManager(
            enable_stream_signal_buffer=True)
        binance_websocket_api_manager.get_active_stream_list()
        binance_websocket_api_manager.get_limit_of_subscriptions_per_stream()
        binance_websocket_api_manager.get_stream_list()

        markets = [
            'xrpbearbusd', 'zeceth', 'cndbtc', 'dashbtc', 'atompax', 'perlbtc',
            'ardreth', 'zecbnb', 'bchabctusd', 'usdsbusdt', 'winbnb', 'xzcxrp',
            'bchusdc', 'wavesbnb', 'kavausdt', 'btsusdt', 'chzbnb', 'tusdbnb',
            'xtzbusd', 'bcptusdc', 'dogebnb', 'eosbearusdt', 'ambbnb',
            'wrxbnb', 'poabtc', 'wanbtc', 'ardrbtc', 'icnbtc', 'tusdusdt',
            'atombusd', 'nxseth', 'bnbusdt', 'trxxrp', 'erdpax', 'erdbtc',
            'icxbusd', 'nulsbtc', 'hotusdt', 'wavespax', 'zilbnb', 'arnbtc',
            'nulsusdt', 'wintrx', 'npxsbtc', 'busdtry', 'qtumbnb', 'eosbtc',
            'xlmpax', 'tomobnb', 'eosbnb', 'engbtc', 'linketh', 'xrpbtc',
            'fetbtc', 'stratusdt', 'navbnb', 'bcneth', 'yoyobtc', 'nanobnb',
            'saltbtc', 'tfuelusdc', 'skybnb', 'fuelbtc', 'bnbusdc', 'inseth',
            'btcpax', 'batbtc', 'rlceth', 'arketh', 'ltcpax', 'ltcbusd',
            'duskbtc', 'mftusdt', 'bntusdt', 'mdabtc', 'enjbtc', 'poabnb',
            'nanobusd', 'paxtusd', 'hotbtc', 'bcdbtc', 'beambnb', 'trxeth',
            'omgbnb', 'cdtbtc', 'eosusdc', 'dashbusd', 'cocosbtc', 'dasheth',
            'xrptusd', 'atomtusd', 'rcneth', 'rpxeth', 'xlmusdc', 'aionbusd',
            'nxsbtc', 'chateth', 'repbtc', 'tctusdt', 'linkusdt', 'nasbtc',
            'usdsusdc', 'xvgbtc', 'elfeth', 'ctxcbtc', 'cmteth', 'gnteth',
            'usdspax', 'zilbtc', 'batpax', 'stratbtc', 'xzcbtc', 'iotausdt',
            'etcbnb', 'ankrusdt', 'xlmeth', 'loombtc', 'erdusdc', 'rdnbnb',
            'icneth', 'vetbtc', 'cvcusdt', 'ftmpax', 'ethbullusdt', 'edoeth',
            'steemeth', 'gobnb', 'hsrbtc', 'ambbtc', 'bchabcbtc', 'dntbtc',
            'btctusd', 'denteth', 'snglsbtc', 'eosbullusdt', 'xlmtusd',
            'tnteth', 'sysbnb', 'renusdt', 'zrxusdt', 'xlmbtc', 'stormbtc',
            'ncashbnb', 'omgusdt', 'troyusdt', 'venbtc', 'modbtc', 'dogepax',
            'ontusdc', 'eurbusd', 'tctbnb', 'gxsbtc', 'celrbnb', 'adausdt',
            'beambtc', 'elfbtc', 'celrbtc', 'rvnusdt', 'poaeth', 'wavesusdc',
            'trxbnb', 'trxusdc', 'ethbearusdt', 'ethpax', 'bateth', 'kavabtc',
            'paxbtc', 'trigbnb', 'btcusdc', 'oneusdc', 'xrptry', 'stxusdt',
            'strateth', 'lendeth', 'neousdc', 'mithusdt', 'btcngn', 'blzeth',
            'evxeth', 'dnteth', 'grsbtc', 'arneth', 'iotabnb', 'waneth',
            'xtzbnb', 'subeth', 'btsbtc', 'cvceth', 'ethusdc', 'etctusd',
            'cloakbtc', 'grseth', 'eospax', 'cdteth', 'bchusdt', 'lskusdt',
            'enjbusd', 'drepbtc', 'manaeth', 'tomousdt', 'algobnb', 'wtceth',
            'linkpax', 'batbnb', 'sceth', 'rvnbusd', 'cvcbnb', 'manabtc',
            'gasbtc', 'stxbtc', 'cloaketh', 'neotusd', 'lrceth', 'thetabtc',
            'dogeusdt', 'aionbnb', 'viabtc', 'keyeth', 'nanoeth', 'ncasheth',
            'bgbpusdc', 'ltobnb', 'snmeth', 'adabtc', 'btseth', 'qtumbusd',
            'wtcbnb', 'dcrbtc', 'fttbnb', 'paxbnb', 'insbtc', 'gntbnb',
            'etheur', 'dashusdt', 'rcnbtc', 'btcusdt', 'wanusdt', 'powrbnb',
            'xmrbnb', 'trigeth', 'xzceth', 'bchbtc', 'qspbnb', 'scbnb',
            'mcoeth', 'powrbtc', 'algotusd', 'ankrbtc', 'tusdeth', 'keybtc',
            'usdcusdt', 'ftmusdc', 'atombnb', 'zenbtc', 'dockbtc', 'neobtc',
            'phbbnb', 'bnbpax', 'brdbnb', 'trxusdt', 'trxbusd', 'mtlbtc',
            'ftmtusd', 'perlusdc', 'mithbnb', 'eosbullbusd', 'reqeth',
            'bccbnb', 'veneth', 'loombnb', 'trxpax', 'usdcpax', 'stormusdt',
            'ognbtc', 'gvtbtc', 'iotaeth', 'naseth', 'drepusdt', 'gvteth',
            'wrxusdt', 'bchabcpax', 'ongbtc', 'usdcbnb', 'dgdeth', 'salteth',
            'mtleth', 'bcnbnb', 'neblbnb', 'wanbnb', 'ontusdt', 'npxsusdt',
            'mftbtc', 'eosbearbusd', 'bntbtc', 'gtoeth', 'modeth', 'etcusdc',
            'veteth', 'bcptpax', 'atomusdc', 'duskpax', 'kavabnb', 'lunbtc',
            'adxbtc', 'bnteth', 'funbtc', 'knceth', 'dogebtc', 'bchsvpax',
            'bcpttusd', 'osteth', 'oaxeth', 'wabibtc', 'appcbtc', 'qkcbtc',
            'nanousdt', 'wingsbtc', 'hbarusdt', 'eurusdt', 'waveseth',
            'asteth', 'linkbusd', 'btttusd', 'zecusdc', 'bnbusds', 'linkbtc',
            'venusdt', 'hotbnb', 'usdtrub', 'tctbtc', 'ankrpax', 'btctry',
            'adabnb', 'polybtc', 'bcceth', 'enjeth', 'bnbbusd', 'repbnb',
            'bullusdt', 'vitebtc', 'btgbtc', 'renbtc', 'thetausdt', 'troybtc',
            'dentbtc', 'ostbtc', 'nxsbnb', 'mithbtc', 'xmrbtc', 'tomobtc',
            'nulseth', 'phbbtc', 'duskbnb', 'yoyoeth', 'ontbusd', 'btgeth',
            'etcusdt', 'atomusdt', 'hcbtc', 'brdbtc', 'fttbtc', 'celrusdt',
            'lskbnb', 'phbpax', 'xtzbtc', 'batusdt', 'viteusdt', 'trxbtc',
            'bchtusd', 'xtzusdt', 'ftmbtc', 'enjbnb', 'arkbtc', 'wavesusdt',
            'ftmusdt', 'neobusd', 'stormbnb', 'luneth', 'gntbtc', 'gtousdt',
            'chzusdt', 'sntbtc', 'bandbnb', 'hoteth', 'wingseth', 'mcobtc',
            'docketh', 'drepbnb', 'eosusdt', 'eostusd', 'npxseth', 'thetaeth',
            'iotxbtc', 'phxbnb', 'enjusdt', 'tfuelbnb', 'mcobnb', 'ontpax',
            'dcrbnb', 'batusdc', 'snglseth', 'qlcbtc', 'qspeth', 'cndeth',
            'appcbnb', 'wprbtc', 'sysbtc', 'iostusdt', 'btceur', 'mtlusdt',
            'ethrub', 'tfuelpax', 'maticusdt', 'ftmbnb', 'xrpbusd', 'iotxusdt',
            'tusdbtusd', 'trigbtc', 'atombtc', 'bchpax', 'eosbusd', 'zileth',
            'gtotusd', 'xrpbullusdt', 'onetusd', 'algobtc', 'bchsvusdt',
            'gtopax', 'etceth', 'vibebtc', 'bttusdt', 'repeth', 'iostbnb',
            'usdttry', 'btsbnb', 'ankrbnb', 'dltbnb', 'snteth', 'linktusd',
            'nknusdt', 'rpxbtc', 'rdneth', 'cocosusdt', 'etcbusd', 'btttrx',
            'bandbtc', 'steembnb', 'zecpax', 'viabnb', 'cosbnb', 'mtheth',
            'xrpusdc', 'xemeth', 'pivxbnb', 'phxbtc', 'zilusdt', 'poeeth',
            'bnbeur', 'bandusdt', 'vetbnb', 'lendbtc', 'xlmbnb', 'duskusdt',
            'mfteth', 'funusdt', 'adabusd', 'perlbnb', 'btcbusd', 'ltobtc',
            'nasbnb', 'algousdt', 'zeneth', 'bchsvusdc', 'mcousdt', 'venbnb',
            'hceth', 'fetusdt', 'edobtc', 'mftbnb', 'cosusdt', 'arpausdt',
            'xmrusdt', 'ctxcusdt', 'bqxbtc', 'npxsusdc', 'icxbnb', 'bchbnb',
            'phbusdc', 'tomousdc', 'nulsbnb', 'rcnbnb', 'arpabnb', 'qtumbtc',
            'keyusdt', 'agibtc', 'mblbtc', 'eoseth', 'tusdbtc', 'aioneth',
            'storjbtc', 'lsketh', 'bchsvbtc', 'bntbusd', 'ncashbtc', 'mblbnb',
            'polybnb', 'aebnb', 'ltceth', 'dogeusdc', 'wpreth', 'syseth',
            'bcnbtc', 'ognusdt', 'nanobtc', 'astbtc', 'zrxeth', 'adxeth',
            'gxseth', 'ethbearbusd', 'onepax', 'scbtc', 'icxbtc', 'ontbnb',
            'qlceth', 'btsbusd', 'rlcbtc', 'chatbtc', 'wabibnb', 'renbnb',
            'xrpbullbusd', 'wavesbtc', 'funeth', 'rlcbnb', 'phxeth', 'winbtc',
            'storjeth', 'wavesbusd', 'iostbtc', 'icxeth', 'adatusd', 'nknbnb',
            'btcrub', 'pivxbtc', 'perlusdt', 'bullbusd', 'bttusdc', 'bcptbtc',
            'aebtc', 'ethusdt', 'ltousdt', 'subbtc', 'thetabnb', 'blzbtc',
            'tfuelusdt', 'evxbtc', 'hbarbtc', 'ambeth', 'winusdt', 'qtumeth',
            'dgdbtc', 'adaeth', 'busdusdt', 'xrpbnb', 'adapax', 'usdsbusds',
            'cocosbnb', 'navbtc', 'rvnbtc', 'tnbbtc', 'bnbbtc', 'neopax',
            'bearusdt', 'usdstusd', 'snmbtc', 'rvnbnb', 'gtobnb', 'phbtusd',
            'hcusdt', 'btcusds', 'reqbtc', 'ognbnb', 'lrcbtc', 'xrpeth',
            'loometh', 'zectusd', 'vibeeth', 'gobtc', 'bnbtry', 'bcdeth',
            'qkceth', 'neoeth', 'paxusdt', 'bchsvtusd', 'fetbnb', 'yoyobnb',
            'xlmbusd', 'skyeth', 'paxeth', 'ltcbtc', 'xvgeth', 'tnbeth',
            'stratbusd', 'agieth', 'xlmusdt', 'lskbtc', 'bearbusd', 'hsreth',
            'ctxcbnb', 'oaxbtc', 'qspbtc', 'iotxeth', 'qlcbnb', 'algousdc',
            'etcpax', 'fueleth', 'aionusdt', 'xmreth', 'maticbtc', 'dashbnb',
            'oneusdt', 'brdeth', 'viaeth', 'omgeth', 'ankrtusd', 'usdsusdt',
            'ethtusd', 'wavestusd', 'iosteth', 'cmtbnb', 'ostbnb', 'ltcusdt',
            'ethtry', 'zrxbtc', 'bchabcusdt', 'onebnb', 'beamusdt', 'nebleth',
            'bcptbnb', 'adxbnb', 'ontbtc', 'bttbnb', 'dockusdt', 'bccbtc',
            'omgbtc', 'algopax', 'neousdt', 'xrprub', 'busdngn', 'appceth',
            'dentusdt', 'xzcbnb', 'tfueltusd', 'xembnb', 'arpabtc', 'ankrusdc',
            'adausdc', 'kmdeth', 'troybnb', 'bnbeth', 'ltcusdc', 'databtc',
            'blzbnb', 'naveth', 'btcbbtc', 'battusd', 'bnbngn', 'bchbusd',
            'busdrub', 'ltctusd', 'vetbusd', 'ongbnb', 'fttusdt', 'bccusdt',
            'ongusdt', 'engeth', 'usdctusd', 'etcbtc', 'gtousdc', 'mdaeth',
            'vitebnb', 'erdusdt', 'dltbtc', 'bnbtusd', 'wtcbtc', 'xrpusdt',
            'xrpeur', 'agibnb', 'trxtusd', 'ethbullbusd', 'iotabtc', 'xembtc',
            'bchabcusdc', 'duskusdc', 'xrppax', 'mblusdt', 'kmdbtc', 'neblbtc',
            'maticbnb', 'bnbrub', 'bcpteth', 'bttbtc', 'stxbnb', 'dlteth',
            'onteth', 'vetusdt', 'ppteth', 'ethbtc', 'onebtc', 'ethbusd',
            'zecbtc', 'erdbnb', 'xrpbearusdt', 'stratbnb', 'cmtbtc', 'cvcbtc',
            'kncbtc', 'rpxbnb', 'zenbnb', 'cndbnb', 'ardrbnb', 'bchabcbusd',
            'ltcbnb', 'pivxeth', 'skybtc', 'tntbtc', 'poebtc', 'steembtc',
            'icxusdt', 'tfuelbtc', 'chzbtc', 'vibeth', 'winusdc', 'gtobtc',
            'linkusdc', 'batbusd', 'rdnbtc', 'dataeth', 'bttpax', 'zrxbnb',
            'vibbtc', 'neobnb', 'cosbtc', 'powreth', 'rlcusdt', 'hbarbnb',
            'wabieth', 'bqxeth', 'aionbtc', 'aeeth', 'mthbtc', 'wrxbtc',
            'pptbtc', 'nknbtc', 'zecusdt', 'stormeth', 'qtumusdt'
        ]

        channels = [
            'kline_1m', 'kline_5m', 'kline_15m', 'kline_30m', 'kline_1h',
            'kline_12h', 'kline_1w', 'trade', 'miniTicker', 'depth20'
        ]

        binance_websocket_api_manager.create_stream(False,
                                                    False,
                                                    stream_label="error")

        for channel in channels:
            stream_id1 = binance_websocket_api_manager.create_stream(
                channel, markets, output="UnicornFy")

        time.sleep(5)
        binance_websocket_api_manager.set_restart_request(stream_id1)
        time.sleep(10)
        binance_websocket_api_manager.set_restart_request(stream_id1)

        restserver = BinanceWebSocketApiRestServer(
            binance_websocket_api_manager)
        restserver.get("icinga")
        restserver.get("invalid")

        markets = [
            'xrpbearbusd', 'zeceth', 'cndbtc', 'dashbtc', 'atompax', 'perlbtc',
            'ardreth', 'zecbnb', 'erdbnb', 'xrpbearusdt', 'stratbnb', 'cmtbtc',
            'cvcbtc', 'kncbtc', 'rpxbnb', 'zenbnb', 'cndbnb', 'wrxbtc',
            'pptbtc', 'nknbtc', 'zecusdt', 'stormeth', 'qtumusdt'
        ]

        for channel in channels:
            stream_id2 = binance_websocket_api_manager.create_stream(
                channel,
                markets,
                stream_buffer_name=channel,
                ping_interval=10,
                ping_timeout=10,
                close_timeout=5)

        stream_id3 = binance_websocket_api_manager.create_stream(
            channel, markets, stream_buffer_name=True)
        time.sleep(10)
        binance_websocket_api_manager.stop_stream_as_crash(stream_id3)
        binance_websocket_api_manager.create_websocket_uri(
            False, False, stream_id1)
        binance_websocket_api_manager.unsubscribe_from_stream(stream_id2,
                                                              markets="erdbnb")
        binance_websocket_api_manager.unsubscribe_from_stream(stream_id2,
                                                              channels="trade")
        binance_websocket_api_manager.pop_stream_data_from_stream_buffer()
        binance_websocket_api_manager.pop_stream_data_from_stream_buffer()
        binance_websocket_api_manager.pop_stream_data_from_stream_buffer()
        binance_websocket_api_manager.pop_stream_data_from_stream_buffer(
            stream_buffer_name="invalid")
        stream_id_1_1 = binance_websocket_api_manager.replace_stream(
            stream_id1, 'trade', 'kncbtc', "name")
        binance_websocket_api_manager.replace_stream(stream_id_1_1,
                                                     'trade',
                                                     'kncbtc',
                                                     "name",
                                                     new_ping_interval=10,
                                                     new_ping_timeout=10,
                                                     new_close_timeout=5)
        binance_websocket_api_manager.get_results_from_endpoints()
        binance_websocket_api_manager.get_binance_api_status()
        binance_websocket_api_manager.get_start_time()
        binance_websocket_api_manager.get_stream_label(stream_id1)
        binance_websocket_api_manager.get_stream_label(False)
        binance_websocket_api_manager.get_keep_max_received_last_second_entries(
        )
        request_id = binance_websocket_api_manager.get_stream_subscriptions(
            stream_id2)
        binance_websocket_api_manager.get_result_by_request_id(request_id)
        binance_websocket_api_manager.get_reconnects()
        binance_websocket_api_manager.get_errors_from_endpoints()
        binance_websocket_api_manager.get_monitoring_status_plain()
        binance_websocket_api_manager.get_ringbuffer_error_max_size()
        binance_websocket_api_manager.get_ringbuffer_result_max_size()
        binance_websocket_api_manager.set_ringbuffer_error_max_size(200)
        binance_websocket_api_manager.set_ringbuffer_result_max_size(300)
        binance_websocket_api_manager.set_stream_label(stream_id2, "blub")
        binance_websocket_api_manager._add_stream_to_stream_list(
            uuid.uuid4(), 'trade', 'btceth')
        binance_websocket_api_manager._restart_stream((stream_id1))
        binance_websocket_api_manager.delete_stream_from_stream_list(
            stream_id1)
        binance_websocket_api_manager.delete_listen_key_by_stream_id(
            stream_id1)
        binance_websocket_api_manager.is_update_availabe_unicorn_fy()
        binance_websocket_api_manager.get_version_unicorn_fy()
        binance_websocket_api_manager.create_payload(stream_id2,
                                                     "invalid",
                                                     channels="trade")
        time.sleep(10)
        binance_websocket_api_manager.get_result_by_request_id(request_id)
        binance_websocket_api_manager.get_result_by_request_id()
        binance_websocket_api_manager.set_keep_max_received_last_second_entries(
            30)
        binance_websocket_api_manager.stop_stream_as_crash(stream_id2)
        binance_websocket_api_manager.stop_stream(stream_id2)
        binance_websocket_api_manager.add_to_ringbuffer_error("test")
        binance_websocket_api_manager.add_to_ringbuffer_result("test")
        binance_websocket_api_manager.get_number_of_free_subscription_slots(
            stream_id2)
        binance_websocket_api_manager.get_most_receives_per_second()
        binance_websocket_api_manager.get_number_of_streams_in_stream_list()
        binance_websocket_api_manager.is_update_availabe_check_command()
        binance_websocket_api_manager.wait_till_stream_has_stopped(stream_id2)
        binance_websocket_api_manager.print_stream_info(stream_id2)
        binance_websocket_api_manager.print_summary()
        binance_websocket_api_manager.print_summary_to_png(".", 12.5)
        binance_websocket_api_manager.get_latest_release_info()
        binance_websocket_api_manager.get_latest_release_info_check_command()
        binance_websocket_api_manager.set_private_dex_config(
            "bnb1v566f3avl2ud5z0jepazsrguzkj367snlx4jm6")
        binance_websocket_api_manager.get_version()
        binance_websocket_api_manager.help()
        binance_websocket_api_manager.get_current_receiving_speed_global()
        binance_websocket_api_manager.wait_till_stream_has_started(stream_id2)
        binance_websocket_api_manager.remove_ansi_escape_codes("test text")
        binance_websocket_api_manager.pop_stream_signal_from_stream_signal_buffer(
        )

        # test to many subscriptions
        import unicorn_binance_rest_api

        binance_api_key = ""
        binance_api_secret = ""
        binance_rest_client = unicorn_binance_rest_api.BinanceRestApiManager(
            binance_api_key, binance_api_secret)
        markets = []
        data = binance_rest_client.get_all_tickers()
        for item in data:
            markets.append(item['symbol'])
        binance_websocket_api_manager.create_stream("trade",
                                                    markets,
                                                    stream_label="to much!")

        time.sleep(10)
        binance_websocket_api_manager.stop_manager_with_all_streams()
    def setUp(self):
        self.binance_je_api_key = BINANCE_JE_API_KEY
        self.binance_je_api_secret = BINANCE_JE_API_SECRET

        self.binance_je_websocket_api_manager = BinanceWebSocketApiManager(
            exchange="binance.je")
 def test_rest_binance_com_isolated_margin_testnet(self):
     binance_websocket_api_manager = BinanceWebSocketApiManager(
         exchange="binance.com-isolated_margin-testnet")
     BinanceWebSocketApiRestclient(binance_websocket_api_manager)
     binance_websocket_api_manager.stop_manager_with_all_streams()
コード例 #9
0
        if oldest_stream_data_from_stream_buffer is not False:
            pass
        else:
            time.sleep(0.01)


def print_stream_to_png(manager):
    while True:
        manager.print_summary_to_png("/var/www/html/", hight_per_row=13.5)
        time.sleep(10)


try:
    binance_rest_client = unicorn_binance_rest_api.BinanceRestApiManager(
        binance_api_key, binance_api_secret)
    ws_manager = BinanceWebSocketApiManager()
except requests.exceptions.ConnectionError:
    print("No internet connection?")
    sys.exit(1)

worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer,
                                 args=(ws_manager, ))
worker_thread.start()

export_thread = threading.Thread(target=print_stream_to_png,
                                 args=(ws_manager, ))
export_thread.start()

markets = []
data = binance_rest_client.get_all_tickers()
for item in data:
コード例 #10
0
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.

from unicorn_binance_websocket_api.unicorn_binance_websocket_api_manager import BinanceWebSocketApiManager
import logging
import os
import time
import threading

# https://docs.python.org/3/library/logging.html#logging-levels
logging.basicConfig(level=logging.INFO,
                    filename=os.path.basename(__file__) + '.log',
                    format="{asctime} [{levelname:8}] {process} {thread} {module}: {message}",
                    style="{")

binance_websocket_api_manager = BinanceWebSocketApiManager(enable_stream_signal_buffer=True)


def print_stream_signals(binance_websocket_api_manager):
    while True:
        if binance_websocket_api_manager.is_manager_stopping():
            exit(0)
        stream_signal = binance_websocket_api_manager.pop_stream_signal_from_stream_signal_buffer()
        if stream_signal is False:
            time.sleep(0.01)
        else:
            print(stream_signal)

# start a worker process to process to move the received stream_data from the stream_buffer to a print function
worker_thread = threading.Thread(target=print_stream_signals, args=(binance_websocket_api_manager,))
worker_thread.start()
コード例 #11
0
# IN THE SOFTWARE.

from unicorn_binance_websocket_api.unicorn_binance_websocket_api_manager import BinanceWebSocketApiManager
import logging
import time
import os

# https://docs.python.org/3/library/logging.html#logging-levels
logging.basicConfig(
    level=logging.ERROR,
    filename=os.path.basename(__file__) + '.log',
    format="{asctime} [{levelname:8}] {process} {thread} {module}: {message}",
    style="{")

# create instance of BinanceWebSocketApiManager
binance_websocket_api_manager = BinanceWebSocketApiManager(
    exchange="binance.com", output_default="UnicornFy")

markets = {
    'bnbbtc', 'ethbtc', 'btcusdt', 'bchabcusdt', 'xrpusdt', 'rvnbtc',
    'ltcusdt', 'adausdt', 'eosusdt', 'neousdt', 'bnbusdt', 'adabtc', 'ethusdt',
    'trxbtc', 'bchabcbtc', 'ltcbtc', 'xrpbtc', 'ontbtc', 'bttusdt', 'eosbtc',
    'xlmbtc', 'bttbtc', 'tusdusdt', 'xlmusdt', 'qkcbtc', 'zrxbtc', 'neobtc',
    'adaeth', 'icxusdt', 'btctusd', 'icxbtc', 'btcusdc', 'wanbtc', 'zecbtc',
    'wtcbtc', 'batbtc', 'adabnb', 'etcusdt', 'qtumusdt', 'xmrbtc', 'trxeth',
    'adatusd', 'trxxrp', 'trxbnb', 'dashbtc', 'rvnbnb', 'bchabctusd', 'etcbtc',
    'bnbeth', 'ethpax', 'nanobtc', 'xembtc', 'xrpbnb', 'bchabcpax', 'xrpeth',
    'bttbnb', 'ltcbnb', 'agibtc', 'zrxusdt', 'xlmbnb', 'ltceth', 'eoseth',
    'ltctusd', 'polybnb', 'scbtc', 'steembtc', 'trxtusd', 'npxseth', 'kmdbtc',
    'polybtc', 'gasbtc', 'engbtc', 'zileth', 'xlmeth', 'eosbnb', 'xrppax',
    'lskbtc', 'npxsbtc', 'xmrusdt', 'ltcpax', 'ethtusd', 'batusdt', 'mcobtc',
    'neoeth', 'bntbtc', 'eostusd', 'lrcbtc', 'funbtc', 'zecusdt', 'bnbpax',
コード例 #12
0
ファイル: TEST3.py プロジェクト: Slavian2015/Defi
    def run(self):
        self.binance_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.com-futures",
                                                                        output_default="UnicornFy")
        self.binance_websocket_api_manager.create_stream(['kline_1m', 'kline_1h', 'depth5'],
                                                         [f'{self.symbol}usdt'],
                                                         stream_label="UnicornFy",
                                                         output="UnicornFy")
        while self.bot_ping:
            if self.status:
                self.status = False
                self.binance_websocket_api_manager.create_stream(['kline_1m', 'kline_1h', 'depth5'],
                                                                 [f'{self.symbol}usdt'],
                                                                 stream_label="UnicornFy",
                                                                 output="UnicornFy")
                print(f"PARSER RESTART at {datetime.now().strftime('%H:%M:%S')}")
            else:
                try:
                    if self.binance_websocket_api_manager.is_manager_stopping():
                        exit(0)
                        self.status = True
                    stream_buffer = self.binance_websocket_api_manager.pop_stream_data_from_stream_buffer()
                    if stream_buffer:

                        print(stream_buffer)
                        try:
                            if stream_buffer['event_type'] == "bookTicker":
                                print(stream_buffer)
                                self.my_ask = float(stream_buffer['asks'][0][0])
                                self.my_bid = float(stream_buffer['bids'][0][0])
                                # print("ASK :", self.my_ask)

                            else:
                                if stream_buffer['event_type'] == "kline":
                                    if stream_buffer['kline']['interval'] == "1m":
                                        if stream_buffer['event_time'] >= stream_buffer['kline']['kline_close_time']:
                                            new_row = [stream_buffer['kline']['kline_start_time'],
                                                       stream_buffer['kline']['open_price'],
                                                       stream_buffer['kline']['high_price'],
                                                       stream_buffer['kline']['low_price'],
                                                       stream_buffer['kline']['close_price'],
                                                       stream_buffer['kline']['base_volume'],
                                                       stream_buffer['kline']['kline_close_time'],
                                                       None, None, None, None, None]
                                            self.main_data.append(new_row)
                                            del self.main_data[0]
                                    elif stream_buffer['kline']['interval'] == "1h":
                                        if stream_buffer['event_time'] >= stream_buffer['kline']['kline_close_time']:
                                            new_row = [stream_buffer['kline']['kline_start_time'],
                                                       stream_buffer['kline']['open_price'],
                                                       stream_buffer['kline']['high_price'],
                                                       stream_buffer['kline']['low_price'],
                                                       stream_buffer['kline']['close_price'],
                                                       stream_buffer['kline']['base_volume'],
                                                       stream_buffer['kline']['kline_close_time'],
                                                       None, None, None, None, None]
                                            self.main_data_hour.append(new_row)
                                            del self.main_data_hour[0]

                            time.sleep(0.2)
                        except KeyError:
                            print(f"Exception :\n {stream_buffer}")
                            time.sleep(0.5)
                    else:
                        time.sleep(0.01)
                except Exception as exc:
                    self.status = True
                    traceback.print_exc()
                    time.sleep(30)
コード例 #13
0
ファイル: TEST3.py プロジェクト: Slavian2015/Defi
telega_api_key = new_keys['telega']['key']
telega_api_secret = new_keys['telega']['secret']
api_key = new_keys['bin']['key']
api_secret = new_keys['bin']['secret']
#
#
# new_data = SsrmBot("trx", float(20), api_key, api_secret)
#
# new_data.run()


###########################

bot_ping = True
binance_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.com-futures",
                                                           output_default="dict")
# binance_websocket_api_manager.create_stream(['kline_1m'],
#                                                  ['trxusdt'],
#                                                  stream_label="UnicornFy",
#                                                  output="UnicornFy")
#
# binance_websocket_api_manager.create_stream(['trade'],
#                                             ['trxusdt'],
#                                             output="UnicornFy")

binance_websocket_api_manager.create_stream('arr', '!userData',
                                            api_key=api_key, api_secret=api_secret,
                                            output="dict"
                                            )

while bot_ping:
 def setUp(self):
     self.binance_org_websocket_api_manager = BinanceWebSocketApiManager(
         exchange="binance.org")
コード例 #15
0

# configure api key and secret for binance.com
binance_com_api_key = ""
binance_com_api_secret = ""

# configure api key and secret for binance.je
binance_je_api_key = ""
binance_je_api_secret = ""

# configure api key and secret for binance.us
binance_us_api_key = ""
binance_us_api_secret = ""

# create instances of BinanceWebSocketApiManager
binance_com_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.com")
binance_je_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.je")
binance_us_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.us")

# set api key and secret in api manager
binance_com_websocket_api_manager.set_private_api_config(binance_com_api_key, binance_com_api_secret)
binance_je_websocket_api_manager.set_private_api_config(binance_je_api_key, binance_je_api_secret)
binance_us_websocket_api_manager.set_private_api_config(binance_us_api_key, binance_us_api_secret)

# create the userData streams
binance_com_user_data_stream_id = binance_com_websocket_api_manager.create_stream('arr', '!userData')
binance_je_user_data_stream_id = binance_je_websocket_api_manager.create_stream('arr', '!userData')
binance_us_user_data_stream_id = binance_us_websocket_api_manager.create_stream('arr', '!userData')

# start a worker process to move the received stream_data from the stream_buffer to a print function
worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer, args=(binance_com_websocket_api_manager,))
 def setUp(self):
     self.binance_com_api_key = BINANCE_COM_API_KEY
     self.binance_com_api_secret = BINANCE_COM_API_SECRET
     self.binance_com_websocket_api_manager = BinanceWebSocketApiManager(
         exchange="binance.com", disable_colorama=True)
コード例 #17
0
from unicorn_binance_websocket_api.unicorn_binance_websocket_api_manager import BinanceWebSocketApiManager
import time


api_key = ""
api_secret = ""


def book_ticker(msg):
    print("book_ticker: " + str(msg))


def order_status(msg):
    print("order_status: " + str(msg))


bwsm = BinanceWebSocketApiManager()

book_ticker_id = bwsm.create_stream("bookTicker", 'bnbbusd', stream_buffer_name=True)
user_stream_id = bwsm.create_stream('arr', '!userData', api_key=api_key, api_secret=api_secret, stream_buffer_name=True)

while True:
    msg = bwsm.pop_stream_data_from_stream_buffer(book_ticker_id)
    if msg:
        book_ticker(msg)
    msg = bwsm.pop_stream_data_from_stream_buffer(user_stream_id)
    if msg:
        order_status(msg)
    time.sleep(0.01)
 def test_rest_binance_com_coin_futures(self):
     binance_websocket_api_manager = BinanceWebSocketApiManager(
         exchange="binance.com-coin-futures")
     BinanceWebSocketApiRestclient(binance_websocket_api_manager)
     binance_websocket_api_manager.stop_manager_with_all_streams()
コード例 #19
0
import asyncio
import concurrent.futures
import logging
import os
import sys
import time

from unicorn_binance_websocket_api.unicorn_binance_websocket_api_manager import \
    BinanceWebSocketApiManager

from nifi_websocket import NifiWebSocketClient

logging.basicConfig(level=logging.INFO)

BINANCE_WS_API_MANAGERS = {
    'futures': BinanceWebSocketApiManager(exchange="binance.com-futures")
}


class StreamsParameters:
    PRIVATE = [(
        BINANCE_WS_API_MANAGERS['futures'],
        'arr',
        '!userData',
        'binance_futures_user_data',
    )]
    PUBLIC = [(
        BINANCE_WS_API_MANAGERS['futures'],
        'trade',
        'btcusdt',
        'binance_futures_trade_btcusdt',
 def test_invalid_exchange(self):
     from unicorn_binance_websocket_api.unicorn_binance_websocket_api_exceptions import UnknownExchange
     try:
         BinanceWebSocketApiManager(exchange="invalid-exchange.com")
     except UnknownExchange:
         pass
コード例 #21
0
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.

import setuptools
from unicorn_binance_websocket_api.unicorn_binance_websocket_api_manager import BinanceWebSocketApiManager

ubwa = BinanceWebSocketApiManager()

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
     name='unicorn-binance-websocket-api',
     version=str(ubwa.get_version()),
     author="Oliver Zehentleitner",
     url="https://github.com/oliver-zehentleitner/unicorn-binance-websocket-api",
     description="An unofficial Python API to use the Binance Websocket API`s (com+testnet, com-margin+testnet, "
                 "com-isolated_margin+testnet, com-futures+testnet, jersey, us, jex, dex/chain+testnet) in a easy, fast"
                 ", flexible, robust and fully-featured way.",
     long_description=long_description,
     long_description_content_type="text/markdown",
     license='MIT License',
コード例 #22
0

# configure api key and secret for binance.com
binance_com_api_key = ""
binance_com_api_secret = ""

# configure api key and secret for binance.je
binance_je_api_key = ""
binance_je_api_secret = ""

# configure api key and secret for binance.us
binance_us_api_key = ""
binance_us_api_secret = ""

# create instances of BinanceWebSocketApiManager
binance_com_websocket_api_manager = BinanceWebSocketApiManager(
    exchange="binance.com", throw_exception_if_unrepairable=True)
binance_je_websocket_api_manager = BinanceWebSocketApiManager(
    exchange="binance.je")
binance_us_websocket_api_manager = BinanceWebSocketApiManager(
    exchange="binance.us")

# set api key and secret in api manager
binance_com_websocket_api_manager.set_private_api_config(
    binance_com_api_key, binance_com_api_secret)
binance_je_websocket_api_manager.set_private_api_config(
    binance_je_api_key, binance_je_api_secret)
binance_us_websocket_api_manager.set_private_api_config(
    binance_us_api_key, binance_us_api_secret)

# create the userData streams
binance_com_user_data_stream_id = binance_com_websocket_api_manager.create_stream(
コード例 #23
0
def print_stream_data_from_stream_buffer(binance_websocket_api_manager):
    while True:
        if binance_websocket_api_manager.is_manager_stopping():
            exit(0)
        oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer(
        )
        if oldest_stream_data_from_stream_buffer is False:
            time.sleep(0.01)
        else:
            unicorn_fied_stream_data = UnicornFy.binance_org_websocket(
                oldest_stream_data_from_stream_buffer)
            print(unicorn_fied_stream_data)


# create instance of BinanceWebSocketApiManager for Binance Chain DEX
binance_websocket_api_manager = BinanceWebSocketApiManager(
    exchange="binance.org-testnet")

# start a worker process to move the received stream_data from the stream_buffer to a print function
worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer,
                                 args=(binance_websocket_api_manager, ))
worker_thread.start()

# userAddress streams
binance_dex_user_address = "bnb1v566f3avl2ud5z0jepazsrguzkj367snlx4jm6"
id = binance_websocket_api_manager.create_stream('orders',
                                                 binance_dex_user_address)
binance_websocket_api_manager.create_stream('accounts',
                                            binance_dex_user_address)
binance_websocket_api_manager.create_stream('transfers',
                                            binance_dex_user_address)
user_address_multi_stream_id = binance_websocket_api_manager.create_stream(
    while True:
        if binance_websocket_api_manager.is_manager_stopping():
            exit(0)
        oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer(
        )
        if oldest_stream_data_from_stream_buffer is not False:
            pass
            #unicorn_fied_data = UnicornFy.binance_com_websocket(oldest_stream_data_from_stream_buffer)
            #print(str(unicorn_fied_data))
        else:
            time.sleep(0.01)


try:
    binance_rest_client = Client(binance_api_key, binance_api_secret)
    binance_websocket_api_manager = BinanceWebSocketApiManager(
        print_summary_export_path="/var/www/html/")
except requests.exceptions.ConnectionError:
    print("No internet connection?")
    sys.exit(1)

# start a worker process to move the received stream_data from the stream_buffer to a print function
worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer,
                                 args=(binance_websocket_api_manager, ))
worker_thread.start()

data = binance_rest_client.get_all_tickers()
for item in data:
    markets.append(item['symbol'])

binance_websocket_api_manager.set_private_api_config(binance_api_key,
                                                     binance_api_secret)
コード例 #25
0
ファイル: ssrm.py プロジェクト: Slavian2015/Defi
    def run(self):
        bot_sendtext("SSRM START")
        binance_websocket_api_manager = BinanceWebSocketApiManager(
            exchange="binance.com", output_default="UnicornFy")
        binance_websocket_api_manager.create_stream(['kline_1m', 'kline_1h'],
                                                    [f'{self.symbol}usdt'],
                                                    stream_label="UnicornFy",
                                                    output="UnicornFy")
        binance_websocket_api_manager.create_stream(['depth5'],
                                                    [self.main_symbol],
                                                    stream_label="UnicornFy",
                                                    output="UnicornFy")

        while self.bot_ping:
            if self.status:
                self.status = False

                binance_websocket_api_manager.create_stream(
                    ['kline_1m', 'kline_1h', 'depth5'], [f'{self.symbol}usdt'],
                    stream_label="UnicornFy",
                    output="UnicornFy")
                binance_websocket_api_manager.create_stream(
                    ['depth5'],
                    [f'{self.symbol}upusdt', f'{self.symbol}downusdt'],
                    stream_label="UnicornFy",
                    output="UnicornFy")

                print(
                    f"PARSER RESTART at {datetime.now().strftime('%H:%M:%S')}")

            else:
                try:
                    if binance_websocket_api_manager.is_manager_stopping():
                        exit(0)
                        self.status = True
                    stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer(
                    )
                    if stream_buffer:
                        try:
                            if stream_buffer['event_type'] == "depth":
                                if stream_buffer[
                                        'symbol'] == self.main_symbol.upper():
                                    self.my_ask = float(
                                        stream_buffer['asks'][0][0])
                                    self.my_bid = float(
                                        stream_buffer['bids'][0][0])

                                    if self.order:
                                        if self.my_ask > self.my_tp:
                                            self.close_tp_order()
                                            """ проверить по ID и сохранить ордер в БД"""
                                        if self.my_bid <= self.my_sl:
                                            """ отменить TP, Проверить и сохранить ордер в БД"""
                                            self.close_sl_order()
                                    else:
                                        self.amount = self.min_amount / float(
                                            stream_buffer['asks'][0][0])

                            else:
                                if stream_buffer['event_type'] == "kline":
                                    if stream_buffer['kline'][
                                            'interval'] == "1m":
                                        if stream_buffer[
                                                'event_time'] >= stream_buffer[
                                                    'kline'][
                                                        'kline_close_time']:
                                            new_row = [
                                                stream_buffer['kline']
                                                ['kline_start_time'],
                                                stream_buffer['kline']
                                                ['open_price'],
                                                stream_buffer['kline']
                                                ['high_price'],
                                                stream_buffer['kline']
                                                ['low_price'],
                                                stream_buffer['kline']
                                                ['close_price'],
                                                stream_buffer['kline']
                                                ['base_volume'],
                                                stream_buffer['kline']
                                                ['kline_close_time'], None,
                                                None, None, None, None
                                            ]
                                            self.main_data.append(new_row)
                                            del self.main_data[0]
                                            self.algorithm()
                                    elif stream_buffer['kline'][
                                            'interval'] == "1h":
                                        if stream_buffer[
                                                'event_time'] >= stream_buffer[
                                                    'kline'][
                                                        'kline_close_time']:
                                            new_row = [
                                                stream_buffer['kline']
                                                ['kline_start_time'],
                                                stream_buffer['kline']
                                                ['open_price'],
                                                stream_buffer['kline']
                                                ['high_price'],
                                                stream_buffer['kline']
                                                ['low_price'],
                                                stream_buffer['kline']
                                                ['close_price'],
                                                stream_buffer['kline']
                                                ['base_volume'],
                                                stream_buffer['kline']
                                                ['kline_close_time'], None,
                                                None, None, None, None
                                            ]
                                            self.main_data_hour.append(new_row)
                                            del self.main_data_hour[0]
                                            self.algorithm_supertrend()

                            time.sleep(0.2)
                        except KeyError:
                            print(f"Exception :\n {stream_buffer}")
                            time.sleep(0.5)
                    else:
                        time.sleep(0.01)

                except Exception as exc:
                    self.status = True
                    traceback.print_exc()
                    time.sleep(30)
コード例 #26
0
import time
import threading
import logging

# import class to process stream data
from example_process_streams import BinanceWebSocketApiProcessStreams

# https://docs.python.org/3/library/logging.html#logging-levels
logging.basicConfig(
    level=logging.DEBUG,
    filename=os.path.basename(__file__) + '.log',
    format="{asctime} [{levelname:8}] {process} {thread} {module}: {message}",
    style="{")

# create instance of BinanceWebSocketApiManager and provide the function for stream processing
binance_websocket_api_manager = BinanceWebSocketApiManager(
    BinanceWebSocketApiProcessStreams.process_stream_data)
# binance_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.com")


def print_stream_data_from_stream_buffer(binance_websocket_api_manager):
    while True:
        if binance_websocket_api_manager.is_manager_stopping():
            exit(0)
        oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer(
        )
        if oldest_stream_data_from_stream_buffer is False:
            time.sleep(0.01)
        else:
            print(oldest_stream_data_from_stream_buffer)
            pass
 def setUp(self):
     self.binance_com_testnet_api_key = BINANCE_COM_API_KEY
     self.binance_com_testnet_api_secret = BINANCE_COM_API_SECRET
     self.binance_com_testnet_websocket_api_manager = BinanceWebSocketApiManager(
         exchange="binance.com-testnet")
コード例 #28
0
ファイル: ssrm_future.py プロジェクト: Slavian2015/Defi
    def run(self):
        bot_sendtext(f"FUTURE START {self.symbol.upper()}USDT")
        self.binance_websocket_api_manager = BinanceWebSocketApiManager(
            exchange="binance.com-futures", output_default="dict")
        self.binance_websocket_api_manager.create_stream(
            ['kline_1m', 'kline_1h'], [f'{self.symbol}usdt'],
            stream_label="UnicornFy",
            output="UnicornFy")
        self.binance_websocket_api_manager.create_stream(
            ['trade'], [f'{self.symbol}usdt'], output="UnicornFy")

        self.binance_websocket_api_manager.create_stream(
            'arr',
            '!userData',
            api_key=self.api_key,
            api_secret=self.api_secret,
            output="dict")

        while self.bot_ping:
            if self.status:
                self.status = False
                self.binance_websocket_api_manager.create_stream(
                    ['kline_1m', 'kline_1h'], [f'{self.symbol}usdt'],
                    stream_label="UnicornFy",
                    output="UnicornFy")

                self.binance_websocket_api_manager.create_stream(
                    ['trade'], [f'{self.symbol}usdt'], output="UnicornFy")

                self.binance_websocket_api_manager.create_stream(
                    'arr',
                    '!userData',
                    api_key=self.api_key,
                    api_secret=self.api_secret,
                    output="dict")

                print(
                    f"PARSER RESTART at {datetime.now().strftime('%H:%M:%S')}")
            else:
                try:
                    if self.binance_websocket_api_manager.is_manager_stopping(
                    ):
                        exit(0)
                        self.status = True
                    stream_buffer = self.binance_websocket_api_manager.pop_stream_data_from_stream_buffer(
                    )
                    if stream_buffer:
                        try:
                            if "e" in stream_buffer:
                                if stream_buffer['e'] == 'ACCOUNT_UPDATE':
                                    if stream_buffer['a']['P'][0][
                                            's'] == f'{self.symbol}usdt'.upper(
                                            ) and stream_buffer['a']['P'][0][
                                                'pa'] == "0":
                                        if self.order == 1:
                                            if self.trade >= self.my_price:
                                                self.close_tp_order()
                                            if self.trade < self.my_price:
                                                self.close_sl_order()
                                        elif self.order == 2:
                                            if self.trade > self.my_price:
                                                self.close_sl_order()
                                            if self.trade <= self.my_price:
                                                self.close_tp_order()
                            elif stream_buffer['event_type'] == "trade":
                                self.trade = float(stream_buffer['price'])
                                self.amount = self.min_amount / self.trade
                            else:
                                if stream_buffer['kline']['interval'] == "1m":
                                    if stream_buffer[
                                            'event_time'] >= stream_buffer[
                                                'kline']['kline_close_time']:
                                        new_row = [
                                            stream_buffer['kline']
                                            ['kline_start_time'],
                                            stream_buffer['kline']
                                            ['open_price'],
                                            stream_buffer['kline']
                                            ['high_price'],
                                            stream_buffer['kline']
                                            ['low_price'],
                                            stream_buffer['kline']
                                            ['close_price'],
                                            stream_buffer['kline']
                                            ['base_volume'],
                                            stream_buffer['kline']
                                            ['kline_close_time'], None, None,
                                            None, None, None
                                        ]
                                        self.main_data.append(new_row)
                                        del self.main_data[0]
                                        self.algorithm()
                                elif stream_buffer['kline'][
                                        'interval'] == "1h":
                                    if stream_buffer[
                                            'event_time'] >= stream_buffer[
                                                'kline']['kline_close_time']:
                                        new_row = [
                                            stream_buffer['kline']
                                            ['kline_start_time'],
                                            stream_buffer['kline']
                                            ['open_price'],
                                            stream_buffer['kline']
                                            ['high_price'],
                                            stream_buffer['kline']
                                            ['low_price'],
                                            stream_buffer['kline']
                                            ['close_price'],
                                            stream_buffer['kline']
                                            ['base_volume'],
                                            stream_buffer['kline']
                                            ['kline_close_time'], None, None,
                                            None, None, None
                                        ]
                                        self.main_data_hour.append(new_row)
                                        del self.main_data_hour[0]
                                        self.algorithm_rsi()
                            time.sleep(0.1)
                        except KeyError:
                            print(f"Exception :\n {stream_buffer}")
                            time.sleep(0.5)
                    else:
                        time.sleep(0.01)
                except Exception as exc:
                    self.status = True
                    traceback.print_exc()
                    time.sleep(30)
コード例 #29
0
ファイル: ema1.py プロジェクト: Slavian2015/Defi
    def run(self):
        bot_sendtext("NEW BOT START")
        binance_websocket_api_manager = BinanceWebSocketApiManager(
            exchange="binance.com", output_default="UnicornFy")
        binance_websocket_api_manager.create_stream(['kline_1m'],
                                                    [f'{self.symbol}usdt'],
                                                    stream_label="UnicornFy",
                                                    output="UnicornFy")
        binance_websocket_api_manager.create_stream(['depth5'],
                                                    [f'{self.symbol}upusdt'],
                                                    stream_label="UnicornFy",
                                                    output="UnicornFy")
        binance_websocket_api_manager.create_stream(['depth5'],
                                                    [f'{self.symbol}downusdt'],
                                                    stream_label="UnicornFy",
                                                    output="UnicornFy")
        while True:
            if self.status:
                self.status = False
                binance_websocket_api_manager.create_stream(
                    ['kline_1m'], [f'{self.symbol}usdt'],
                    stream_label="UnicornFy",
                    output="UnicornFy")
                binance_websocket_api_manager.create_stream(
                    ['depth5'], [f'{self.symbol}upusdt'],
                    stream_label="UnicornFy",
                    output="UnicornFy")
                binance_websocket_api_manager.create_stream(
                    ['depth5'], [f'{self.symbol}downusdt'],
                    stream_label="UnicornFy",
                    output="UnicornFy")
                print(
                    f"PARSER RESTART at {datetime.now().strftime('%H:%M:%S')}")

            else:
                try:
                    if binance_websocket_api_manager.is_manager_stopping():
                        exit(0)
                        self.status = True
                    stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer(
                    )
                    if stream_buffer:
                        try:
                            if stream_buffer['event_type'] == "depth":
                                if stream_buffer[
                                        'symbol'] == f"{self.symbol.upper()}UPUSDT":
                                    self.my_ask_up = float(
                                        stream_buffer['asks'][0][0])
                                    self.my_bid_up = float(
                                        stream_buffer['bids'][0][0])

                                    # print(f"{self.symbol.upper()}UPUSDT", self.my_bid_up)

                                    if self.order == 1:
                                        if self.my_bid_up <= self.my_sl:
                                            self.close_order(self.order)
                                        elif self.my_bid_up >= self.my_tp:
                                            self.close_order(self.order)
                                else:
                                    self.my_ask_down = float(
                                        stream_buffer['asks'][0][0])
                                    self.my_bid_down = float(
                                        stream_buffer['bids'][0][0])
                                    # print(f"{self.symbol.upper()}DOWNUSDT", self.my_bid_up)
                                    if self.order == 2:
                                        if self.my_bid_down <= self.my_sl:
                                            self.close_order(self.order)
                                        elif self.my_bid_down >= self.my_tp:
                                            self.close_order(self.order)

                            if stream_buffer['event_type'] == "kline":
                                if stream_buffer['event_time'] >= stream_buffer[
                                        'kline']['kline_close_time']:
                                    new_row = [
                                        stream_buffer['kline']
                                        ['kline_start_time'],
                                        stream_buffer['kline']['open_price'],
                                        stream_buffer['kline']['high_price'],
                                        stream_buffer['kline']['low_price'],
                                        stream_buffer['kline']['close_price'],
                                        stream_buffer['kline']['base_volume'],
                                        stream_buffer['kline']
                                        ['kline_close_time'], None, None, None,
                                        None, None
                                    ]

                                    self.main_data.append(new_row)
                                    del self.main_data[0]
                                    self.algorithm()

                            time.sleep(0.5)
                        except KeyError:
                            print(f"Exception :\n {stream_buffer}")
                            time.sleep(0.5)
                    else:
                        time.sleep(0.01)

                except Exception as exc:
                    self.status = True
                    traceback.print_exc()
                    time.sleep(30)