Блог им. hobbit

Ч9. Выборка, это тоже диверсификация, только еще более эффективная

Тенденция — это, попросту говоря, направление рыночного движения.… Рынки зачастую движутся между двумя параллельными линиями

Джон Мэрфи

Алгоритмические стоп-лоссы и тейк-профиты всегда можно визуализировать. То же можно проделать и с другими алгосигналами открытия и закрытия. Главное преимущество человека над торговым роботом — визуальное восприятие картинки торгов, как текущей, так и в прошлой истории. Так почему бы этим не воспользоваться?

Как-то упоминал о своем любимом индикаторе SavMeter, основанном на линиях двух SAR. Одна линия — трендовая. По ней открывается позиция. Другая, более быстрая, — замена трейлинг-стопа. При ее пробитии, позиция закрывается. Глядя на историю можно легко отрегулировать расстояние линий так, чтобы не было слишком много ложных сигналов. Это проще и быстрее, чем гонять тестера на истории.

Что особенно важно, индикатор SavMeter несет в себе эффект синергии. Объединяет сразу несколько инструментов. Объединенный график становится более сглаженными, это тоже уменьшает ложные сигналы. Корректировать параметры на одном графике проще, чем заниматься оптимизацией на графиках каждого отдельного инструмента.

Получается, синергия — более эффективная диверсификация. Среднегодовая доходность SavMeter на часовых фьючерсах на истории у меня всегда превышала 200%. На спотовом рынке получается в 5 раз меньше. Приблизительно 40%. Но есть еще более эффективный способ получения дохода.

Однажды меня заинтересовал блог AlexChi на Смартлабе. Он предлагает достаточно простую систему (BWS) выборки акций на недельном моменте. Система позволяет обогнать индекс. Нечто похожее, с сортировкой в таблице, я уже встречал. Не помню иностранного автора. Решил проверить. Действительно. На 4х-часовых фьючерсах доходность увеличилась в 1.5 раза больше, чем давал индикатор SavMeter, настроенный на одни и те же инструменты. Но прежде нужно было править LbotTest.

О новых свежих возможностях 2025. Они достаточно принципиальны, как и 3D. Речь идет об использовании внешних функций. Раньше, язык Lbot был замкнутым. Закрытым для сложных внешних алгоритмов и расчетов. Сейчас таких проблем нет. Фактически, можно расширять и развивать Lbot дальше по своему усмотрению, не вторгаясь во внутренности LbotTest_2025 и Lbot3D_2025. Для расширения нужно только знать язык Qlua (Lua для QUIK).

Пример использования внешней функции best34() на языке Lbot.

OpenLong = {best34(), 1} >= 29
CloseLong = {best34(), 1} < 29
OpenShort = {best34(), 1} <= -29
CloseShort = {best34(), 1} > -29

По правилам выше, позиция открывается в лонг у инструмента, если он входит в шестерку сильнейших. Имеет вес от 29 до 34. Более сильный получает больший вес (больший номер). Критерием выборки может быть индикатор RSI. Ниже пример такой функции best34(). Код требуется поместить в файл LbotExternal.lua (внутри нового дистрибутива LbotTest_2025). Робот выбирает лучшие на данный момент инструменты из заранее заданных 34х в массиве TGS.

------------------------------------------------------------------
local getCBar = getConcBar  -- Для чтения параллельной свечи сравниваемого инструмента

