Ape Mithrandir on Nostr: Could you grab the trade statistics CSV for HavenoRetoSwap? I'd love to see similar ...
Could you grab the trade statistics CSV for HavenoRetoSwap? I'd love to see similar stats.
quoting nevent1q…gvdu```python
import pandas as pd
import numpy as np
import datetime as dt
import calendar as cal
from dateutil import relativedelta
import argparse
import warnings
warnings.filterwarnings('ignore')
def process_market(market):
if market.endswith('BTC'):
return market.split('/')[0]
elif market.startswith('BTC'):
return market.split('/')[1]
return market
def bisqstats(csv_str, f, t=0, pivot='Market', mkttype=None):
try:
df = pd.read_csv(csv_str)
start = dt.datetime.now() - relativedelta.relativedelta(months=f)
start_date = start.date().strftime("%Y-%m-%d")
start = cal.timegm(start.timetuple())*1000
end = dt.datetime.now() - relativedelta.relativedelta(months=t)
end_date = end.date().strftime("%Y-%m-%d")
end = cal.timegm(end.timetuple())*1000
df_filtered = df[(df["Epoch time in ms"] >= start) & (df["Epoch time in ms"] <= end)]
df_filtered['Type'] = df_filtered['Market'].apply(lambda x: 'fiat' if x.startswith('BTC') else ('altcoin' if x.endswith('BTC') else None))
df_filtered['Market'] = df_filtered['Market'].apply(process_market)
if mkttype is not None:
df_filtered = df_filtered[df_filtered['Type']==mkttype]
pv = df_filtered.pivot_table(index=[pivot], values=["Amount in BTC"], aggfunc=('sum', 'count'))
if pv.empty:
raise RuntimeError(f'Your dataframe has been filtered to empty. pivot={pivot}, mkttype={mkttype}')
else:
pv = pv.sort_values(by=[('Amount in BTC', 'sum')], ascending=False)
return pv, start_date, end_date
except Exception as e:
print('There was an error in your input, please try again :{0}'.format(e))
return None, None, None
def main():
#Create the parser
parser = argparse.ArgumentParser(description='Process some Inputs.')
# Add arguments
parser.add_argument('--f', type=int, required=True, help='Number of months to look back')
parser.add_argument('--t', type=int, help='Use this to look at historical periods')
parser.add_argument('--pivot', type=str, help='Set this to Payment method/Market/Type print out stats by Different Pivots')
parser.add_argument('--mkttype', type=str, help='Set this to fiat/altcoin to print out stats by market type')
# Parse the arguments
try:
args = parser.parse_args()
except SystemExit as e:
print("Error: Missing required arguments.")
parser.print_help()
return
t = 0
pivot = 'Market'
mkttype = None
if args.t is not None:
t = args.t
if args.pivot is not None:
pivot = args.pivot
if args.mkttype is not None:
mkttype = args.mkttype
pv, start_date, end_date = bisqstats("trade-statistics-all-markets.csv", args.f, t, pivot, mkttype)
print('\n==========================================================')
print(f"Bisq Trading Stats from {start_date} to {end_date}:")
print('==========================================================')
print(pv)
print('\n')
if __name__ == '__main__':
main()
```