Получи случайную криптовалюту за регистрацию!

в соответствии с рекомендациями: import pandas as pd import | Kripto новости

в соответствии с рекомендациями:


import pandas as pd
import numpy as np
import talib

# Импорт данных
data = pd.read_csv('data.csv')
data = data[['Date', 'Open', 'High', 'Low', 'Close', 'Volume']]
data['Date'] = pd.to_datetime(data['Date'])
data.set_index('Date', inplace=True)

# Вычисление индикатора
sma = talib.SMA(data['Close'], timeperiod=30)
rsi = talib.RSI(data['Close'], timeperiod=14)

# Команды на основе индикатора
positions = []
for i in range(len(data)):
    if rsi[i] > 70:
        positions.append(-1) # продать
    elif rsi[i] < 30:
        positions.append(1) # купить
    else:
        positions.append(0) # ничего не делать
       
# Вычисление цен закрытия для каждой позиции
data['Position'] = positions
data['Previous Position'] = data['Position'].shift(1)
data['Strategy'] = data['Position'] - data['Previous Position']
data['Returns'] = np.log(data['Close'] / data['Close'].shift(1))

# Вычисление прибыли и убытков
winning_trades = len(data[data['Strategy'] == 1])
losing_trades = len(data[data['Strategy'] == -1])
total_trades = winning_trades + losing_trades
win_rate = 0 if total_trades == 0 else winning_trades / total_trades
profitable_trades = data['Returns'][data['Strategy'] == 1].sum()
unprofitable_trades = data['Returns'][data['Strategy'] == -1].sum()

# Вывод результатов
print("Win rate: {:.2f}%".format(win_rate * 100))
print("Profitable trades: {:.2f}%".format(profitable_trades * 100))
print("Unprofitable trades: {:.2f}%".format(unprofitable_trades * 100))
print("Total returns: {:.2f}%".format(data['Returns'].sum() * 100))