Skip to content

Commit

Permalink
add csv init function
Browse files Browse the repository at this point in the history
  • Loading branch information
marianotir committed May 28, 2023
1 parent 5e626c1 commit a5d4eaa
Showing 1 changed file with 42 additions and 18 deletions.
60 changes: 42 additions & 18 deletions algo_rsi.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,37 +418,32 @@ def init_data_tracking():
def save_to_csv(data):
# Save orders to CSV
if data['orders']:
with open('orders.csv', 'w', newline='') as f:
with open('orders.csv', 'a', newline='') as f: # 'a' is used for appending
writer = csv.DictWriter(f, fieldnames=data['orders'][0].keys())
writer.writeheader()
writer.writerows(data['orders'])

# Save open trades to CSV
if data['open_trades']:
with open('open_trades.csv', 'w', newline='') as f:
with open('open_trades.csv', 'a', newline='') as f: # 'a' is used for appending
writer = csv.DictWriter(f, fieldnames=data['open_trades'][0].keys())
writer.writeheader()
writer.writerows(data['open_trades'])

# Save closed trades to CSV
if data['closed_trades']:
with open('closed_trades.csv', 'w', newline='') as f:
with open('closed_trades.csv', 'a', newline='') as f: # 'a' is used for appending
writer = csv.DictWriter(f, fieldnames=data['closed_trades'][0].keys())
writer.writeheader()
writer.writerows(data['closed_trades'])

# Save balance to CSV
if data['balance']:
with open('balance.csv', 'w', newline='') as f:
with open('balance.csv', 'a', newline='') as f: # 'a' is used for appending
writer = csv.DictWriter(f, fieldnames=data['balance'][0].keys())
writer.writeheader()
writer.writerows(data['balance'])

# Save performance metrics to CSV
if data['performance_metrics']:
with open('performance_metrics.csv', 'w', newline='') as f:
with open('performance_metrics.csv', 'a', newline='') as f: # 'a' is used for appending
writer = csv.DictWriter(f, fieldnames=data['performance_metrics'].keys())
writer.writeheader()
writer.writerow(data['performance_metrics'])

return print('Data saved to CSV')
Expand Down Expand Up @@ -483,8 +478,8 @@ def calculate_metrics():
returns.append(profit_loss / trade_value)

# Calculate metrics
profit_factor = total_profit / total_loss if total_loss != 0 else float('inf')
sharpe_ratio = np.mean(returns) / np.std(returns) if np.std(returns) != 0 else float('inf')
profit_factor = round(total_profit / total_loss if total_loss != 0 else float('inf'),2)
sharpe_ratio = round(np.mean(returns) / np.std(returns) if np.std(returns) != 0 else float('inf'),2)
if len(returns) > 1:
max_drawdown = max([j-i for i, j in zip(returns[:-1], returns[1:])])
else:
Expand Down Expand Up @@ -638,9 +633,8 @@ def balance_init():
})

# Save balance to CSV
with open('balance.csv', 'a', newline='') as f:
with open('balance.csv', 'a', newline='') as f: # 'a' is used for appending
writer = csv.DictWriter(f, fieldnames=data['balance'][0].keys())
writer.writeheader()
writer.writerow(data['balance'][0])

return print('Balance Initialized')
Expand All @@ -654,6 +648,36 @@ def start_update_balance_scheduler(update_frequency):
return print('Balance Updated')


def init_csv_files():

# Initialize balance CSV
with open('balance.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['timestamp', 'balance'])
writer.writeheader()

# Initialize open trades CSV
with open('open_trades.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['trade_id', 'symbol', 'entry_timestamp', 'entry_price', 'quantity', 'candle_counter'])
writer.writeheader()

# Initialize closed trades CSV
with open('closed_trades.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['trade_id', 'symbol', 'entry_timestamp', 'entry_price', 'exit_timestamp', 'exit_price', 'quantity'])
writer.writeheader()

# Initialize orders CSV
with open('orders.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['timestamp', 'type', 'symbol', 'quantity', 'price', 'status', 'order_id'])
writer.writeheader()

# Initialize performance metrics CSV
with open('performance_metrics.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['winning_trades', 'losing_trades', 'profit_factor', 'sharpe_ratio', 'max_drawdown'])
writer.writeheader()

return print('CSV Files Initialized')


# ---------------------
# Webshoket functions
# ---------------------
Expand Down Expand Up @@ -821,24 +845,24 @@ def on_open(ws):
print('***********Initializing data dictionary')
data = init_data_tracking()

# Initialize files
print('***********Initializing files')
init_csv_files()

# Init balance
print('***********Initializing balance')
logging.info('Initializing balance')
balance = check_balance('USDT')
print('***********Balance: ', balance)
balance_init()


# Init binance client
print('***********Initializing binance client')
logging.info('Initializing binance client')

client = Client(api_key, api_secret)

# Init telegram client
print('***********Initializing telegram client')
logging.info('Initializing telegram client')

client_telegram = connect_tg()
client_telegram.connect()

Expand Down

0 comments on commit a5d4eaa

Please sign in to comment.