-- Выборка лучшего инструмента по RSI (*_h4_r)
local TGS = { 'Si_h4_r', 'CR_h4_r', 'Eu_h4_r', 'GL_h4_r', 'BR_h4_r', 'NA_h4_r', 'RI_h4_r', 'MM_h4_r', 'NG_h4_r', 'GD_h4_r'
, 'SV_h4_r', 'SF_h4_r', 'ED_h4_r', 'SR_h4_r', 'GZ_h4_r', 'RN_h4_r', 'SN_h4_r', 'LK_h4_r', 'VB_h4_r', 'YD_h4_r'
, 'TI_h4_r', 'MN_h4_r', 'ME_h4_r', 'GK_h4_r', 'TT_h4_r', 'AL_h4_r', 'PZ_h4_r', 'AF_h4_r', 'NK_h4_r', 'AK_h4_r'
, 'MT_h4_r', 'PI_h4_r', 'CH_h4_r', 'VK_h4_r' }
local MEDIUM = 17
function best34(id, tag, line, index)
    local tg = tag .. '_r'
    local n = getNumCandles(tg)
    if n == 0 then
        message('best34() ОШИБКА Отсутствует график ' .. tg, 3)
        return 0
    end
    local b, n = getCandlesByIndex(tg, line, index - 1, 1)
    if n ~= 1 then
        message('best34() ОШИБКА Отсутствует значение №' .. index .. ' графика ' .. tg, 3)
        return 0
    end
    b = b[0]
    local c = b.close
    local rate = 1
    local exists
    local k = 0  -- Счетчик падающих инструментов (нужен для отрицательного rate)
    if c < 50 then
        k = k + 1
    end
    index = index - 1
    for _, tg1 in pairs(TGS) do
        if tg1 and tg1 ~= tg then
            local b1 = getCBar(tag, index, tg1, line)
            if b1 then
                local c1 = b1.close
                if c1 < 50 then
                    k = k + 1
                end
                exists = true
                if c > c1 then
                    rate = rate + 1
                end
            end
        end
    end
    assert(exists, 'best34() ОШИБКА Отсутствуют сравниваемые значения для графика ' .. tg)
    if k > MEDIUM then
        rate = rate - #TGS - 1
    end
    return rate
end

Пожалуйста, ставьте лайки, чтобы поддержать проект.

Начало здесь

Тестер для конструктора роботов Lbot3D. Ч1. Нужна обратная связь

Ч2. Как все начиналось (из истории трейдера и программиста)

Ч3. В начале все стратегии были приведены к одной общей формуле

Ч4. Расшифровка торговой формулы E=#X%VD

Ч5. Пример расчета потерь при торговле на нескольких таймфреймах

Ч6. Оптимальное распределение активов при торговле фьючерсами

Ч7. Первое время, сама торговля для меня была тестированием

Ч8. Роботам недостаточно одного теста, тем более без добавок и низкого качества



Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
816 | ★2
10 комментариев
Модераторы блокируют и не размещают на главной странице полезные для трейдеров статьи. В том числе и мои. Нет читателей и интереса, значит нет смысла продолжать тратить время. Завершаюсь ).
avatar
---------------------------------------------------------------------------------------local getCBar = getConcBar-- Выборка лучшего из 32 инструментов по RSI
после этого кода это добавить
------------------------------------------------------------------
local getCBar = getConcBar  -- Для чтения параллельной свечи сравниваемого инструмента

-- Выборка лучшего инструмента по RSI (*_h4_r)

?

Как индюка добавить на график еквити и транс? ошибка LuaScripts\LbotTest_2025\log\BRT1.csv.
avatar
cern, Привет. Очень размытый вопрос. Какая конкретная ошибка? Не появляются индикаторы еквити и транс? Сейчас проверю у себя и потом объясню. Я сам давно уже ими не пользуюсь
avatar

cern, Имя файла должно совпадать с идентификатором стратегии. Например: если стратегия BRT1

[BRT1]
Security = 
WorkSize = 

то в настройках TradesFile должен быть BRT1.csv

avatar
avatar
Чтобы заработал код выше с best34 надеюсь понимаете, что в QUIK нужно создать графики для всех 34х инструментов. Задать им идентификаторы, как в примере типа Si_h4_r,… Придется поработать )

Сделал скриншот, как задаются идентификаторы в QUIK. 
avatar

Читайте на SMART-LAB:
Фото
Внимание на юаневую ставку
И снова о рубле. Неделю назад писал про нефть, которая рублю помогла, но помощь, предположительно, на исходе. А вчера дал повод и...
Фото
Акции для активных трейдеров на июнь 2026
Цикл статей «Наиболее подходящие акции для активных трейдеров» продолжается. Оценим волатильность рынка в мае, спрогнозируем динамику...
Нефть снова приблизилась к $100 за баррель 
Цена на нефть марки Brent 1 июня взлетела на 6,11%, до $96,11 за баррель, WTI подорожала на 7,14%, до $93,58. Таким образом, котировки эталонных...
Фото
НМТП: слабый первый квартал, но нужно смотреть дальше первой страницы
НМТП отчитался по МСФО за 1-й квартал, ищем подводные камни 👉 Выручка на уровне прошлого года 👉 Операционная прибыль...

теги блога Хоббит

....все тэги



UPDONW
Новый дизайн