Gambler <osaengine.ru>
Gambler <osaengine.ru> личный блог
13 июля 2024, 19:09

Создание Торговых Стратегий с Помощью ИИ: Легче, Чем Печь Блины

Алгоритм субботняшний

0) Посетить мой сайт https://osaengine.ru/ ))

1) Зайти на chatgpt.com/

2) Написать вопрос

Создание Торговых Стратегий с Помощью ИИ: Легче, Чем Печь Блины

3) Получить ответ

-- Настройки
SEC_CODE = "SBER" -- Код инструмента
CLASS_CODE = "TQBR" -- Код класса инструмента
SHORT_MA_PERIOD = 10 -- Период короткой скользящей средней
LONG_MA_PERIOD = 50 -- Период длинной скользящей средней
QTY = 1 -- Количество лотов

-- Переменные
short_ma = {}
long_ma = {}
prices = {}
position = 0 -- Текущая позиция: 0 - нет позиции, 1 - лонг, -1 - шорт

-- Функция для расчета скользящей средней
function calculate_ma(prices, period)
    local sum = 0
    for i = #prices-period+1, #prices do
        sum = sum + prices[i]
    end
    return sum / period
end

-- Функция для обработки новых тиков
function OnAllTrade(alltrade)
    if alltrade.sec_code == SEC_CODE and alltrade.class_code == CLASS_CODE then
        table.insert(prices, alltrade.price)
        if #prices >= LONG_MA_PERIOD then
            table. <a name="cut"></a> insert(short_ma, calculate_ma(prices, SHORT_MA_PERIOD))
            table.insert(long_ma, calculate_ma(prices, LONG_MA_PERIOD))
            if #short_ma > LONG_MA_PERIOD then
                table.remove(short_ma, 1)
                table.remove(long_ma, 1)
            end

            local short_ma_last = short_ma[#short_ma]
            local long_ma_last = long_ma[#long_ma]

            -- Логика торговли
            if short_ma_last > long_ma_last and position <= 0 then
                if position == -1 then
                    sendOrder("B", QTY * 2) -- Закрываем шорт и открываем лонг
                else
                    sendOrder("B", QTY) -- Открываем лонг
                end
                position = 1
            elseif short_ma_last < long_ma_last and position >= 0 then
                if position == 1 then
                    sendOrder("S", QTY * 2) -- Закрываем лонг и открываем шорт
                else
                    sendOrder("S", QTY) -- Открываем шорт
                end
                position = -1
            end
        end
    end
end

-- Функция для отправки ордеров
function sendOrder(action, qty)
    local price = getParamEx(CLASS_CODE, SEC_CODE, "LAST").param_value
    local trans_id = os.time()
    local transaction = {
        ["TRANS_ID"] = tostring(trans_id),
        ["CLASSCODE"] = CLASS_CODE,
        ["SECCODE"] = SEC_CODE,
        ["ACTION"] = "NEW_ORDER",
        ["TYPE"] = "M",
        ["OPERATION"] = action,
        ["QUANTITY"] = tostring(qty),
        ["PRICE"] = tostring(price)
    }
    sendTransaction(transaction)
end

function OnStop()
    -- Очистка данных и завершение работы
    prices = {}
    short_ma = {}
    long_ma = {}
    position = 0
    message("Script stopped")
end

message("Trend robot started")

Какие DLL? Какие Access? О чем вы, ребята!? ))

Мой сайт https://osaengine.ru/ )
21 Комментарий
  • Vkt
    13 июля 2024, 19:22
    Если сделка по цене из  функции local price = getParamEx(CLASS_CODE, SEC_CODE, «LAST»).param_value не прошла. Улетела цена. Такое бывает. Робот что делать будет?
  • Снежко
    13 июля 2024, 19:27
    Очень много всего
    Надо просто запрограммировать кнопку бабло
  • Beach Bunny
    13 июля 2024, 20:10
    Это ж х##ня какая-то а не робот. Ты запусти свой код для начала и попробуй.
    Во первых там есть ошибки в параметрах некоторых функций
    Во вторых это процентов 30-40% от необходимого кода.
  • bohemian rhapsody
    13 июля 2024, 23:46
    с каких пор на скользяшках стало возможным стабильно зарабатывать?  

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн