Обсуждение статьи "Быстрый тестер торговых стратегий на Python с использованием Numba" - страница 6

 
bestvishes #:
Привет maxim, я думаю ты самый умный человек на форуме, надеюсь увидеть подробное описание во второй статье. благодарный

Спасибо за лестный отзыв, я постараюсь написать что-нибудь интересное для вас.

 
def get_prices() -> pd.DataFrame:
    try:
        # Загружаем CSV-файл с разделителем запятая
        p = pd.read_csv(f"files/{hyper_params['symbol']}.csv")

        # Проверяем наличие необходимых столбцов
        required_columns = ['time', 'close']
        for col in required_columns:
            if col not in p.columns:
                raise KeyError(f"Столбец '{col}' отсутствует в файле.")

        # Преобразуем столбец 'time' в формат datetime
        p['time'] = pd.to_datetime(p['time'], errors='coerce')

        # Устанавливаем индекс времени
        p.set_index('time', inplace=True)

        # Оставляем только столбец 'close' и убираем строки с некорректными данными
        pFixed = p[['close']].dropna()

        return pFixed
    except Exception as e:
        print(f"Ошибка при обработке данных: {e}")
        return pd.DataFrame()  # Возвращаем пустой DataFrame в случае ошибки
Файлы:
export_mt5.py  2 kb
 

Появилось время и почти доделал обучение моделей + оптимизацию гиперпараметров в одном флаконе.

Можно будет обучать сразу множество моделей, затем их оптимизировать, затем выбирать лучшую модель с лучшими параметрами оптимизации, например:

models = []
for i in range(20):
    print(f'Iteration: {i}')
    models.append(learnANDoptimize())

models.sort(key=lambda x: x[0][0]['score'])


index = -1
test_model(models[index][0][0]['dataframe'],
            [models[index][-1]],
            hyper_params['stop_loss'],
            hyper_params['take_profit'],
            hyper_params['forward'],
            hyper_params['backward'],
            hyper_params['markup'],
            True)

И выводить результат.

Затем модель можно будет экспортировать в терминал с уже оптимальными гиперпараметрами. Либо использовать оптимизатор самого терминала.

Позже начну статью, не забыл.