Пример #1
0
def fast_refresh():

    df = pd.DataFrame()
    dddd = pd.DataFrame()
    dfs = pd.DataFrame()
    final = pd.DataFrame()
    dfs2 = pd.DataFrame()
    result = pd.DataFrame()
    filter = pd.DataFrame()
    alfa_bd = pd.DataFrame()
    alfa_bd2 = pd.DataFrame()
    hot_bd2 = pd.DataFrame()
    live_bd2 = pd.DataFrame()
    live_bd = pd.DataFrame()
    hot_bd = pd.DataFrame()

    alfa_bd = pd.read_csv(main_path_data + "\\alfa_bd_PU.csv", thousands=',')
    alfa_bd2 = pd.read_csv(main_path_data + "\\alfa_bd_PB.csv", thousands=',')

    hot_bd2 = pd.read_csv(main_path_data + "\\hot_bd_PB.csv", thousands=',')
    live_bd2 = pd.read_csv(main_path_data + "\\live_bd_PB.csv", thousands=',')
    try:
        with open(main_path_data + "\\live_bd_PU.csv", 'r') as f:
            live_bd = pd.read_csv(f, thousands=',')
            f.close()
    except Exception as e:
        with open(main_path_data + "\\live_bd_PU.csv", 'r') as f:
            live_bd = pd.read_csv(f, thousands=',')
            f.close()

    try:
        with open(main_path_data + "\\hot_bd_PU.csv", 'r') as f:
            hot_bd = pd.read_csv(f, thousands=',')
            f.close()
    except Exception as e:
        print("EXCEPT to open HOT")
        time.sleep(0.1)
        with open(main_path_data + "\\hot_bd_PU.csv", 'r') as f:
            hot_bd = pd.read_csv(f, thousands=',')
            f.close()
            pass

    new_regims_f = open(second_path_data + "\\new_regims.json", 'r')
    new_regims = json.load(new_regims_f)
    new_regims_f.close()

    bal = pd.read_csv(second_path_data + "\\balance.csv")
    balances2 = bal.to_json(orient='records')
    balances = json.loads(balances2)

    new_com = open(second_path_data + "\\commis.json", 'r')
    com = json.load(new_com)
    new_com.close()

    frames = [alfa_bd, hot_bd, live_bd, alfa_bd2, hot_bd2, live_bd2]
    df = pd.concat(frames, ignore_index=True)

    filter_a = df[df['birga'] == 'alfa'].index
    filter_l = df[df['birga'] == 'live'].index
    filter_h = df[df['birga'] == 'hot'].index

    a = com['main']["alfa"]
    l = com['main']["live"]
    h = com['main']["hot"]

    df.loc[(filter_a), 'Com'] = float(a)
    df.loc[(filter_h), 'Com'] = float(h)
    df.loc[(filter_l), 'Com'] = float(l)

    dfs2 = pd.merge(df,
                    df,
                    left_on=df['valout'],
                    right_on=df['valin'],
                    how='outer')
    dfs2['rates_x'] = dfs2['rates_x'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')
    dfs2['rates_y'] = dfs2['rates_y'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')
    dfs2['volume_x'] = dfs2['volume_x'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')
    dfs2['volume_y'] = dfs2['volume_y'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')
    dfs2.drop(['key_0'], axis=1, inplace=True)
    dfs2['rates_y'] = dfs2['rates_y'].map('{:,.10f}'.format)
    dfs2['rates_x'] = dfs2['rates_x'].map('{:,.10f}'.format)

    ###############       Main dataframe with all data      ####################
    result = dfs2[(dfs2['valin_x'] == dfs2['valout_y'])]
    usdt = dfs2[(dfs2['valin_x'] == 'USD') & (dfs2['valout_y'] == 'USDT')]
    usd = dfs2[(dfs2['valin_x'] == 'USDT') & (dfs2['valout_y'] == 'USD')]
    final = result.append([usdt, usd])
    final.reset_index(inplace=True, drop=True)
    final.reset_index(level=0, inplace=True)
    filter = final[(final['birga_x'] == final['birga_y'])
                   & (final['rates_x'] < final['rates_y']) &
                   (final['valin_x'] == final['valout_y'])]

    final = final.drop(filter['index'], axis=0)

    final['rates_x'] = final['rates_x'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')
    final['rates_y'] = final['rates_y'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')
    final['volume_x'] = final['volume_x'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')
    final['volume_y'] = final['volume_y'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')
    final['Com_x'] = final['Com_x'].replace(',', '',
                                            regex=True).apply(pd.to_numeric,
                                                              errors='coerce')
    final['Com_y'] = final['Com_y'].replace(',', '',
                                            regex=True).apply(pd.to_numeric,
                                                              errors='coerce')

    for i in balances:
        balanc_a = final[(final['birga_x'] == 'alfa')
                         & (final['valin_x'] == i['Valuta'])].index
        balanc_h = final[(final['birga_x'] == 'hot')
                         & (final['valin_x'] == i['Valuta'])].index
        balanc_l = final[(final['birga_x'] == 'live')
                         & (final['valin_x'] == i['Valuta'])].index

        a_b = i['alfa']
        h_b = i['hot']
        l_b = i['live']

        final.loc[(balanc_a), 'Bal1'] = a_b / final.loc[(balanc_a), 'rates_x']
        final.loc[(balanc_h), 'Bal1'] = h_b / final.loc[
            (balanc_h), 'rates_x'] - (h_b / final.loc[(balanc_h), 'rates_x'] *
                                      final.loc[(balanc_h), 'Com_x'] / 100)
        final.loc[(balanc_l), 'Bal1'] = l_b / final.loc[
            (balanc_l), 'rates_x'] - (l_b / final.loc[(balanc_l), 'rates_x'] *
                                      final.loc[(balanc_l), 'Com_x'] / 100)

        balanc_a2 = final[(final['birga_y'] == 'alfa')
                          & (final['valin_y'] == i['Valuta'])].index
        balanc_h2 = final[(final['birga_y'] == 'hot')
                          & (final['valin_y'] == i['Valuta'])].index
        balanc_l2 = final[(final['birga_y'] == 'live')
                          & (final['valin_y'] == i['Valuta'])].index

        final.loc[(balanc_a2), 'Bal2'] = a_b
        final.loc[(balanc_h2), 'Bal2'] = h_b
        final.loc[(balanc_l2), 'Bal2'] = l_b

    reg2 = final
    final.loc[:, "volume"] = final[['volume_x', 'volume_y', 'Bal2',
                                    'Bal1']].min(axis=1)

    final['volume'] = final['volume'].map('{:,.10f}'.format)
    final['volume'] = final['volume'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')

    final.loc[:, 'Vol1'] = final['rates_x'] * final['volume'] + (
        final['rates_x'] * final['volume'] * final['Com_x'] / 100)
    final.loc[:, 'Vol2'] = final['volume']
    final.loc[:, 'Vol3'] = final['volume']
    final.loc[:, 'Vol4'] = final['rates_y'] * final['volume'] - (
        final['rates_y'] * final['volume'] * final['Com_y'] / 100)

    fil_a = final[final['birga_x'] == 'alfa'].index
    final.loc[(fil_a), 'Vol3'] = final.loc[(fil_a), 'Vol2'] - (final.loc[
        (fil_a), 'Vol2'] * final.loc[(fil_a), 'Com_x'] / 100)
    final.loc[(fil_a),
              'Vol1'] = final.loc[(fil_a), 'rates_x'] * final.loc[(fil_a),
                                                                  'volume']
    final.loc[(fil_a), 'Vol4'] = final.loc[(fil_a), 'rates_y'] * final.loc[
        (fil_a), 'Vol3'] - (final.loc[(fil_a), 'rates_y'] *
                            final.loc[(fil_a), 'Vol3'] * final['Com_y'] / 100)

    final['Vol1'] = final['Vol1'].map('{:,.10f}'.format)
    final['Vol2'] = final['Vol2'].map('{:,.10f}'.format)
    final['Vol3'] = final['Vol3'].map('{:,.10f}'.format)
    final['Vol4'] = final['Vol4'].map('{:,.10f}'.format)

    final['Vol1'] = final['Vol1'].replace(',', '',
                                          regex=True).apply(pd.to_numeric,
                                                            errors='coerce')
    final['Vol2'] = final['Vol2'].replace(',', '',
                                          regex=True).apply(pd.to_numeric,
                                                            errors='coerce')
    final['Vol3'] = final['Vol3'].replace(',', '',
                                          regex=True).apply(pd.to_numeric,
                                                            errors='coerce')
    final['Vol4'] = final['Vol4'].replace(',', '',
                                          regex=True).apply(pd.to_numeric,
                                                            errors='coerce')

    final.loc[:, 'profit'] = final['Vol4'] - final['Vol1']
    final.loc[:, 'percent'] = final['profit'] / final['Vol1'] * 100

    final['profit'] = final['profit'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')
    final['percent'] = final['percent'].replace(',', '', regex=True).apply(
        pd.to_numeric, errors='coerce')
    dddd = final.dropna()
    final = dddd
    final = final[final['direction_y'] != 'buy']

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

    reg2.loc[:, "volume"] = reg2[['volume_y', 'Bal2', 'Bal1']].min(axis=1)

    reg2.loc[:, 'Vol1'] = reg2['rates_x'] * reg2['volume'] + (
        reg2['rates_x'] * reg2['volume'] * reg2['Com_x'] / 100)
    reg2.loc[:, 'Vol2'] = reg2['volume']
    reg2.loc[:, 'Vol3'] = reg2['volume']
    reg2.loc[:, 'Vol4'] = reg2['rates_y'] * reg2['volume'] - (
        reg2['rates_y'] * reg2['volume'] * reg2['Com_y'] / 100)

    fil_a = reg2[reg2['birga_x'] == 'alfa'].index
    reg2.loc[(fil_a), 'Vol3'] = reg2.loc[(fil_a), 'Vol2'] - (reg2.loc[
        (fil_a), 'Vol2'] * reg2.loc[(fil_a), 'Com_x'] / 100)
    reg2.loc[(fil_a),
             'Vol1'] = reg2.loc[(fil_a), 'rates_x'] * reg2.loc[(fil_a),
                                                               'volume']
    reg2.loc[(fil_a), 'Vol4'] = reg2.loc[(fil_a), 'rates_y'] * reg2.loc[
        (fil_a), 'Vol3'] - (reg2.loc[(fil_a), 'rates_y'] *
                            reg2.loc[(fil_a), 'Vol3'] * reg2['Com_y'] / 100)

    reg2.loc[:, 'profit'] = reg2['Vol4'] - reg2['Vol1']
    reg2.loc[:, 'percent'] = reg2['profit'] / reg2['Vol1'] * 100

    reg2['profit'] = reg2['profit'].apply(pd.to_numeric, errors='coerce')
    reg2['percent'] = reg2['percent'].apply(pd.to_numeric, errors='coerce')

    reg2 = reg2[reg2['direction_y'] != 'buy']
    reg2.to_csv(main_path_data + "\\vilki_all.csv", header=True, index=False)

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

    def regim_filter():
        fids = pd.DataFrame()
        for k, v in new_regims.items():
            dft = final[(final["birga_x"] == v["birga1"])
                        & (final["birga_y"] == v["birga2"]) &
                        (final["valin_x"] == v["val1"]) &
                        (final["valout_x"] == v["val2"]) &
                        (final["valout_y"] == v["val3"]) &
                        (final["percent"] > float(v["profit"])) &
                        (final["Vol2"] > float(v["order"]))]
            per = (float(v["per"]) / 100)
            dft.loc[:, 'Vol1'] = dft['Vol1'] * per
            dft.loc[:, 'Vol2'] = dft['Vol2'] * per
            dft.loc[:, 'Vol3'] = dft['Vol3'] * per
            dft.loc[:, 'Vol4'] = dft['Vol4'] * per

            dft = dft[(dft["Vol3"] > float(v["order"]))]
            now = dt.datetime.now()
            timerr = now.strftime("%H:%M:%S")
            dft['avtomat'] = v["avtomat"]
            dft['regim'] = k
            dft['timed'] = timerr
            dft = dft.sort_values(by=['Vol2'], ascending=False)
            dft = dft.head(1)
            fids = pd.concat([dft, fids], ignore_index=True, join='outer')
        return fids

    dfs = regim_filter()
    dfs = dfs.reindex(columns=[
        'regim', 'timed', 'birga_x', 'birga_y', 'valin_x', 'valout_x',
        'valout_y', 'rates_x', 'rates_y', 'Vol1', 'Vol2', 'Vol3', 'Vol4',
        'percent', 'avtomat'
    ])
    dfs.columns = [
        'regim', 'timed', 'b1', 'b2', 'val1', 'val2', 'val3', 'kurs1', 'kurs2',
        'Vol1', 'Vol2', 'Vol3', 'Vol4', 'profit', 'Go'
    ]

    dfs['profit'] = dfs['profit'].map('{:,.2f}'.format)
    dfs.index = range(len(dfs))
    dfs = dfs.sort_values(by=['profit'], ascending=False)
    if dfs.shape[0] > 0:
        dfs.to_csv(second_path_data + "\\vilki.csv", header=True, index=False)
        filter1 = dfs[(dfs['Go'] == 'on')]
        if filter1.shape[0] > 0:
            NewOrders.order(filter1.iloc[0]['regim'], filter1.iloc[0]['b1'],
                            filter1.iloc[0]['b2'], filter1.iloc[0]['Vol1'],
                            filter1.iloc[0]['val1'],
                            str(filter1.iloc[0]['kurs1']),
                            filter1.iloc[0]['Vol2'], filter1.iloc[0]['val2'],
                            filter1.iloc[0]['Vol3'], filter1.iloc[0]['val2'],
                            str(filter1.iloc[0]['kurs2']),
                            filter1.iloc[0]['Vol4'], filter1.iloc[0]['val3'])
            Balance.NewBalance()
            time.sleep(1.1)
    else:
        dw2 = {
            'regim': 'пусто',
            'timed': 'пусто',
            'b1': 'пусто',
            'b2': 'пусто',
            'val1': 'пусто',
            'val2': 'пусто',
            'val3': 'пусто',
            'kurs1': 0,
            'kurs2': 0,
            'Vol1': 0,
            'Vol2': 0,
            'Vol3': 0,
            'Vol4': 0,
            'profit': 0,
            'Go': 'пусто',
        }
        df2 = pd.DataFrame(data=dw2, index=[0])
        df2.drop_duplicates(inplace=True)
        df2.to_csv(second_path_data + "\\vilki.csv", header=True, index=False)
    return
Пример #2
0
def regim():

    all_vilki2 = pd.read_csv(second_path_data + "\\vilki2_all.csv")
    fids = pd.DataFrame()
    for k, v in regims2.items():
        if v['avtomat'] == 'on':
            dft = vilki_all[(vilki_all["birga_x"] == v["birga1"])
                            & (vilki_all["birga_y"] == v["birga2"]) &
                            (vilki_all["valin_x"] == v["val1"]) &
                            (vilki_all["valout_x"] == v["val2"]) &
                            (vilki_all["Vol3"] > 0) &
                            (vilki_all["volume"] > float(v["order"])) &
                            (vilki_all["valout_y"] == v["val3"])]

            if dft.shape[0] > 0:
                dft.loc[:, 'rates_x'] = dft['rates_x'].map('{:,.9f}'.format)
                dft.loc[:, 'rates_y'] = dft['rates_y'].map('{:,.9f}'.format)
                bir = v["birga1"]
                dft = dft[dft['percent'] == dft['percent'].max()]

                dft.loc[:, 'regim'] = k
                dft.loc[:, 'min_A'] = v["order"]

                if v["val1"] == "BTC":
                    if bir == 'hot':
                        dft.loc[:, 'new_kurs'] = hs_PU2.iloc[0]['rates']
                        dft.loc[:, 'min_kurs'] = hot2.iloc[0]['rates']
                    elif bir == 'live':
                        dft.loc[:, 'new_kurs'] = ls_PU2.iloc[0]['rates']
                        dft.loc[:, 'min_kurs'] = live2.iloc[0]['rates']
                    elif bir == 'alfa':
                        dft.loc[:, 'new_kurs'] = as_PU2.iloc[0]['rates']
                        dft.loc[:, 'min_kurs'] = alfa2.iloc[0]['rates']
                else:
                    if bir == 'hot':
                        dft.loc[:, 'new_kurs'] = hs_PU.iloc[0]['rates']
                        dft.loc[:, 'min_kurs'] = hot.iloc[0]['rates']
                    elif bir == 'live':
                        dft.loc[:, 'new_kurs'] = ls_PU.iloc[0]['rates']
                        dft.loc[:, 'min_kurs'] = live.iloc[0]['rates']
                    elif bir == 'alfa':
                        dft.loc[:, 'new_kurs'] = as_PU.iloc[0]['rates']
                        dft.loc[:, 'min_kurs'] = alfa.iloc[0]['rates']

                tickers_all = [
                    'BTC/USD', 'PZM/USD', 'PZM/USDT', 'ETH/USD', 'ETH/USDT',
                    'PZM/BTC', 'ETH/BTC'
                ]

                parametr1 = "{}/{}".format(v["val1"], v["val2"])
                parametr2 = "{}/{}".format(v["val2"], v["val1"])

                for i in tickers_all:
                    if i == parametr1:
                        para = i
                    elif i == parametr2:
                        para = i

                dft.loc[:, 'My_kurs'] = float(dft.iloc[0]['new_kurs']) + (
                    float(rools2[bir]['amount_precision'][para]) *
                    int(v['per']))
                dft.loc[:, '0_kurs'] = float(dft.iloc[0]['rates_y']) - (
                    float(dft.iloc[0]['rates_y']) * float(v["profit"]) / 100)

                dft['Vol3'] = dft['Vol3'].apply(pd.to_numeric, errors='coerce')
                dft['Vol4'] = dft['Vol4'].apply(pd.to_numeric, errors='coerce')
                dft['My_kurs'] = dft['My_kurs'].apply(pd.to_numeric,
                                                      errors='coerce')

                if bir == 'alfa':
                    dft.loc[:, 'Vol2'] = dft.iloc[0]['Vol3'] + (
                        dft.iloc[0]['Vol3'] * dft.iloc[0]['Com_x'] / 100)
                    dft.loc[:, 'Vol1'] = dft.iloc[0]['Vol2'] * float(
                        dft.iloc[0]['My_kurs'])
                else:
                    dft.loc[:, 'Vol2'] = dft.iloc[0]['Vol3']
                    dft.loc[:, 'Vol1'] = dft.iloc[0]['Vol3'] * dft.iloc[0][
                        'My_kurs'] + (dft.iloc[0]['Vol3'] *
                                      dft.iloc[0]['My_kurs'] *
                                      dft.iloc[0]['Com_x'] / 100)

                dft.loc[:, 'prof'] = dft['Vol4'] - dft['Vol1']

                dft.loc[:, 'per'] = dft['prof'] / dft['Vol1'] * 100
                dft.loc[:, 'New_per'] = float(v["profit"])
                dft.drop(['index'], axis=1, inplace=True)

                df_vilki = vilki2[vilki2["regim"] == int(k)]

                if df_vilki.shape[0] > 0:
                    my_order = int(df_vilki.iloc[0]['order_id'])
                    my_dict = finished_orders[df_vilki.iloc[0]['birga_x']]
                    if str(my_order) in my_dict:
                        if my_dict[str(my_order)] >= float(
                                df_vilki.iloc[0]['min_A']):
                            check_vol = float(
                                df_vilki.iloc[0]['Vol2']) - float(
                                    my_dict[str(my_order)])
                            if check_vol <= 0:
                                birga = df_vilki.iloc[0]['birga_y']
                                val3 = df_vilki.iloc[0]['valin_y']
                                val4 = df_vilki.iloc[0]['valout_y']
                                rate2 = str(df_vilki.iloc[0]['rates_y'])
                                val3_vol = df_vilki.iloc[0]['Vol3']

                                if birga == 'alfa':
                                    reponse = Reg2_Orders.alfa(
                                        val3, val4, rate2, val3_vol)
                                elif birga == 'live':
                                    reponse = Reg2_Orders.live(
                                        val3, val4, rate2, val3_vol)
                                elif birga == 'hot':
                                    reponse = Reg2_Orders.hot(
                                        val3, val4, rate2, val3_vol)
                                else:
                                    reponse = "No such BIRGA"

                                now = dt.datetime.now()
                                timer2 = now.strftime("%Y-%m-%d %H:%M:%S")
                                profit = (df_vilki.iloc[0]['Vol4'] -
                                          df_vilki.iloc[0]['Vol1']
                                          ) / df_vilki.iloc[0]['Vol1'] * 100

                                dw2 = {
                                    'regim': df_vilki.iloc[0]['regim'],
                                    'timed': [timer2],
                                    'b1': [df_vilki.iloc[0]['birga_x']],
                                    'b2': [df_vilki.iloc[0]['birga_y']],
                                    'val1': [df_vilki.iloc[0]['valin_x']],
                                    'val2': [df_vilki.iloc[0]['valout_x']],
                                    'val3': [df_vilki.iloc[0]['valout_y']],
                                    'kurs1': [df_vilki.iloc[0]['rates_x']],
                                    'kurs2': [df_vilki.iloc[0]['rates_y']],
                                    'Vol1': [df_vilki.iloc[0]['Vol1']],
                                    'Vol2': [df_vilki.iloc[0]['Vol2']],
                                    'Vol3': [df_vilki.iloc[0]['Vol3']],
                                    'Vol4': [df_vilki.iloc[0]['Vol4']],
                                    'profit': [profit],
                                    'rep1': [reponse],
                                    'rep2': [my_order],
                                }
                                df2 = pd.DataFrame(data=dw2, index=[0])
                                df2.drop_duplicates(inplace=True)
                                all_vilki2 = pd.concat([dft, all_vilki2],
                                                       ignore_index=True,
                                                       join='outer')
                                nl = '\n'
                                bot_sendtext(
                                    f" ЕСТЬ ВИЛКА: {nl} РЕЖИМ : {df_vilki.iloc[0]['regim']} {nl} {df_vilki.iloc[0]['birga_x']} / {df_vilki.iloc[0]['birga_y']} {nl} "
                                    f"{reponse} / {my_order} {nl} {df_vilki.iloc[0]['valin_x']} -> {df_vilki.iloc[0]['valout_x']} -> {df_vilki.iloc[0]['valout_y']} {nl} "
                                    f"PROFIT: {profit} {nl} ")

                                vilki2.drop(
                                    vilki2.index[vilki2["regim"] == int(k)],
                                    inplace=True)

                                ###############  delete from finished json  #############################

                                a_file = open(
                                    main_path_data + "\\finished_orders.json",
                                    "r")
                                json_object = json.load(a_file)
                                a_file.close()

                                del json_object[df_vilki.iloc[0]['birga_x']][
                                    str(my_order)]

                                a_file = open(
                                    main_path_data + "\\finished_orders.json",
                                    "w")
                                json.dump(json_object, a_file)
                                a_file.close()
                                Balance.NewBalance()
                            elif check_vol > 0 and check_vol < float(
                                    df_vilki.iloc[0]['min_A']):
                                birga = df_vilki.iloc[0]['birga_x']
                                val3 = df_vilki.iloc[0]['valin_y']
                                val4 = df_vilki.iloc[0]['valout_y']
                                rate2 = df_vilki.iloc[0]['rates_y']
                                birga2 = df_vilki.iloc[0]['birga_y']
                                nl = '\n'
                                if birga == 'alfa':
                                    val1_vol = (my_dict[str(my_order)] *
                                                df_vilki.iloc[0]['My_kurs'])
                                    val2_vol = my_dict[str(my_order)]
                                    val3_vol = my_dict[str(my_order)] - (
                                        my_dict[str(my_order)] *
                                        df_vilki.iloc[0]['Com_x'] / 100)
                                    val4_vol = (
                                        val3_vol * df_vilki.iloc[0]['rates_y']
                                    ) - (val3_vol * df_vilki.iloc[0]['rates_y']
                                         * df_vilki.iloc[0]['Com_y'] / 100)
                                else:
                                    val1_vol = (
                                        my_dict[str(my_order)] *
                                        df_vilki.iloc[0]['My_kurs']) + (
                                            my_dict[str(my_order)] *
                                            df_vilki.iloc[0]['rates_x'] *
                                            df_vilki.iloc[0]['Com_x'] / 100)
                                    val2_vol = my_dict[str(my_order)]
                                    val3_vol = my_dict[str(my_order)]
                                    val4_vol = (
                                        val3_vol * df_vilki.iloc[0]['rates_y']
                                    ) - (val3_vol * df_vilki.iloc[0]['rates_y']
                                         * df_vilki.iloc[0]['Com_y'] / 100)

                                if birga2 == 'alfa':
                                    reponse = Reg2_Orders.alfa(
                                        val3, val4, str(rate2), val3_vol)
                                elif birga2 == 'live':
                                    reponse = Reg2_Orders.live(
                                        val3, val4, str(rate2), val3_vol)
                                elif birga2 == 'hot':
                                    reponse = Reg2_Orders.hot(
                                        val3, val4, str(rate2), val3_vol)
                                else:
                                    reponse = "No such BIRGA"

                                if birga == 'alfa':
                                    reponse2 = Reg2_Orders.alfa_cancel(
                                        str(my_order))
                                elif birga == 'live':
                                    reponse2 = Reg2_Orders.live_cancel(
                                        df_vilki.iloc[0]['valin_x'],
                                        df_vilki.iloc[0]['valout_x'],
                                        str(my_order))
                                elif birga == 'hot':
                                    reponse2 = Reg2_Orders.hot_cancel(
                                        df_vilki.iloc[0]['valin_x'],
                                        df_vilki.iloc[0]['valout_x'],
                                        str(my_order))
                                else:
                                    reponse2 = "No such BIRGA"
                                now = dt.datetime.now()
                                timer2 = now.strftime("%Y-%m-%d %H:%M:%S")

                                profit = (val4_vol - val1_vol) / val1_vol * 100
                                dw2 = {
                                    'regim': df_vilki.iloc[0]['regim'],
                                    'timed': [timer2],
                                    'b1': [df_vilki.iloc[0]['birga_x']],
                                    'b2': [df_vilki.iloc[0]['birga_y']],
                                    'val1': [df_vilki.iloc[0]['valin_x']],
                                    'val2': [df_vilki.iloc[0]['valout_x']],
                                    'val3': [df_vilki.iloc[0]['valout_y']],
                                    'kurs1': [df_vilki.iloc[0]['My_kurs']],
                                    'kurs2': [df_vilki.iloc[0]['rates_y']],
                                    'Vol1': [val1_vol],
                                    'Vol2': [val2_vol],
                                    'Vol3': [val3_vol],
                                    'Vol4': [val4_vol],
                                    'profit': [profit],
                                    'rep1': [reponse],
                                    'rep2': [my_order],
                                }
                                df2 = pd.DataFrame(data=dw2, index=[0])
                                df2.drop_duplicates(inplace=True)
                                all_vilki2 = pd.concat([dft, all_vilki2],
                                                       ignore_index=True,
                                                       join='outer')

                                bot_sendtext(
                                    f" ЕСТЬ ВИЛКА: {nl} РЕЖИМ : {df_vilki.iloc[0]['regim']} {nl} {df_vilki.iloc[0]['birga_x']} / {df_vilki.iloc[0]['birga_y']} {nl} "
                                    f"{reponse} / {my_order} {nl} {df_vilki.iloc[0]['valin_x']} -> {df_vilki.iloc[0]['valout_x']} -> {df_vilki.iloc[0]['valout_y']} {nl} "
                                    f"{df_vilki.iloc[0]['birga_x']} / {df_vilki.iloc[0]['rates_y']} {nl} "
                                    f"{df_vilki.iloc[0]['Vol2']} / {df_vilki.iloc[0]['Vol3']} {nl} "
                                    f"PROFIT: {profit} {nl} ")

                                vilki2.drop(
                                    vilki2.index[vilki2["regim"] == int(k)],
                                    inplace=True)

                                ###############  delete from finished json  #############################

                                a_file32 = open(
                                    main_path_data + "\\finished_orders.json",
                                    "r")
                                json_object = json.load(a_file32)
                                a_file32.close()

                                del json_object[df_vilki.iloc[0]['birga_x']][
                                    str(my_order)]

                                a_file23 = open(
                                    main_path_data + "\\finished_orders.json",
                                    "w")
                                json.dump(json_object, a_file23)
                                a_file23.close()
                                Balance.NewBalance()
                        else:
                            del my_dict[str(my_order)]
                            f33 = open(
                                main_path_data + "\\finished_orders.json", "w")
                            json.dump(my_dict, f33)
                            f33.close()
                    else:
                        print("######  dft  ######", '\n', dft, '\n')
                        adf = dft[
                            (dft['per'] >= dft['New_per']) &
                            # (float(dft['My_kurs']) <= float(df_vilki.iloc[0]['My_kurs'])) &
                            (float(dft['rates_y']) >= float(df_vilki.iloc[0]
                                                            ['rates_y'])) &
                            (dft['Vol2'] >= float(df_vilki.iloc[0]['Vol2']))]

                        # print( "PERC :", dft.iloc[0]['per'], "___###___", "PERC NEW :",dft.iloc[0]['New_per'])
                        # print("My_kurs :", dft.iloc[0]['My_kurs'], "___###___", "My_kurs OLD :", df_vilki.iloc[0]['My_kurs'])
                        # print("rates_y :", dft.iloc[0]['rates_y'], "___###___", "rates_y OLD :", df_vilki.iloc[0]['rates_y'])
                        # print( "Vol2 :", dft.iloc[0]['Vol2'], "___###___", "Vol2 OLD :",df_vilki.iloc[0]['Vol2'])

                        print('\n', "######  adf  ######", '\n', adf, '\n')
                        if adf.shape[0] > 0:
                            pass
                        else:
                            bir = df_vilki.iloc[0]['birga_x']
                            if bir == 'alfa':
                                reponse2 = Reg2_Orders.alfa_cancel(
                                    df_vilki.iloc[0]['order_id'])
                            elif bir == 'live':
                                reponse2 = Reg2_Orders.live_cancel(
                                    df_vilki.iloc[0]['valin_x'],
                                    df_vilki.iloc[0]['valout_x'],
                                    df_vilki.iloc[0]['order_id'])
                            elif bir == 'hot':
                                reponse2 = Reg2_Orders.hot_cancel(
                                    df_vilki.iloc[0]['valin_x'],
                                    df_vilki.iloc[0]['valout_x'],
                                    df_vilki.iloc[0]['order_id'])
                            else:
                                reponse2 = "No such BIRGA"
                            vilki2.drop(
                                vilki2.index[vilki2["regim"] == int(k)],
                                inplace=True)

                            ###############  delete from finished json  #############################

                            a_file = open(
                                main_path_data + "\\finished_orders.json", "r")
                            json_object = json.load(a_file)
                            a_file.close()
                            # print("######",str(int(df_vilki.iloc[0]['order_id'])))

                            if str(int(df_vilki.iloc[0]
                                       ['order_id'])) in json_object[bir]:
                                del json_object[bir][str(
                                    int(df_vilki.iloc[0]['order_id']))]

                            a_file = open(
                                main_path_data + "\\finished_orders.json", "w")
                            json.dump(json_object, a_file)
                            a_file.close()

                else:
                    # print("######  dft  ######", '\n', dft, '\n')
                    dft = dft[(dft["per"] > float(dft.iloc[0]["New_per"]))
                              & (dft["Vol2"] > float(dft.iloc[0]["min_A"])) &
                              (dft['My_kurs'] < float(
                                  dft.iloc[0]["min_kurs"]))]

                    # print(dft)
                    if dft.shape[0] > 0:
                        val1 = dft.iloc[0]['valin_x']
                        val2 = dft.iloc[0]['valout_x']
                        rate1 = str(dft.iloc[0]['My_kurs'])
                        val2_vol = dft.iloc[0]['Vol2']

                        if bir == 'alfa':
                            reponse = Reg2_Orders.alfa(val1, val2, rate1,
                                                       val2_vol)
                        elif bir == 'live':
                            reponse = Reg2_Orders.live(val1, val2, rate1,
                                                       val2_vol)
                        elif bir == 'hot':
                            reponse = Reg2_Orders.hot(val1, val2, rate1,
                                                      val2_vol)
                        else:
                            reponse = "No such BIRGA"
                            pass
                        dft.loc[:, 'order_id'] = reponse
                        vilki2 = pd.concat([dft, vilki2],
                                           ignore_index=True,
                                           join='outer')

                fids = pd.concat([dft, fids], ignore_index=True, join='outer')

    vilki2.to_csv(second_path_data + "\\vilki2.csv", header=True, index=False)
    all_vilki2.to_csv(second_path_data + "\\vilki2_all.csv",
                      header=True,
                      index=False)