Nikolay (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 21 След.
Новая версия VCLua - библиотеки для GUI
 
Это команды терминала. Если у Вас установлена VS, то значит есть и x64 Native Tool Comand Promt. Что тоже просто терминал, но в окружении VS.

Библиотеки Lua загружаются на странице загрузки с оф. сайта в разделе Tools, где прямо написано Pre-compiled Lua libraries and executables are available at LuaBinaries. Где и есть ссылка https://sourceforge.net/projects/luabinaries/files/5.4.2/Windows%20Libraries/

Как писал выше, проще всего создать bat файл, в него поместить все команды и выполнить его в Comand Promt в каталоге где находятся исходники. Собственно ошибка-то даже по-русски пишет, что нет файла в каталоге запуска.

Для сборки mySql будут совсем другие команды link, так что это уже совсем другой вопрос.
Новая версия VCLua - библиотеки для GUI
 
Библиотеки скачиваются с сайта LUA. Именно библиотеки. Можно, конечно, и самому собрать из исходников.

Это команды сборки в среде х64 command promt VS - терминал. Можно сделать bat  файл с этим содержимым и запустить его в среде x64. Т.е. это не особенность Lua, а просто сборка dll из исходников.
Новая версия VCLua - библиотеки для GUI
 
Я собираю сам из исходников

set LUA_DIR=C:\Lua\5.4
set CFLAGS= /O1 /DPSAPI_VERSION=1  /I"%LUA_DIR%\include" /MD
cl /nologo -c %CFLAGS% sqlite3.c
cl /nologo -c %CFLAGS% lsqlite3.c
link /nologo sqlite3.obj lsqlite3.obj /EXPORT:luaopen_lsqlite3 /LIBPATH:"%LUA_DIR%\lib" lua54.lib /DLL /OUT:lsqlite3.dll

Но есть и готовые, скачивал как-то давно https://disk.yandex.ru/d/xJvJ8TuSMvE-Bg
Новая версия VCLua - библиотеки для GUI
 
Я предпочитаю sqlite
Новая версия VCLua - библиотеки для GUI
 
Да пожалуйста. Есть и кнопки, и несколько окон, и списки выбора (хоть и не выпадающие) и т.д.
Новая версия VCLua - библиотеки для GUI
 
Именно в таком виде, нужна dll, да. Но вопрос бы про интерфейс управления скриптом. Ответ - достаточно табличных форм qlua. Главная цель же - это скрипт и его работа, а форма управления, даже если она не имеет выпадающих списков, колесиков и прочей, позволяющая редактировать параметры, вполне достаточна.
Новая версия VCLua - библиотеки для GUI
 
Цитата
oleglist написал:
Друзья, можете помочь мне разобраться с такой, казалось бы простой задачей?
Подскажите Как сделать в Квике( 9.2.3.15) на Lua вывод окна, с которого будет управляться робот? — форум QUIK
Для создания окна управления скриптом, не нужны внешние библиотеки.
Ошибка снятия заявки. [GW][3] "Сейчас эта сессия не идет."
 
Если нет ответа транзакции (т.е. ответа шлюза биржи), то, скорее всего, транзакция не прошла дальше сервера брокера. А значит есть ответ и ошибка самого метода sendTranscation. Где тоже необходимо проверять - ушла ли транзакция на биржу.
Ошибка снятия заявки. [GW][3] "Сейчас эта сессия не идет."
 
Не очень понятно почему должен быть вызван колбек OnOrder, если никаких изменений с ордером не произошло. Что касается колбека OnTransReply, то использовать его для проверки состояния сессии - это так себе идея. Сессия может быть приостановлена, закрыты торги по инструменту, просто не допущен к торгам в это время и т.д. При этом "долбить" сервер транзакцией в надежде "а вдруг" не даст результата. да и брокер может сказать на это "фи".

У каждого метода есть своё предназначение. Транзакция - для подачи торговых команд и только. Подавать их необходимо когда торги по инструменту проводятся. Поэтому необходимо проверять состояние сессии перед подачей торговой команды.

Правда пример функции не самый удачный, на мой взгляд. Но это дело вкуса, не более. Лишь бы работало.
Вопрос по индикатору
 
У Вас очевидная проблема расчёта самой EMA. Формула предполагает, что есть прошлое значение.

EMA[index]   = alpha * val   + (1 - alpha) * EMA[index-1]

т.е. необходимо иметь массив для EMA, либо при появлении нового бара запоминать прошлое значение и рассчитывать новое на базе одного и того же прошлого для всех вызовов в этом новом баре.

Ваша реализация постоянно обновляет прошлое. Важно учитывать, что вызов OnCalculate происходит для каждой (условно) сделки в новом баре, а не один раз при появлении нового бара.
Сумма лучших: какие есть способы получения
 
Для данных по стакану есть параметры в таблице текущих торгов. Есть и сумма по заявкам, есть и по объёму в этих заявках.

BIDDEPTH - Спрос по лучшей цене
BIDDEPTHT - Суммарный спрос
NUMBIDS - Количество заявок на покупку
OFFER - Лучшая цена предложения
OFFERDEPTH - Предложение по лучшей цене
OFFERDEPTHT - Суммарное предложение
NUMOFFERS - Количество заявок на продажу
HIGHBID - Лучшая цена спроса сегодня
LOWOFFER - Лучшая цена предложения сегодня
почему getParamEx2 не работает
 
Чтобы получать лучший спрос и предложение не надо открывать очень затратный поток данных как Quotes.
Есть параметры "OFFER" и "BID".
почему getParamEx2 не работает
 
Ну стоит всегда проверять что получено в ответ. Это же метод, запрашивающий данные на сервере (условно). А значит может приехать и nil.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
nikolz написал:
Хорошо, что признали.
------------------
Не увидел в вашем примере этого.
------------------
Что не так в этих данных.
1. mem 285.5576171875
2. mem 284.5439453125
3. mem 284.751953125
4. mem 284.6689453125
-----------------
Где Ваши доказательства?
Можете, не перескакивая, конкретно показать , что и как Вы сокращаете?
Что я должен был признать? Впрочем, я уже ответил, что я не буду спорить. Мне хватает своих глаз для принятия решений. Вы можете продолжать спорить с другими.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
Показалось совсем не нужно или не понял как ею пользоваться?
Код
function _G.Init()
    PlotLines = Algo(_G.Settings)
    return 1
end
function _G.OnChangeSettings()
    _G.Init()
end

Тогда происходит реинициализация с новыми параметрами.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
nikolz написал:
Вы ошибаетесь. Ваш пример не соответствует Вашему t3[i=3]=nil
----------------
В Вашем тесте есть оператор tt1=nil  (стр 21)
Именно этот оператор освободит память так как он обнуляет ссылку на таблицу , т е массив из кучи становится без ссылки.
Его и удаляет сборщик.
---
если закомментировать tt1=nil.
то результат:
-------------
1. mem 285.5576171875
2. mem 284.5439453125
3. mem 284.751953125
4. mem 284.6689453125
------------
никакой очистки нет, как я Вам и написал.
Я знаю, что без удаления ссылки самой таблицы, расстановка nil по элементам массива ничего не даст. Пример говорит о другом. Очистка всей таблицы собирает её всю, да. Но он добавлен для того, чтобы видеть какой объём занимает вся таблица, заполненная значениями double.

Второй пример показывает какой размер забирает скрипт при работе с таблицей с дырками. Именно такие и используются при расчёте по индексам ряда. Спорить желания нет, т.к. это эмпирически проверено, даже просто по наблюдаемому объёму занимаемой памяти в окне доступные скрипты.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
paluke,  Я тоже проверил, действительно второй элемент зачищен? Хотя структура таблицы должна  сохраниться, как утверждает nikolz,?
Он говорит о другом. Действительно, если инициализировать чистый массив, заполняя элементы последовательно, не допуская дырок, то тогда даже если пройтись по массиву и установить nil для каждого элемента, то память не освободится. Если же заполнять дырявую таблицу (а после третьего элемента она уже будет с дыркой), то это уже не массив и тогда мусорщик работает иначе.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
Если не сложно, покажите на примере кода выше, Вашу реализацию фильтра. Как должно выглядеть?
Код
function Cached.Roofing_Filter(FSettings, ds)

    -- Параметры
    local ds = ds or nil
    local FSettings = FSettings or {}
    local v_t = FSettings.v_t or 'C'
    local P = FSettings.period or 48
    local N = FSettings.N or 10
    local x = FSettings.x or nil

    -- Локальные таблицы для хранения данных между вызовами
    local Price, HP, SSF, Lead = {}, {}, {}, {}
    local alpha1, a1, b1, c2, c3, c1 = 0, 0, 0, 0, 0, 0
    local I1 = 0  -- Индекс предыдущего бара

    -- Функция для ограничения размера таблицы
    local function limit_table_size(tbl, max_size)
        while #tbl > max_size do
            table.remove(tbl, 1)
        end
    end

    return function(I)
        -- Текущая цена
        local p0 = x or Value(I, v_t, ds) or 0

        -- Проверка смены бара
        local newbar = I > I1
        if newbar then
            -- Обновление индекса бара
            I1 = I

            -- Инициализация на первом баре
            if I == 1 then
                Price[I], HP[I], SSF[I], Lead[I] = p0, 0, 0, 0
                local fi = (0.707 * 2 * math.pi / P)
                alpha1 = (math.cos(fi) + math.sin(fi) - 1) / math.cos(fi)
                a1 = math.exp(-1.41421356 * math.pi / N)
                b1 = 2 * a1 * math.cos(1.41421356 * math.pi / N)
                c2, c3, c1 = b1, -a1 * a1, 1 - c2 - c3
            else
                -- Обновление цены
                Price[I] = p0

                -- Разница цен для выделения высокочастотных компонентов
                local p1 = Price[I - 1] or p0
                local p2 = Price[I - 2] or p1
                local noise = p0 - 2 * p1 + p2

                -- Расчет HP-фильтра
                local hp1 = HP[I - 1] or 0
                local hp2 = HP[I - 2] or hp1
                local hp = (1 - alpha1 / 2) * (1 - alpha1 / 2) * noise + 2 * (1 - alpha1) * hp1 - (1 - alpha1) * (1 - alpha1) * hp2
                HP[I] = hp

                -- Расчет SuperSmoother
                local ssf1 = SSF[I - 1] or 0
                local ssf2 = SSF[I - 2] or ssf1
                local ssf = c1 * (hp + hp1) * 0.5 + c2 * ssf1 + c3 * ssf2
                SSF[I] = ssf

                -- Расчет опережающего сигнала (Lead)
                local lead1 = Lead[I - 1] or 0
                local lead = 2 * ssf - 1 * ssf2
                Lead[I] = lead
            end

            -- Ограничение размера таблиц
            limit_table_size(Price, 3)  -- Храним только последние 3 бара
            limit_table_size(HP, 3)
            limit_table_size(SSF, 3)
            limit_table_size(Lead, 3)
        end

        -- Возвращаемые значения
        return Lead[I] or 0, SSF[I] or 0
    end, Lead, SSF
end

local fAlgo, Lead, SSF = Cached.Roofing_Filter(FSettings, ds)
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
nikolz написал:
Такая операция не освобождает память
Вы просто в записываете тип элемента равным 0.
Но элемент остается в таблице.
Так, да не совсем так. Это зависит от того в какую область попадёт ключ - в в массив или в хеш-мап Т.к. такая операция эмпирически проверена, и collectgarbage('count') явно показывает разницу, то в данном случае расход памяти уменьшается.

Для теста вот код, можно запустить как в чистом lua (тогда раскомментировать вызов main), так и в терминале.

Код
local last = os.clock()
print = _G.message or print

local sleep = sleep or function(ms)
    last = os.clock()*1000
    while (os.clock()*1000 - last) < ms do
    end
end

local tt1 = {}
local tt2 = {}

local test = function()

    for n = 1,10000 do
        tt1[n] = 100.12345
    end

    print('1. mem '..collectgarbage('count'))

    tt1 = nil

    collectgarbage()
    sleep(10)

    print('2. mem '..collectgarbage('count'))

    for n = 1,10000 do
        tt2[n] = 100.12345
        tt2[n-3] = nil
    end

    print('3. mem '..collectgarbage('count'))

    collectgarbage()

    sleep(10)

    print('4. mem '..collectgarbage('count'))
end

function main()
    test()
    sleep(1000)
end

-- main()


1. mem 279.5498046875
1. mem 23.5576171875
3. mem 23.787109375
4. mem 23.7060546875
5. mem 23.787109375


Впрочем, для массивов фиксированного размера просто применяются кольцевые буферы.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
Вы имеете в виду такой подход        Table = x  if I > I - 3 then Table = nil end
Просто t[i-3] = nil

Проверять не обязательно. Если всего три элемента, то да, можно и удаление со сдвигом использовать. Хотя? т.к. в таблицах Вы храните не числа 1, 2, 3, а номера индекса ... 1001, 1002, 1003 и т.д.,
то после сдвига выйдет 1001 = nil, 1002, 1003, 1004. Что равносильно t[1004-3] = nil
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Если речь про индикатор, то необходимо использовать метод OnChangeSettings и реинициализировать метод расчёта.

Я индикаторы редко использую, так что подход больше для скриптов.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Это реализация из под кальки примеров расчёта индикаторов от ARQA. Они не столь удачны.

Для начала, если используется замыкание, то зачем же каждый раз передавать FSettings, ds. Это условно постоянные переменные. Они не изменятся для созданного экземпляра.
Значит их можно передавать только при инициализации, а значит и параметры определить один раз. Постоянно изменяемая величина - это индекс, вот только её и передавать в экземпляр расчёта.

Метод table.remove не самый быстрый - очень не быстрый. Хотя, наверно, в рамках Квик это не столь критично, тем более, что расчёт раз в бар. Я предпочитаю просто очищать данные в таблицах, сборщик мусора освободит память.

Также я предпочитая возвращать инициализированный метод расчёта и таблицы, хранящие данные (в данном случае это Lead и SSF). Их необходимо иницализировать один раз и тогда всегда будет под рукой ссылка на весь массив данных, а нее только возвращаемые последние.

Для примера:
local fCalc, Lead, SSF = Cached.Roofing_Filter(FSettings, ds)

И тогда расчёт выглядит элементарно:

fCalc(index)


А использование данных:

Lead[index], Lead[index-2]  и т.д. Ссылка же неизменная, а значит нет необходимости получать из метода расчёта что-то ещё, засоряя память.
Расчёт размеров окна
 
Судя по тому, что до сих пор нет возможности даже изменить размер окна доступные скрипты, ожидать расширения возможностей qlua таблицы не стоит.
Расчёт размеров окна
 
Никак. Более того это зависит от выбранного шрифта и его размера. Плюс надо не забывать, что есть шапка окна, её необходимо не включать в расчёты, т.к. она есть если строк 0. Так что я просто делаю доступным параметры масштабирования, чтобы можно было задать для каждого скрипта.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Собственно да, это же ожидания, хотя в основном он для другого https://www.moex.com/ru/ruonia
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
В целях планирования фючерс даже интересней.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Есть очень близкий индекс RUSFAR, на RUONIA есть фьючерс RUON
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Да примерно всё также, три вклада, накопительный и четыре брокера. Я не буду заниматься переброской денег из банка в банк ради повышенных приветственных ставок.
Я плачу налоги как с вкладов, так и с облигаций. Ранее, до 2021, ОФЗ были без налога, теперь есть. Также как и вклады от суммы 1 млн. Так что приходится платить и эти налоги. Что касается рисков, то я бы здесь поспорил, т.к. риски по банкам, где высокие проценты, выше. Например, я не могу открыть вклад с своих банках выше 22-23%. И это без капитализации и пополнения, т.е реальная ставка ниже. Поэтому те же ОФЗ, хоть и имеют процент ниже, но позволяют торговать волатильность без потери купонов. А флотеры по сути и есть аналог вклада, например 29014, 29106. Дают доходность как вклад, купоны раз в квартал, но тоже позволяют торговать их. Ставка зависит от RUONIA.

Что касается Самолёта, то это реальность - лесенкой собирал, лесенкой сдавал. Также как и по другим облигациям, которые упали после октябрьского заседания, а в декабре выстрелили обратно.

Что касается срочки, то я предпочитаю календарные спреды. Простые фьючи тоже торгуются, но чаще это просто позиция для защиты. Заниматься спекуляциями как работой желания нет, банально надоело.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
Я же рассуждаю об инвестиционной стратегии. То есть вопрос стоит фиксировать или нет, если фиксировать кто лучшей из ОФЗ? В декабре 24 я немного взял 33 с доходностью на тот момент > 20%. Короткие корпоративные супер, но это спекулятивная стратегия в моем понимании. Для инвестирования я еще смотрю на выпуски номинированные в USD?
Для облигаций есть достаточно инвестиционных стратегий, например Колесо. В моём понимании надо иметь три части в облигациях:
1. фиксированный купон - это фиксация, но набирать надо когда есть дисконт к цене.
2. флоатеры - это как раз аналог вклада. Получаете текущий средний процент на рынке, не думая ни о чём. Например 29014, 29016 и далее.
3. торговля тела - т.е. покупаем на просадках, продаём на росте. При этом эта часть может дать даже намного больше, чем купоны.

Что выбирать - дело субъективное. Кто-то боялся покупать облигации Самолёт недавно, а кто-то за несколько дней собрал десятки процентов от тела. Достаточно было читать отчёт компании, а не потоки анал-итики. Да, риски есть всегда. Но если их исключать (почти), то взять ОФЗ ПК и ПД раных дюраций и не думать. Тем более, что есть RGBI фьючерс. С ним можно еще и расхождения торговать, да и просто как хедж брать.

Что касается 248, то я бы её рассматривал если есть ожидания снижения ставки. Собственно как любая длинная. Да, у неё большой купон YTM - это хорошо. Но я уже с 98 года не планирую далее 3-х лет. А сейчас и более полугода. Так что предпочитаю собирать доход сейчас, а не потом.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Сейчас ОФЗ тоже под налогом. Если только не ИИС на длительный строк.
Основная идея облигаций не в этом, а в том, что они позволяют получать доход как от купона, так и от переоценки тела. И без потери начисленных купонов.
Также стоит учитывать, что эти 24% вклада - это итоговая ставка дохода, сложный процент будет ниже. А вот в облигациях как раз можно реальную доходность получить выше, т.к. выплата купонов может быть раз в квартал или даже в месяц. А если говорить о том, что облигации тоже ходят каждый день на 0.5% и более, то и это можно торговать сеткой. Иногда в день до 5-10 сделок бывает.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
nikolz написал:
Идея понятна. Но Вы не пробовали посчитать  в сравнении с депозитом в банке и учетом сложного процента. Недавно читал статью в инете где говорится что высокие проценты по облигациям на длительный срок реально дают более низкий процент чем депозит если разложить эти процента по годам с учетом сложного процента.
Скорее наоборот. Эти 24 в банке - это, скорее всего, без капитализации и на длительный срок. С облигациями это не так. Например, облигации с купоном каждый месяц уже дают намного больший денежный поток.
Плюс еще переоценка тела. Также облигации, как и любой торгуемый инструмент позволяет собирать волатильность, т.е. торговать небольшие движения. Это как выйти из вклада через неделю без потери процентов. Так что нет, вклады хоть и спокойней, но облигации могут дать намного больше. Правда для этого надо приложить немного усилий.

Что касается ожиданий, то да 38-мые могут выстрелить. Впрочем, ОФЗ - как вклады в банках. Можно зафиксировать доходность на года и выйти в любой момент. А для спекуляций, например, совсем недавно облигации Самолет давали под 50%. Или Россети ЛЭ, да и тот же недавно размещённый Магнит. Я люблю короткие облигации с 30-и дневной выплатой.
Торговля в выходные
 
Цитата
Kolossi написал:
Большое спасибо Катерина за развернутый ответ.
 Я порекомендую брокеру уточнить у биржи будет ли ему представлен доступ к к торговле в выходные дни.
А сам буду каждое субботнее  утро в 7-00, 10-00 и в 19-00 проверять статус каждого тикера  составлять список инструментов
допущенных к торговле на отдельной бумажке и потом из нее создам для робота таблицу рекомендуемых тикеров на воскресенье.
Но может все-таки это будет параметр для getParamEx?
Они рекомендую как раз два параметра STATUS и TRADINGSTATUS. Первый не все брокеры транслируют. Второй, вроде, все.

Если для параметра TRADINGSTATUS вернулся result == '1', то можно увидеть идут ли торги по значению param_value из возвращаемой таблицы.
Здесь на форуме были как-то написаны значения.

Правда для срочного рынка надо еще смотреть на параметр CLSTATE.
limit_kind в таблице depo_limit
 
Речь о поведении данных в таблице money_limits поле limit_kind. Вы предложили реализацию через перебор данных и поиск максимального. Такой подход возможен, да. Но возникает вопрос - почему вносимые изменения потребовали использования такого подхода.

limit_kind - это режим торгов инструмента, он задан в его спецификации и не изменится в течении торговой сессии. Наоборот, это достаточно постоянный параметр. То что дата расчётов в связи с выходными может быть дальше, не означает, что необходимо теперь переходить на хранение даты. То что в течении торговой сессии произошли с сделки с инструментом, не означает, что его режим торгов изменится. Он как был Т+1, так и остался. Просто позиция будет той же завтра, если нет сделок, не более. Сейчас же происходит замечательная вещь - нет сделок, получаем режим торгов Т+0 (текущая дата), совершили сделки, получаем Т+1 (следующая дата). Т.е. можно было бы добавить дату расчётов в таблицу, чтобы знать когда произойдут взаиморасчёты, но базовый фильтр limit_kind почему был изменён - совершенно не ясно. Это не дата расчётов. С этим можно было жить как раньше, если бы он не изменялся в течении торгов, но и это не так. Теперь действительно необходимо постоянно сканировать на поиск максимального значения.
limit_kind в таблице depo_limit
 
Хотя нет, это ваша реализация так работает. Прямой фильтр по money_limits требует точного соответствия. Это, конечно, просто великолепно вносить изменения ломающие обратную совместимость в ключевые механизмы по работе с инструментами.
limit_kind в таблице depo_limit
 
В данной схеме обнаружена она проблема, затрудняющая её использование. В таблице money_limit поле limit_kind может изменится в процессе работы. Например, считываем данные по инструменту, по которому нет позиции, получаем текущую дату. Открываем позицию и в поле limit_kind уже дата +1. Не очень понятно как предлагается работать, если данные параметр будут постоянно изменяться. Если только просто не прибавлять всегда 1, т.к. заявляется, что вернётся ближайшее значение.
Имена параметров ТТП и других данных торгового сервера MOEX
 
Проблема не в инструкции, а в невозможности выполнить действия, сформулированные там. В данном руководстве предлагается использовать платный продукт, который на данный момент не поддерживается на территории где работает терминал. И даже если бы поддерживался, предлагается ради получения имён параметров купить программный продукт за 6000 руб. Спрашивается - это как понимать? Т.е. вывести набор полей в инструкцию - так сложно, что пусть пользователи сами с этим возятся.
Новый период и время проведения торгов на бирже.
 
Это похоже на то, что есть, но явно не то, что есть в ТТТ. Для примера, параметр MINSTEP в описаниях в Квике уже SEC_PRICE_STEP, а параметра MINSTEP нет.
Новый период и время проведения торгов на бирже.
 
Цитата
Kolossi написал:
Искренне рад за вас. Как замечательно, что коммерческий продукт российской фирмы опционально требует софт, запрещенный производителем к распостранению на территории РФ.
Я уже не раз писал об этом. У меня, например, MS Office нет. Нет желания платить деньги, а устанавливать сломанное тем более. Тем более, что есть бесплатный облачный от того же MS. Раза два в год открыть документы достаточно. Но точно это не нормально - устанавливать тяжеленный пакет с потенциально опасными приложениями (вспоминаем про исполнение скриптов даже не открывая файл) только для того, чтобы узнать формальное описание полей. Мне проще собрать DDE сервер на С для этой задачи. И всё это потому что их описания нет в документации.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Вот исходная статься из 2011 года https://tr8dr.wordpress.com/2011/03/04/detecting-price-direction-in-order-flow/
Прошлая ссылка была перевод, не сразу нашёл у себя в закладках исходник.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Обычно не обсуждаю торговые стратегии, у всех свои предпочтения. Но регулярно выходят стратегии основанные на перевесе сторон стакана. При этом я помню как был период, когда перевес стороны означал движение в их пользу, потом наступил период, что всё наоборот - движение в сторону плотности. Как сейчас не знаю, возможно опять власть поменялась. Это к тому, что стакан - это половина данных. Основываясь только на неё сложно что-то сказать.Тем более, что если использовать типовой поток данных, то видимая часть в лучшем случае  - это всего 50 линий. Суммарные величины тоже малопоказательны, т.к. где там эти плотности - не видно.

В уже далёкие 00-е, когда восходили кванты, сразу стало ясно, что необходимо соотносить информацию из стакана с лентой сделок. Сопоставляя, понимать что исполнилось, что сняли, что переставили, с какой скоростью идут все эти события. И анализируя это, получать паттерны поведения. Вот, для примера, статья из 2017 года - https://www.quantalgos.ru/?p=2833
Новый период и время проведения торгов на бирже.
 
Поэтому уже давно всё переведено на чтение состояния сессии по конкретному инструменту. Он же может и в обычные дни встать на стоп торги в середине торгового дня. Если бы этот параметр ещё не транслировался с задержками, было бы замечательно.
В QUIK Junior в 11.4.1.3 перестала работать функция getDepoEx
 
Цитата
Андрей написал:
Цитата
Anton Belonogov написал:
Андрей , добрый день.

Просьба уточнить, что подразумевается под "актуальной датой для инструмента".
Раньше я последним параметром задавал 0 и "в ус не дул" (на Junior). Всё работало. Теперь это не работает, там надо ставить дату следующей торговой сессии (я так понял), чтобы в выводимых параметрах были учтены сегодняшние операции. Вот как мне получить эту дату следующей торговой сессии программно с чётом всех выходных и праздников, чтобы я руками каждый раз не правил этот параметр?
В Junior транслируется в поле limit_kind дата в виде числа. Т.е. можно взять максимум. У меня в скриптах параметр "Режим торгов" не задаваемый, а определяемый. Работает как на реальном счёте, так и на демо. Вы же не будете для каждой бумаги руками указывать режим торгов, тем более, что до недавнего времени были как Т+2, так и Т+1. Какие-то бумаги переводили на другой режим. Т.е. это получаемая биржевая информация, а не задаваемая.
В QUIK Junior в 11.4.1.3 перестала работать функция getDepoEx
 
Подход особо не изменился - найти максимальное числовое значение в таблице money_limit по полю limit_kind. Либо, если версия терминала выше 10.2.0, передавать не число, а строковое значение "Tx" - это такое тихое нововведние.
Запустить скрипт Lua другим скриптом, Запустить скрипт Lua другим скриптом
 
Есть простой, прямой вопрос - можно ли в окружении терминала выполнить другой скрипт, контролировать его состояние. Ответ - нет.
Вы же говорите о том, что давайте вместо поставленной задачи преобразуем её к виду, когда другие скрипты - это модули, выполняющий какие-то действия и контролируемые и выполняемые в окружении скрипта дирижёра. Т.е. по сути - это не отдельные скрипты, а один.

Да, такой подход возможен. Но это не то же самое. Понимая, что прямой вариант невозможен, можно попробовать решить через второй вариант. Но он не всегда применим, т.к. есть скрипты не с открытым кодом, с сложным окружением и т.д. Любители использования dofile могут попробовать запустить так два модуля, использующих переменные с одинаковым именованием.

Т.о. ответ должен быть таким - окружение скрипта, запускаемого в терминале не предоставляет информацию о состоянии других скриптов, не имеет методов запуска/остановки других скриптов, содержащихся в окне списка доступных скриптов LUA терминала.

При этом обмен данными между скриптами сделать можно. А значит существует и третий подход - это иметь два контура в контролируемых скриптах: холостой и рабочий. Тогда скрипт будет отдельной сущностью, его можно отдельно запустить в терминале. Скрипты постоянно работают, но переходят в разные состояния по командам из контролирующего скрипта, через обмен данными. В таком подходе важно обеспечить перехват ошибок, чтобы контролируемый скрипт не "упал". Но опять же - необходимо иметь открытый код скриптов.
утилита для выгрузки котировок, необходимо создать утилиту для выгрузки котировок
 
Если под котировками подразумеваются бары-свечи, то вот писал как-то давно  https://github.com/nick-nh/qlua/tree/master/barsSaver

Совершенно бесплатно.
Запустить скрипт Lua другим скриптом, Запустить скрипт Lua другим скриптом
 
Нет, штатных средств для этого нет.
Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
 
Подниму тему.

Читаем справку:

Универсальный формат позволяет отправлять любые транзакции, если известно их  описание

Описание набора полей транзакции можно посмотреть в окне создания кармана транзакций.

Ок. Смотрим на поля окна для фондовой секции по акциям. Есть такое поле "Код клиента". Собственно оно обязательно для акций.
Вводим в карман транзакций заявку, указывая код клиента. Сохраняем в файл. Смотрим - а кода клиента нет. Ну ладно, бывает.
Пробуем отправить транзакцию в этом формате, добавив поле "Код клиента" (выше же сказано, что поля можно увидеть в окне).

Получаем:

Ошибка выставления лимитной заявки: Не найдено поле "Код клиента" для транзакции "Ввод заявки" по классу "Акции 1-го уровня (эмулятор)"

Убираем поле "Код клиента" - работает. Но как же так, код-то нужен. Код видно только в поле "Примечание" вместе с введённым комментарием.


Внимание вопрос: это так демо-сервер работает или лыжи не едут...

Этот квест с универсальным форматом просто великолепен. Если бы сделали перенос заявки в фиксированном формате, то, видимо, никто бы не задавал больше вопросов. Но нет...
Необъяснимоле чудо
 
Согласен, но иногда просто слов нет. Да и в двух словах не опишешь проблему.
Что возвращает SearchItems
 
Индексы от 0. Т.е. первая строка - это индекс 0.
Чудеса на виражах
 
Да, у меня выделенный IP адрес. Но я очень сомневаюсь в его влияние. В 90-е, ещё можно было ожидать, что как-то будут его учитывать, но уже с 00-х он стал бесполезен. С учётом того, что большинство участников живёт за разными шлюзами, прокси серверами, используя "плюшевые" адреса, совершенно не подозревая какой у них адрес. Подозреваю, что здесь связь по типу P2P с использованием некого уникального ключа-токена установленного соединения.

Ну и если говорить о смешивании пакетов в терминах баз данных, я бы понял если бы было полное соединение, а здесь левое. Только в одном терминале подмешана информация от другого, и только таблица ордеров. Баланс счёта, да и сами счета субсчета не смешаны.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 21 След.
Наверх