[ID CC-CC2022] ИИ для скриптов :)

Да ИИ он что то вроде калькулятора по сравнению со счетом столбиком. Столбиком тоже там и сложить и умножить и поделить можно. Но на каркуляторе это быстрее
Может кому то будет интересно. Сразу скажу, что в написании скриптов я не понимаю ровным счетом ничего, а пользоваться люблю в силу природной лени. Прослышав про китайскую новинку DeepSeek, решил попробовать попросить его написать скрипты для Индизайна. После парочки удачных простых экспериментов решил озадачить чем посложнее. Выдал ему такое задание: "Создать скрипт для Indesign который делает множественный поиск и замену текста с базой данных из внешнего файла." Ну мне для корректуры было бы очень удобно. Секунд через 10 выдал код с подробной инструкцией по пользованию. Загрузил, запустил, выдал ошибку. Закинул ему эту ошибку взад "Создать скрипт для Indesign v.13 который делает множественный поиск и замену текста с базой данных из внешнего файла. Ошибка var line = lines.trim(); it's not a function"
Он мне ответил: "Ошибка var line = lines.trim(); it's not a function возникает, потому что метод trim() не существует для типа данных, который возвращается при чтении файла в InDesign. В InDesign скрипты используют JavaScript (ExtendScript), который может не поддерживать все современные методы JavaScript, такие как trim()." И тут же выдал мне поправленный код, который – упс! – прекрасно заработал. Прогресс, однако!
Так это любой ИИ-ки и до ДипСика делал
 
Их производительность и способность закрывать более широкий круг задач на малознакомых стеках тоже.
А способность отвечать за неочевидные на первый взгляд ошибки в решении от ИИ (особенно на малознакомых стеках) - она учитывается? Точнее, отсутствие, конечно.
 
А способность отвечать за неочевидные на первый взгляд ошибки в решении от ИИ (особенно на малознакомых стеках) - она учитывается? Точнее, отсутствие, конечно.
Есть разные подходы, в видео были примеры... сначала пишется простое решение, потом уже дописываются усложнения.
Сначала пишутся функции, потом уже описывается совместное их использование. Ну TDD, сначала человек пишет проверочный код, а AI пишет реализацию.
Ну к примеру я написал пару предложений в qwenln, а мне выдали 70 строк кода, в т.ч. с необходимыми пояснениями. С ними разбираться проще и при необходимости поднять документацию, чем в этой документации разбираться с нуля на каждый чих.
Не надо думать что можно сделать запрос "запили мне аналог vk" и получить результат, но разбивая все на небольшие задачи и внося точечные правки получается вполне достойный помощник. Это получается как бы парное программирование, но к примеру некоторые компании к концу года планируют серьезные изменения в своем штате сотрудников.
Python:
import ccxt
import time
import csv
import os

# Инициализация Bybit
bybit = ccxt.bybit({
    'enableRateLimit': True,  # Включаем ограничение по скорости запросов
    'options': {
        'defaultType': 'future',  # Устанавливаем тип торговли как фьючерсы
    }
})

# Функция для получения исторических свечей
def fetch_ohlcv(symbol, timeframe='15m', limit=100):
    try:
        print(f"Fetching {symbol} OHLCV data...")
        ohlcv = bybit.fetch_ohlcv(symbol, timeframe=timeframe, limit=limit)
        return ohlcv
    except Exception as e:
        print(f"Error fetching OHLCV for {symbol}: {e}")
        return None

# Функция для сохранения данных в CSV-файл
def save_to_csv(symbol, ohlcv_data):
    # Проверяем, существует ли папка для хранения файлов
    if not os.path.exists('candles'):
        os.makedirs('candles')

    # Создаем имя файла на основе символа
    filename = f"candles/{symbol.replace('/', '_')}_15m.csv"

    # Проверяем, существует ли файл для добавления заголовков
    file_exists = os.path.isfile(filename)

    with open(filename, mode='a', newline='') as file:
        writer = csv.writer(file)
        # Записываем заголовки, если файл только создается
        if not file_exists:
            writer.writerow(['Timestamp', 'Open', 'High', 'Low', 'Close', 'Volume'])
        # Записываем данные свечей
        for candle in ohlcv_data:
            timestamp, open_price, high, low, close, volume = candle
            writer.writerow([timestamp, open_price, high, low, close, volume])

    print(f"Data for {symbol} saved to {filename}")

# Основная функция
def main():
    try:
        # Получаем список фьючерсных рынков
        markets = bybit.fetch_markets()

        # Фильтруем только фьючерсные пары
        futures_symbols = [market['symbol'] for market in markets if market['type'] == 'future' and market['active']]

        print(f"Found {len(futures_symbols)} futures trading pairs.")

        # Для каждой пары получаем исторические данные
        for symbol in futures_symbols:
            ohlcv_data = fetch_ohlcv(symbol, timeframe='15m', limit=100)
            if ohlcv_data:
                print(f"Fetched {len(ohlcv_data)} candles for {symbol}.")
                # Сохраняем данные в CSV-файл
                save_to_csv(symbol, ohlcv_data)
            else:
                print(f"No data fetched for {symbol}.")

            # Добавляем задержку, чтобы избежать превышения лимита запросов
            time.sleep(bybit.rateLimit / 1000)

    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()