Можно ли использовать Selenium для перебора значений параметров и сравнения полученных результатов?

Хотел бы уточнить некоторые моменты. Я не разбираюсь в Python, но прежде чем начать изучение, хочу понять, возможно ли реализовать задуманное. Я использую TradingView и разработал стратегию на Pine Script, в которой применяются 6 параметров, позволяющих проводить различные комбинации, что приводит к разным результатам прибыли (например, "AP" принимает значения от 1 до 10, а "VB" — от 0.01 до 0.30). Ручное переключение параметров крайне трудоемко, и я рискую упустить наиболее выгодные комбинации.

Я хотел бы узнать, можно ли с помощью Selenium создать скрипт, который будет выполнять следующие действия:
1. Входить на TradingView и переключать параметры стратегии вместо меня, проверяя все возможные варианты.
2. Сохранять значения прибыли после каждого переключения в массив (прибыли отображаются на сайте после изменения параметров).
3. По завершении перебора всех вариантов, сравнивать значения прибыли в массиве и находить максимальное значение.
4. Возвращать те параметры, при которых достигнут лучший результат.

Если у вас есть более оптимальные методы решения этой задачи, мне было бы интересно узнать о них. Я был бы признателен за подробное объяснение или пример того, как можно попробовать реализовать задуманное.
  • 26 октября 2024 г. 13:22
Ответы на вопрос 2
Да, использование Selenium для автоматизации тестирования и перебора значений параметров на TradingView вполне возможно. Selenium позволяет управлять браузером, имитируя действия пользователя, что делает его отличным инструментом для решения подобной задачи. Давайте рассмотрим, как можно реализовать ваш подход по шагам.

### Шаги по реализации

1. **Установка Selenium**: Прежде всего, вам нужно установить библиотеку Selenium. Если у вас установлен Python, выполните в терминале:
   ```bash
   pip install selenium
   ```

2. **Настройка WebDriver**: Вам нужно скачать WebDriver для используемого браузера (например, ChromeDriver для Google Chrome) и указать путь к нему в скрипте.

3. **Автоматизация входа**: Вам нужно написать код, который будет выполнять вход на TradingView.

4. **Параметры стратегии**: Напишите цикл, который будет перебирать все комбинации ваших параметров.

5. **Сохранение и анализ результата**: Записывайте результаты в список и находите максимальное значение.

### Пример кода

Вот примерный код, иллюстрирующий указанные шаги:

```python
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# Настройка WebDriver
driver = webdriver.Chrome(executable_path='path_to_your_chromedriver')

# Функция для входа на TradingView
def login_to_tradingview(username, password):
    driver.get('https://www.tradingview.com/accounts/signin/')
    time.sleep(3)  # Ждать, пока страница загрузится
    
    # Вводим логин и пароль (проверьте селекторы, возможно они изменились)
    driver.find_element(By.NAME, 'username').send_keys(username)
    driver.find_element(By.NAME, 'password').send_keys(password)
    driver.find_element(By.XPATH, '//button[text()="Войти"]').click()
    
    time.sleep(5)  # Ждать, пока произойдет вход

# Функция для обновления параметров стратегии
def update_strategy_parameters(ap, vb):
    # Тут вы должны реализовать логику обновления ваших параметров 
    # Необходимы правильные селекторы, чтобы найти элементы на странице
    driver.find_element(By.NAME, 'AP_parameter').clear()
    driver.find_element(By.NAME, 'AP_parameter').send_keys(str(ap))
    
    driver.find_element(By.NAME, 'VB_parameter').clear()
    driver.find_element(By.NAME, 'VB_parameter').send_keys(str(vb))

    # Применяем параметры
    driver.find_element(By.XPATH, '//button[text()="Применить"]').click()
    time.sleep(2)  # Ждать, пока стратегия применится

# Функция получения прибыли
def get_profit():
    # Получить значение прибыли
    profit_element = driver.find_element(By.XPATH, '//path_to_profit_value')
    return float(profit_element.text)

# Основная логика перебора значений параметров
def find_best_parameters():
    best_profit = float('-inf')
    best_params = (None, None)
    
    for ap in range(1, 11):  # AP от 1 до 10
        for vb in [x / 100 for x in range(1, 31)]:  # VB от 0.01 до 0.30
            update_strategy_parameters(ap, vb)
            profit = get_profit()
            print(f'AP: {ap}, VB: {vb}, Profit: {profit}')
            
            if profit > best_profit:
                best_profit = profit
                best_params = (ap, vb)

    return best_params, best_profit

# Основной код
login_to_tradingview('your_username', 'your_password')
best_params, best_profit = find_best_parameters()
print(f'Лучшие параметры: AP = {best_params[0]}, VB = {best_params[1]}, Прибыль: {best_profit}')

driver.quit()
```

### Примечания

- **Селекторы**: Вам необходимо будет адаптировать селекторы (например, `By.NAME`, `By.XPATH`) под HTML-код вашей страницы TradingView. Используйте инструменты разработчика в браузере, чтобы найти нужные элементы.
- **Ожидания**: В реальных приложениях лучше использовать WebDriverWait для ожидания загрузки элементов, а не `time.sleep()`.
- **Риск блокировки**: Учтите, что автоматизация может привести к блокировке вашего аккаунта, если TradingView обнаружит необычные действия. Используйте этот подход с осторожностью и в разумных пределах.

### Альтернативы

Другой подход может заключаться в использовании API для получения данных о производительности стратегии.
Возможно ли с помощью selenium создать такой скрипт, что:

Возможно, что может "увидеть" живой человек в браузере, то может и selenium. Вопрос лишь в написание кода и преодоление защиты со стороны сайта, если таковая имеется.

P.S. если контент сайта формируется не динамическим путем, то проще использовать библиотеки по типу requests.
Похожие вопросы