Binanceの注文連打bot

連打できるプログラムを作りました。


連打できます。


import sys

import PySimpleGUI as sg
import pybotters
import asyncio
from pprint import pprint

apis = {'binance':['','']}

async def main():
    sg.theme('DarkAmber')

    layout = [
        [sg.Text('通貨'), sg.InputText()],
        [sg.Text('数量'), sg.InputText()],
        [sg.Button('long'), sg.Button('short')],
        [sg.Button('close')]
    ]

    main_window = sg.Window('連打できるプログラム', layout)

    async with pybotters.Client(apis=apis, base_url="https://fapi.binance.com") as client:

        while True:

            event, values = main_window.read()
            try:
                if len(values) == 2:
                    symbol = values[0]
                    pos_size = values[1]
                else:
                    continue
            except:
                continue
            
            if event == 'long':
                params_buy = {
                    'symbol': symbol,
                    'side': 'BUY',
                    'type': 'MARKET',
                    'quantity': pos_size,
                    #'timeInForce': 'GTX',
                }
                res = await client.post(f'/fapi/v1/order', data=params_buy)
                data = await res.json()

                pprint(data)


            elif event == 'short':


                params_sell = {
                    'symbol': symbol,
                    'side': 'SELL',
                    'type': 'MARKET',
                    'quantity': pos_size,
                    #'timeInForce': 'GTX',
                }
                res = await client.post(f'/fapi/v1/order', data=params_sell)
                data = await res.json()
                
                pprint(data)
            
            elif event == 'close':
            
                check_pos_params = {'symbol': symbol}
                res = await client.get('/fapi/v2/positionRisk',params=check_pos_params)
                data = await res.json()
                #pprint(data)
                if float(data[0]['positionAmt'])>0:
                    params_close = {
                        'symbol': symbol,
                        'side': 'SELL',
                        'type': 'MARKET',
                        'quantity': float(data[0]['positionAmt']),
                    }
                    res = await client.post(f'/fapi/v1/order', data=params_close)
                    data = await res.json()
                    pprint(data)

                elif float(data[0]['positionAmt'])<0:
                    params_close = {
                        'symbol': symbol,
                        'side': 'BUY',
                        'type': 'MARKET',
                        'quantity': -1*float(data[0]['positionAmt']),
                    }
                    res = await client.post(f'/fapi/v1/order', data=params_close)
                    data = await res.json()
                    pprint(data)


if __name__ == '__main__':


    try:
       asyncio.run(main())

    except KeyboardInterrupt:
       pass

この記事が気に入ったらサポートをしてみませんか?