nikolz написал: Roffild , если не трудно , дайте ссылку на пакет Alglib , который содержит методы машинного обучения. и перечислите, какие методы обучения в этой библиотеке есть. Спасибо.
Nikolay написал: Нет, математики их не заменят. Но когда программист не знает элементарную математику, это гораздо хуже, если он не знает Git. Тем более, что сейчас Git, Docker, Cuber. А через несколько лет скажут что так не модно. Одно то, что сейчас почему-то все решили, что приложение - это браузер и больше ничего не надо, уже вызывает отторжение.
Настоящие математики на MatLab,R, Python И не о какой оптимизации они не слыхали.
Языки программирование не отличаются от естественных в плане описания. Знать ботанику нужно для программы Селекция. Знать юридические документы нужно для программы Кадры. Математика выше школьной нужно в ограниченном круге. А исходники одних только синуса и косинуса - это заранее просчитанная таблица.
А добавить котика на страничку можно даже без школьной математики. А вот без Git и Docker этого котика никто не увидит.
Nikolay написал: Сюр. Потому как есть алгоритмист, который пишет код, выполняющий то, что могу понять несколько людей на планете. Кто проверять то будет?
Цитата
Владимир написал: Nikolay, Ну, ваще-то алгоритмист пишет не код, а описание алгоритма. :: Я всегда считал себя именно алгоритмистом, но писал и пишу довольно много кода - только потому, что я ещё и программист немножечко.
...сейчас они придут к мнению, что "программисты" не нужны и "математики" их полностью заменят :D И Владимир, ещё раз официально признал, что ОН "- это кто угодно, только НЕ программист."
Цитата
TGB написал: Интересно, временами, наблюдать битву титанов, когда "титанник", практически, уже почти утонул :: .
Да я сам в шоке, на какую правду-матку я их развел :)
Nikolay написал: Справедливости ради, знание современных систем хранения версий - это ни в коем времени не характеризует кого-то как программиста. Я когда начинал, мы учились на бумаге. В первую очередь просто алгоритмы. Потом код на бумаге. И ничего, абстрактное мышление хорошо развивает. То что сейчас без знаний Git не считают кого-то полноценным программистом, то это сюр, т.к. это знание ничего не дает.
Это не "сюр", а требование к качеству кода, который должен проходит ревью. Так что есть минимальные требования к современным программистам для работы в команде.
nikolz написал: Ваша ссылка на сайт - это сайт для чайников по обучению МО на питоне. Вы научились собирать из готовых кубиков на питоне программу, которая, как "черный ящик", ищет решение регрессионной задачи. Прекрасно. ------------------------------------- Но, если для Вас парсинг и МО - одно и тоже , тогда покажите Ваши результаты машинного обучения в LUA, на указанных Вами CSV файлах. ------------------------ или хотя бы разверните TORCH на Lua для начала.
Для меня нет трудностей в использовании Alglib на LUA. Но я скорей всего Python к QLua полностью прикручу, когда Биржа очухается.
И если у тебя из МО получается "черный ящик"... ну... посмотри его код хотябы...
Владимир написал: Roffild, Лапуль, любому дебилу понятно, что пишущий коммиты и багрепорты - это кто угодно, только НЕ программист.
Лапуль, первый раз в жизни слышу, что CSV нужно ПАРСИТЬ! Да у меня весь "малый Синдбад" работает именно с CSV! Именно им, например, я обрабатывал тиковые массивы для отладки своего скрипта, о которых писал. Для справки, лапуль: CSV - это И ЕСТЬ таблица! Для Синдбада (даже малого) это таблица НЕОДНОРОДНЫХ кортежей, с которыми всё ваше стадо не умеет работать даже на уровне постановки задачи - вы из любого говна проблему сделаете, ибо вы ТУПОРЫЛЫЕ!
Лучше сразу признайся, что ты даже не знаешь значения слов "коммиты" и "багрепорты"
Такого фееричного слива я не ожидал
Чтож, Владимир, официально признал, что ОН "- это кто угодно, только НЕ программист." Не знать, как отправить коммит... мда...
nikolz написал: странное у Вас предложение. Вы предлагаете соревнование на питоне. Если очень Вам неймется, то тогда предлагайте на LUA. Форум-то про КВИК, а в нем лишь LUA.
CSV можно парсить только на Питоне? А Владимир нам парсер на ASM покажет, если Мираж действительно его...
Цитата
Владимир написал: Roffild , Лапуль, Вы же сами тут говорили про свои коммиты, да багрепорты - ну какой Вы после этого, в задницу, "программист"? Вы НУЛЬ! Абсолютный нуль.
nikolz, Ах, "МО" сиречь "машинное обучение"? Впрочем, неважно - в любом случае это есть полное и абсолютное говно. А г-н Roffild нам ярко демонстрирует РЕЗУЛЬТАТЫ этого "обучения".
Дед, "коммиты" и "багрепорты" - это не свечки от геморроя! Современные программисты их по-другому используют! Не сливайся так быстро...
Я фанат современного программирования, который рос на "Форуме.Исходников", споря с программистами медицинского оборудования и с создателями Alglib. Я исходный код воспринимаю быстрее обычного текста.
И тут явился Владимир, который БЕЗ ДОКАЗАТЕЛЬНО наплёл, что он крут и Я ему неровня! Чтож... отвертеться у него не получится!
Задача начального уровня для МО: Найти выживших с Титаника train.csv - данные для обучении модели test.csv с gender_submission.csv - тестовые данные с результатом
Нужно для train.csv получить свой "gender_submission.csv" и отправить в Kaggle на автоматическую проверку.
Мой результат с 77.99% на простой 4-х слойной сетке. Точную ссылку дам только после Владимира.
Владимир, отказ и увиливание от решения этой задачи будет расценено, как полная капитуляция и потеря права хоть чё-то вякать про программирование!
Проверочный файл можешь закачать куда-нибудь (админы этого форума додумались ZIP запретить) или сразу на Kaggle. И исходники решения тоже выложи, если твоя модель больше 80% выдаст.
nikolz написал: и еще... TORCH (факел) программа машинного обучения содержащая практически все, что из этого сейчас модно. --------------------- Гугл взял пакет TORCH7 для луа и сделал оболочку для питона. ----------------- разработчики TORCH7 взяли пакет программ для научных исследований на Фортране и сделали оболочку для CИ. ------------------- Прикольно.
nikolz написал: 50 лет - это тот срок, через который методы, известные в науке, доходят до массового потребления.
не... это в 2008г все алгоритмы на полную заработали. Сейчас за 30 дней после публикации на АрХив алгоритм разлетается по всем фремворкам. В месяц могут кучу новых алгоритмов на АрХив выложить. Да, и засрали АрХив своим МО - народ уже бурлил по этому.
TensorFlow - Google Pytorch - Facebook с фиксом классов TF XGBoost и его модификации от Макрософта и Яндекса ...и я тоже накоммитил в этих проектах...
Владимир, поскольку ты всерьёз считаешь себя гением, то докажи это на Kaggle! Хотя бы стартовый "Титаник" осиль...
Владимир написал: ...Нет, лапуль, про Машинное Обучение я тоже не в курсе. Зато я в курсе, что обучение тоже УГРОБЛЕНО! ...И как, при работе этого самого "МО" комп успевает-таки отслеживать нажатие клавиш? Чо, УСПЕВАЕТ?! Большой успех молодого спортсмена! ::
Да поняли мы уже, что бот для шахмат - это достижение для тебя. Считаешь, что алгоритмы не создаются...
Чувак, всё современное МО строится на алгоритмах, недоступных компам до 2000-х. "Градиентный спуск" может распознать тебя в московском метро и предсказать цену акций. "Случайный лес" строит цепочку условий. МО - это то, что обыграет Каспарова. Но ты до сих пор можешь сидеть в своей пещерке. Хотя в твоём возрасте уже сложно разбираться в алгоритмах МО...
Владимир написал: Roffild, Лапуль, я же не спорю - криворукие бездари способны засрать и 32ГБ, и 64ГБ, и вообще всё, что им будет дадено - это же не поможет! Комп ВСЁ РАВНО не будет успевать реагировать на движения мышки или нажатия клавиш пользователей! А вот наш "Мираж", кастрированный до 16К ПЗУ и 4К ОЗУ (это и на программу, и на дебютный справочник, и на "операционку") с процессором КМ-86 ОФИЦИАЛЬНО выполнил норму КМС! Криворуким же бездарям НИЧЕГО не поможет!
И чё? Шахматы для древнего компа... без исходников...
Владимир написал: Roffild, Лапуль, я не спрашивал про "новое" - я спрашивал про ПОЛЕЗНОЕ! Когда комп с поистине ЧУДОВИЩНОЙ памятью и быстродействием не успевает реагировать на движения мышки или нажатия клавиш пользователей, это по-русски называется ПЦ! Повторяю вопрос: ЧТО ИМЕННО ПОЛЕЗНОГО для конечных пользователей сделало всё ваше стадо так называемых "программистов" за весь XXI век?
Тоесть ты тоже из тех придурков, которые не знают, как ОСи распределяют оперативку? Я свои 32ГБ забиваю пополной, что ускоряет МО в разы. Только крики про нехватку оперативы начинаются при попытки сыграть ГТА в 2-3 окна. Своп вруби, если пенсии на оперативу не хватает. Под Виндой 1 прога макс 64ГБ может поправу сожрать (я проверял).
Вообще именно контейнеры позволяют ограничить проге ресурсы компа - вот реальный мир!
* и котики - двигатель прогресса! Мы достигли колоссальных результатов в области доставки контента в глаза и уши пользователя!
Владимир, а есть у тебя вообще критерий "новизны"? По твоей логике, твоё поколение тоже ничего не придумало: Многие алгоритмы берутся из работ математиков 19века. Аэродинамика - баллистика и наблюдение за птичками. Жюль-Верн дал "чертёж" подлодки. А первый компьютер собрала бабка Аида еще в 19веке!
А Грейс Хоппер исправила баг своими руками! - наши уже не могут так исправлять...
Владимир написал: Я же русским языком спросил: что ваше стадо сделало ДЛЯ ЛЮДЕЙ? Какое им дело до ваших вонючих языков?
ДЛЯ ЛЮДЕЙ:
Цитата
...и он отправил это сообщение через Хром (или его клона) с Андройда или Винды...
А для говна твоего типа я ничего не сделал... А такие как ТЫ, ничего не создали. Попробуй сам хоть что-нибудь создать. Стань же первым представителем свой касты "Г-программистов"!
Только прекрати уже использовать ПО, в которое Я багрепорты и коммиты отправил :D
Владимир написал: Повторяю вопрос: за все двадцать с лишним лет нынешнего века всё ваше стадо, вместе взятое, ХОТЬ ЧТО-НИБУДЬ полезного сделало? ДА или НЕТ?
...и он отправил это сообщение через Хром (или его клона) с Андройда или Винды... лицемер ёпт.... Вернись уже в свой DOS! И смартфон выкинь!
Владимир, а... это про мой "тот скулёж"... Это был не "скулёж", а требование соответствия стандартам программирования 2022г, о которых ты даже не вкурсе...
Программирование ПО - это область, знание в которой устаревают за 5 лет. Ты даже последний стандарт С не видел... за то гордо называешь себя "программистом"... мда...
Кратко, что появилось и изменилось за последние только 10 лет: GitHub, CI/CD, Docker, UnitTests, Python3 и т.д. - это лишь малая частичка, что Я использую, как программист.
Владимир написал: Roffild, Дык я же спрашивал молодую шоблу по кличке "программисты", способны ли хотя бы они сами ХОТЬ ЧТО-ТО полезное назвать? И тишина...
Лапуль, я не "один алгоритм придумал", а НАЗВАЛ один ПОЛЕЗНЫЙ алгоритм! Ваше стадо скулящее вообще ни одного назвать не сумело! А в Яндекс я хаживал, когда ещё Илья Сегалович мне по нему экскурсию проводил (была у нас одна совместная работёнка). И мне же принадлежит фраза: "Умер Сегалович - умер и Яндекс". И кто сейчас ковыряется в этом говне, мне совершенно не интересно.
ЗА КАКИМ ХЕРОМ, лапуль, "осиливать хотя бы Python" - мне когда-то хватило одного беглого взгляда про его "динамическую типизацию", чтобы забыть о существовании этого говна навсегда.
Страуструпа, естественно, не читал - только Кернигана, и всегда говорил, что этот бездарь способен только изуродовать гениальный язык. Фраза "указатель на структуру покрывает все "классовые" потуги Страуструпа как бык овцу" тоже моя (и Жванецкого, конечно).
Проблема российских (начиная с 00-х) программистов: они И В САМОМ ДЕЛЕ считают себя "программистами"! А программисты вымерли, ещё в прошлом тысячелетии - осталось лишь скулящее ВОТ ЭТО.
Python - это "клей" для С, С++ и др., поэтому на нем Машинное Обучение сейчас. Но про МО ты не вкурсе... первые попытки хоть и были 1960-х, но это всё баловство до выхода в 2008г карты от Нвидия и TensorFlow в 2011г. Даже школота осиливает Python, а ты не смог...
Именно советские программисты сейчас скулят, что надо изучать Python, Git, C++20, Java... Им BASIC и Fortran подавай :D
Внутри Python на С... если ты действительно Кернигана........
Владимир написал: Roffild, Да был я на Хабре, Господи! Такая же распальцованная шушера правит бал! Я даже поэму об этом написал, даже здесь её, кажется, приводил. И здесь же задавал вопрос: ЧТО ИМЕННО сделано ВСЕЙ СВОРОЙ "современных программистов", ЗА ВЕСЬ XXI век, что могло бы быть расценено как полезное? Мне так никто ничего и не назвал. Может, Вы знаете? Нет, я и сам знаю одну полезную штуку - почти каждый день её использую, иногда сотни раз в день - ну просто прелесть, что за утилита! Только вот нюанс: этот алгоритм придумал и реализовал именно я. И на Хабре написал пару заметок именно про него. Визгу было!..
Да стар ты уже, поэтому колесо от телеги и от машины не отличаешь - это одно "колесо" и ничего нового :D
И почему только один алгоритм придумал? В Яндекс даже курьером не возьмут...
Осиль хотя бы Python на пенсии, а то Страуструпа прочитал и возомнил себя "программистом". Или не прочитал?..
Владимир, иди лучше Хабр почитай, а то и ты частенько несешь бред...
Глянул я на днях исходники OpenCart. Как же он хорош! Для 2008 года :D Сейчас за такой стиль кода кастрируют... А ведь не чурались тогда программисты (и Я) запросы в базу по всем файлам разбрасывать...
Много примеров, но все они мало применимы. Какие циклы. Тайме, чаще всего, организуется по месту, а не где-то в main, в одной точке. Далее, чтобы это было удобно, могли бы хоть функцию обратного вызова организовать, чтобы по завершению она была бы вызвана. Иначе зачем он нужен, чтобы напечатать привет...
А исходя из этого - таймер это объект - шаблон, класс, замыкакние. Который создается там где он нужен и вызывается его проверка. По истечению вызовется функция в контексте определения, что даст захваченную область видимости этой функции и не надо возится с параметрами.
с этим кодом:
Код
local t0 = os.clock()
local t1,t2,t3,t4,t5,t6,t7=t0,t0,t0,t0,t0,t0,t0 -- таймеры
-- функции исполняемого кода
function f1(x1) print(x1..", f1"); end
function f2(x1,x2) print(x1..", f2"); end
function f3(x1,x2,x3) print(x1..", f3"); end
function f4(x1,x2,x3,x4) print(x1..", f4"); end
function f5(x1,x2,x3,x4,x5) print(x1..", f5"); end
function f6(x1,x2,x3,x4,x5,x6) print(x1..", f6"); end
function f7(x1,x2,x3,x4,x5,x6,x7) print(x1..", f7"); end
while true do --бесконечный цикл
local x=os.clock()
if x-t1>1 then f1(x) t1=x end
if x-t2>2 then f2(x,x2) t2=x end
if x-t3>3 then f3(x,x2,x3) t3=x end
if x-t4>4 then f4(x,x2,x3,x4) t4=x end
if x-t5>5 then f5(x,x2,x3,x4,x5) t5=x end
if x-t6>6 then f6(x,x2,x3,x4,x5,x6) t6=x end
if x-t7>7 then f7(x,x2,x3,x4,x4,x6,x7) t7=x end
end
local timers = {
[1] = function(...)
for key, value in pairs({...}) do
print("arg num=", key, " val=", value)
end
end
}
-- Заполнение таймеров одной функцией (влом копи-пастить)
for key, value in pairs({3, 5, 8, 9, 16}) do
timers[value] = timers[1]
end
-- Цикл
while true do
local tm = math.tointeger(os.clock())
for sec, fun in pairs(timers) do
if (tm % sec) == 0 then
fun(tm, sec, "Любое количество", "аргументов!")
end
end
sleep(100)
end
local timers = {
[1] = function(...)
for key, value in pairs({...}) do
print("arg num=", key, " val=", value)
end
end
}
-- Заполнение таймеров одной функцией (влом копи-пастить)
for key, value in pairs({3, 5, 8, 9, 16}) do
timers[value] = timers[1]
end
-- Цикл
local tmlast = 0
while true do
local tm = os.clock()
local fun = timers[math.tointeger(tm - tmlast)]
if fun then
fun(tm, tmlast, "Любое количество", "аргументов!")
end
tmlast = tm
end
Я уверен, что создатель QLua уже уволился из конторы, потому что часть новых функций добавляет уже абы кто, путая названия и порядок аргументов функций. Ну... не составили code-style для QLua...
QLua - попытка ответить на MQL, быстро составленное на коленке.
Колбеки выполняются в основном потоке терминала! - За такое уже надо увольнять!
Ну... поймал ты в колбеке момент отправки заявки... будешь в колбеке ждать сделку блокируя поток терминала, чтоб не спамить заявками? А еще инфа о портфеле может обновиться ДО инфы по сделки! Асинхронная модель Квика!
Проблема в синхронизации последовательности заявка-сделка-портфель, чтоб не отправить лишнею заявку. Моё решение на Гитхабе.
И где гарантия, что в колбек поступает ВСЯ информация БЕЗ потерь? Можно и сделку не поймать...
В момент выполнения колбека пришли еще 5. Какая судьба у этих 5? Вызовутся последовательно все 5 или (вероятнее всего) только последний (или ничто)???
rd.isTradingAllowed() учитывает баг `isConnected() == 1`, разрыв связи, клиринг и выходные!
Код
local rd = require("roffild")
function main()
ISRUN = true
while ISRUN and rd.isTradingAllowed() ~= true do
sleep(1000)
end
message("started")
while ISRUN do
if rd.isTradingAllowed() then
-- здесь основной код
end
sleep(100) -- 0.1сек
end
end
function OnStop(flag)
ISRUN = false
return 3000 -- Timeout
end
Я callback'и не использую ВООБЩЕ! (кроме этого OnStop)
Вообще-то в том же МТ5 при первом входе создается хеш-ключ автологина, который привязан к Комп+Винда+ПапкаПрофиля+итд. Когда хеш-ключ не совпадет - вводи логин и пароль опять.
Но программистам Квик проще свалить на "безопасность" :D
Похоже стандартный MoneyFlowIndex считается особым способом...
ВТБ ао MoneyFlowIndex оба 6 периода Дата: 2021.12.16 20:45 (5 минутки) Расхождении не только там...
Мой вариант:
Код
Settings = {
Name = "Tester",
Step = 0,
line = {}
}
LINES = 1
for x = 1, LINES, 1 do
Settings.line[x] = {
Name = "Line" .. tostring(x),
Type = TYPE_LINE,
Color = RGB(255, 255, 255),
Width = 1
}
end
function Init()
LINES = #Settings.line
return LINES
end
function OnCalculate(index)
local start = O(index)
if start == nil then
return nil
end
return indicMoneyFlowIndex(indicToDataSource(), 6, Size()-index)
end
---Money Flow Index
---@param datasource fnCreateDataSourceReturn DataSource
---@param period number Период
---@param shift number Сдвиг в барах
---@return number
function indicMoneyFlowIndex(datasource, period, shift)
if shift == nil then
shift = 0
end
local stop = datasource.Size() - shift
local start = stop - period
if start < 1 or stop < 1 then
return nil
end
local pos = 0.0
local neg = 0.0
local last = (datasource.H(start) + datasource.L(start) + datasource.C(start)) / 3.0
for x = start+1, stop, 1 do
local tp = (datasource.H(x) + datasource.L(x) + datasource.C(x)) / 3.0
if tp >= last then
pos = pos + (tp * datasource.V(x))
else
neg = neg + (tp * datasource.V(x))
end
last = tp
end
if neg ~= 0.0 then
return 100.0 - (100.0 / (1.0 + (pos / neg)))
else
return 100.0
end
end
---DataSource for Indicator
---@return fnCreateDataSourceReturn
function indicToDataSource()
return {["O"] = O, ["H"] = H, ["L"] = L, ["C"] = C, ["V"] = V, ["T"] = T, ["Size"] = Size}
end
function OnCalculate(index)
local start = O(index)
if start == nil then
return nil
end
if MINSTEP == nil then
local info = getDataSourceInfo()
local secinfo = getSecurityInfo(info.class_code, info.sec_code)
MINSTEP = secinfo.min_price_step
STEP = Settings.Step
-- ..........
end
local result = {}
start = start - ((math.tointeger(rd.round(start / MINSTEP)) % STEP) * MINSTEP) + FIRST
for x = 1, LINES, 1 do
table.insert(result, start - (x * STEP * MINSTEP))
end
return table.unpack(result)
end
23. Интерфейс: "Редактор настроек графика" вообще не знает, что индикатор привязан к другому Инструменту, который при Добавлении можно указать. Узнать и изменить Инструмент через Редактор невозможно.