В чём преимущество OnInit

Страницы: Пред. 1 2 3 След.
RSS
В чём преимущество OnInit
 
OnInit по определению нужен лишь затем, чтобы что-то сделать до main. То есть это идеологический идиотизм.
 
Владимир, Почему?
 
VPM, Что почему? Идиотизм? Потому, что фиксированное имя main для того и придумано, чтобы указать место, с которого начинает работать программа. Кого-то из криворуких бездарей это не устроило, и они изобрели ВТОРОЕ фиксированное имя, чтобы указать... правильно: место, с которого начинает работать программа.
 
Цитата
Если в самой функции коллбэка используется нечто не объявленное ранее, и он сработает, возникнет ошибка.
Поэтому это "нечто" нужно объявить до запуска main.
Я не буду ничего говорить по поводу данной возможности, кроме того, что если так делается, то это очень плохой стиль. Я такое могу представить только через глобальные переменные.
В колбеке идет обращение к ним, а сама переменная объявляется где-то. И это плохо. Не считая самих глобальных переменных, коих у меня нет вовсе.
Каждый блок когда должен оперировать своей областью видимости, объявленной ранее. Да, глобальный контекст есть. Но использовать его как единственно доступный - это пут в ад, где происходят магические преобразования, по причине случайных коллизий в именовании переменных.
 
Цитата
Nikolay написал:
Как и в предыдущей структуре скрипта Lua, после его запуска первоначально выполняются сценарии, описанные в  , если они присутствуют. Далее происходит вызов обработчика с именем OnInit(), если он присутствует. В обработчике OnInit() пользователь имеет возможность инициализировать все необходимые переменные и библиотеки перед запуском отдельного потока. После завершения функции OnInit() происходит создание отдельного потока РМ QUIK, и в этом потоке начинает выполнение функция main(), которая обязательно должна присутствовать в скрипт
Владимир, Все равно не понятно,
вот документация. будет  OnInit()  или не будет.
Из body будет брать и обрабатывать. Так устроен луа, а qlua не приделах.
Я думаю это больше к вопросу с видимостью в самом луа.
 
Цитата
Владимир написал:
OnInit по определению нужен лишь затем, чтобы что-то сделать до main. То есть это идеологический идиотизм.

Не столько до main, сколько до коллбэков.
 
Nikolay, Вот это правильно! К этому Вопросу Может глянете мою веточку что то посоветуете.
 
VPM,
Цитата
VPM написал:
я делаю так

local path;
function OnInit (script_path)

--задаём переменные
path=getScriptPath()

script_path -- другая переменная

end

Так ведь:

Цитата
Алексей написал:
Имеется ввиду, что quik уже за Вас вызвал getScriptPath() и результат Вам подсовывает в качестве параметра при вызове OnInit(script_path).А уж будете Вы использовать этот "подарок" внутри OnInit или нет, дело Ваше  

Зачем Вам script_path от OnInit?
 
Ziveleos, Мне не нужен это просто пример, что можно писать другие переменные.

суть другая переменная local path;
локализуется в body а присвоение идет в  OnInit
я так делаю когда переменных >200, если меньше лучше делать как описал Владимир.



function List.popfirst (list)   local first = list.first;
  if first > list.last then
  --error("list is empty")
  return nil
  end
  local value = list[first]
  list[first] = nil -- чтобы разрешить сборку мусора
  list.first = first + 1
  return value
end

Ну вот пример от автора луа   list[first] = nil -- чтобы разрешить сборку мусора

local path=nil;
 
Да просто задолбали эти криворукие своими вонючими потоками. Шибка вумные, ручонки чешутся впендюрить какую-нибудь херню, в результате простейшая, тривиальнейшая прикладная задача начинает глючить так, что и в кошмарном сне не приснится. Нет у меня никакого OnInit  и не будет - это говно тупо нафиг никому не нужно. И коллбеки нафиг не нужны - тем более, что все они глючат со страшной силой. Единственный коллбек, который использую я - OnTrade, некоторые работают даже без него. А если уж припёрло использовать какую-то хрень, которая аж до мейна начинает срабатывать, так пусть флаг поставят, анализируют его, и пока он не установлен, сразу из этого коллбека вылетают. А где надо, установят его в МОЖНО. И нет проблем даже с такими маразматическими коллбеками. Уровень подавляющего большинства посетителей форума близок к абсолютному нулю, а туде же - потоки им подавай. НА ХРЕНА ОНИ ВАМ?! С переменными та же хрень: мой скрипт может обслуживать несколько тысяч тикеров, так что переменных там, возможно, миллион - и нет проблем. Вы СВОИ задачи решайте, торговые, а не занимайтесь разной хернёй с потоками,, коллбеками, библиотеками и прочим онанизмом.
 
Цитата
Владимир написал:
Уровень подавляющего большинства посетителей форума близок к абсолютному нулю, а туде же - потоки им подавай. НА ХРЕНА ОНИ ВАМ?! С переменными та же хрень: мой скрипт может обслуживать несколько тысяч тикеров, так что переменных там, возможно, миллион - и нет проблем. Вы СВОИ задачи решайте, торговые, а не занимайтесь разной хернёй с потоками,, коллбеками, библиотеками и прочим онанизмом.
Целиком поддерживаю Вас.
Не от хорошей жизни колупаемся в носу и лезем не туда.
Так поделитесь опытом.
 
VPM, Опыт может быть только у каждого свой собственный, пока свои шишки не набьются - ничего не поможет. Просто нужно заниматься СВОЕЙ конкретной задачей, проблемы решать по мере их возникновения и ничего не делать на всякий случай. Зачем МНЕ нужет OnInit, зачем МНЕ нужна пассивная заявка, зачем МНЕ нужны свечи, зачем МНЕ нужны потоки, зачем МНЕ нужны коллбеки и т.д. И тогда вдруг окажется, что 99% проблем исчезнут, так и не возникнув.
 
Владимир, Да это вы правы Опыт необходим, но ведь если не учить не подсказывать, то и опыт будет соответствующий.

Я в данном случае не о себе, о молодежи.
У меня все в порядке с наставниками всегда везло, и вспоминаю их с огромной благодарностью!

Да и зарегистрировался  на форуме чтоб исправили ошибку в стакане. Вроде нашли!
 
VPM, Я тоже зарегистрировался  на форуме, чтобы помогли разобраться с нюансами нового для меня языка, и мне в этом очень помогли. Потом я сам некоторое время считал своим долгом помогать новичкам. Но никакой наставник не заменит собственного опыта. Мне всю жизнь везло на учителей, но вот конкретно по программированию в институте был один семестр, да ещё и с зачётом, а не с экзаменом. Короче, знаний не было ваапще. И только после института, и даже после армии я увлёкся программированием - фактически самоучка. Нет, наставники были, и даже очень мощные, но все они были коллегами, мы вместе РАБОТАЛИ, и только это могло дать настоящий опыт. Да и чему тогда могли учить? Проминь-2, Минск-32, БЭСМ-6, Фортран, Алгол, Бейсик, ассемблеры разных видов, ничтожные по современным меркам память и быстродействие. Потом появились первые персоналки, не сразу Интеловские, появился гениальный язык С, любовь на всю жизнь. Вот это и была совершенно потрясающая Школа, когда наставники учились вместе со своими подопечными. Сейчас этого и близко нет. В школы вроде как ввели информатику, но достаточно бегло полистать любой учебник, чтобы понять: ЭТО способно только навсегда убить желание заниматься программированием. Потом уже я сам пару раз был руководителем диплома у выпускников-программистов. Один потрясающе талантливый, у него уже диплом представлял собой серьёзную разработку - что называется, программист от Бога. Второй... нет, диплом он защитил, и даже на отлично, но сразу было видно, что это не его сфера деятельности, сколько бы его ни наставляли. В общем, программисты вымерли. Как мамонты.
 
Цитата
Ziveleos написал:
давно интересовал этот вопрос: какая разница между body и OnInit, и зачем он вообще нужен?
Выше в этой ветке давно же уже написано: из так называемого body не все функции QLua корректно работают (во всяком случае на такое натыкались ранее; речь про разные хитрые функции типа создание DataSource или чего-то такого; изменилось ли что-то с тех пор - не знаю, если найти на форуме на что именно жаловались - то можно проверить)
В то же время на момент выполнения OnInit() уже точно любые функции QLua будут работать корректно. Плюс бонусом передается путь до скрипта, если он требуется.

Т.е. вообще говоря, OnInit() QUIK вызывает так сказать осознанно, когда все готово и известно, что такая функция в скрипте определена.
Но вот чтобы узнать какие callback-функции в скрипте определены - QUIK (да и  вообще Lua) вынужден весь скрипт полностью выполнить, это определит для Lua имеющиеся в скрипте функции, про них станет известно. И, разумеется, при этом выполняется тот самый код, который написан мне функций и который я когда-то назвал [BODY] в своей документации описания QLua. И термин этот прижился, так теперь все его и использ0уют.

Вот и вся разница. Чем пользоваться - да все равно. Если ваш инициализирующий код корректно работает в [BODY] вам такой стиль нравится - то и замечательно. Если хочется чего-то этакого - пользуйтесь OnInit(), если так вам удобнее понимать лдогику собственного скрипта. Скорее вопрос привычек, короче. Ну за исключением нюанса вызова некоторых функций. Но если вы с таким нюансом не сталкиваетесь - значит либо вы такие функции не используете, либо QUIK этот момент давно починил.

Еще раз.
Выполнение [BODY} - чисто технический момент.
Т.е. QLua сначала просто выполняет Lua-скрипт, при этом - главное - в глобальной области видимости для Lua-машины появляются определенные в скрипте callback-функции. После этого QLua уже может узнать какие callback-функции определены в скрипте и после знает какие callback-функции надо вызвать, т.к. они есть, а какие не надо, т.к. их нет. Вот и все, вот и весь "секрет".
А то, что при этом выполняется остальной код, расположенный вне функций - просто неизбежность, никакого глубокого смысла в том нет.
 
Цитата
swerg написал:
Цитата
Но вот чтобы узнать какие callback-функции в скрипте определены - QUIK (да и  вообще Lua) вынужден весь скрипт полностью выполнить, это определит для Lua имеющиеся в скрипте функции, про них станет известно.
Вы уверены в тот, что для нахождения всех колбек надо выполнить скрипт.
---------------
Не знаю как реализовали разработчики, но полагаю, что это не обязательно делать.
Определение существующих колбеков можно делать либо один раз после загрузки скрипта и формировать специальную таблицу указателей (давно это тестил и вроде бы пришел к такой схеме)
Но можно это делать налету при приходе соответствующих данных в терминал.
----------------
Относительно Вашего замечание "делайте как нравится"
Я привел ранее аналогию перекрестка. Можно ходить на зеленый, а можно - как нравиться - с закрытыми глазами.  Если потом откроите и поймете, что в больнице, ну тогда будете ходить по правилам. Но может Вам и повезет.  
 
Цитата
Вы уверены в тот, что для нахождения всех колбек надо выполнить скрипт.
Lua  - интерпретируемый язык, сначала он должен заполнить пространство имен (скомпилировать кусок кода), только потом что-то вызывать. Правда это не выполнение скрипта, конечно. Т.е. если сделать определение некой глобальной переменной внутри какого-то метода, то будет ошибка, да.
 
Nikolay, Бонусом передается путь до скрипта, если он требуется. ХОСПИДЯ! Из-за этой вот херни ковыряться в кишках QLua?! Создавать себе проблемы, а потом героически их решать? Разгадывать это СТРРРАШНУЮ ТАЙНУ? Что, трудно скинуть все нужные файлы в ту же папку, в которой лежит сам скрипт? У меня изначально так и сделано: в одной папочке лежит скрипт со всеми причендалами для одного брокера, в другой - точно такой же скрипт, но для другого брокера и даже другого Квика, в третьей - для того же самого Квика и брокера, но там я занимался отладкой алгоритмов скрипта в тестовом режиме, без реальных сделок. Во всех трёх случаях код скрипта совершенно одинаковый, и все "проблемы" с файлами решаются автоматически. Для лог-файла, например, код выглядит так:
F=io.open(getScriptPath().."//LOG.TXT","a");
И ВСЁ, БЛИН!

С какого бодуна "чтобы узнать какие callback-функции в скрипте определены - QUIK (да и  вообще Lua) вынужден весь скрипт полностью выполнить"? СЧИТАТЬ,  не выполнить. Скомпилировать, на худой конец. Это же ИНТЕРПРЕТИРУЕМЫЙ код, бумажка с инструкциями! На хрена их ВЫПОЛНЯТЬ?! Какой идиот изобрёл эти "нюансы вызова некоторых функций"? Какая, в жопу, "неизбежность"?!

Вон, даже nikolz проняло, не говоря уже про Nikolay. :smile:  
 
Кстати по по поводу пути. У меня путь определяется так:
local path      = (_G.getScriptPath and _G.getScriptPath() or (arg[0]:gsub('[^\\/]*$', '', 1):gsub('\\', '/'))) or ''
if path == '' then path = './' end

И это не в какой-то функции, а в самом начале скрипта. И как-то не вижу я проблем, чтобы getScriptPath не работал. Так что да, особого смысла в OnInit не вижу. Хотя, когда разбирался с окружением qlua, тоже использовал.
 
Цитата
Владимир написал:
Вы СВОИ задачи решайте, торговые, а не занимайтесь разной хернёй с потоками,, коллбеками, библиотеками и прочим онанизмом.
Нужно в Quik их записать Золотыми буквами :lol:

Только задачу как решать если нет даже основания.

Приведу аллегорию от инженеров:
Пришел в магазин купить велосипед, продавец отвечает на полке педали под полкой колесо, еще есть спицы
соберите и на здоровье ездите.

Это подход сервиса от программистов, по крайней мере в реализации Квик.

Вы посмотрите, на мой взгляд "Некчемный" вопрос, вызвал дискуссию на две страницы уже спецы подключились.

Сам луа читает все подряд сверху вниз, обернули в функцию "ни чего не вижу ни чего ни кому не скажу",
Все что сделали Квиковцы вызов от терминала.
Кому на до пользует не на до забыл.

Проблем у них выше крыше, одна вон реализация SearchItems чего стоит пойди догадайся (хоть примеры добавили).
 
Цитата
Nikolay написал:
Кстати по по поводу пути. У меня путь определяется так:local path      = (_G.getScriptPath and _G.getScriptPath() or (arg[0]:gsub('[^\\/]*$', '', 1):gsub('\\', '/'))) or ''if path == '' then path = './' endИ это не в какой-то функции, а в самом начале скрипта. И как-то не вижу я проблем, чтобы getScriptPath не работал. Так что да, особого смысла в OnInit не вижу. Хотя, когда разбирался с окружением qlua, тоже использовал.
Так Вы его исключили, у вас или или это. Если его нет то идет конструкция or (arg[0]:gsub('[^\\/]*$', '', 1):gsub('\\', '/'))) or '' еще в глобальное поле занесли.
 
Да и ключевое что OnInit вызывает термина квик.

Надо вызываем не надо не вызываем. Не глючит и "слава Богу".
 
Цитата
Так Вы его исключили, у вас или или это. Если его нет то идет конструкция or (arg[0]:gsub('[^\\/]*$', '', 1):gsub('\\', '/'))) or '' еще в глобальное поле занесли.
Потому что одни и те же скрипты могут запускаться не только в терминале Квике. Поэтому если нет в глобальном контексте метода getScriptPath, то значит вызов из командной строки, а значит надо разбирать аргументы, коих в терминале нет.
 
VPM, Имнно так задачу и решать - это же МОЯ задача. Да, продавец првильно говорит: соберите и на здоровье ездите. Проблема в том, что педали разломаны, спицы погнуты, а колёса пробиты. А на дискуссии на две страницы я насмотрелся выше крыши. Кстати, что за спецы подключились? Кстати, про SearchItems тоже лучше забыть.
 
Nikolay, Ну это вы сделали под свои задачи методом исключений.  
это один из подходов.

Если не лезть в дебри  то
Смысл Вы спрятали getScriptPath() от луа, так как функция эта qlua который еще не запущен.
 
Цитата
Смысл Вы спрятали getScriptPath() от луа, так как функция эта qlua который еще не запущен.
Что значит не запущен.

Напишите скрипт из одной строки

message(getScriptPath())

и выполните его в терминале. Никакого OnInit нет.
 
Nikolay, Я не корректно написал, запускаем не в терминале а в луа, и прячем от самого луа или вашем случае от др.

Ваш пример это один из вариантов, OnInit другой, я прячу в функцию которую вызываю  где мне нежно.

в тестах на луа свой делаю прописывая в нем полный путь getScriptPath().

Наверняка придумано еще что то.
Здесь нет предмета для обсуждения на мой взгляд, пишем отталкиваясь от задачи.
 
При нажатии кнопки "Запустить" (скрипт) он именно выполняется интерпретатором Lua, предварительно переводится в байт-код. Весь полностью код.

Наверное не все помнят, но привычная нам запись
Код
function MyFunc()
{
}


на самом деле синтаксический сахар. Фактически же это означает (и эквивалентно)
MyFunc = function ()
{
}

т.е. определяется глобальная переменная с именем MyFunc, которой присваивается значение с типом "функция". (Да вы сами посмотрите через type())
А чтобы переменной присвоить значение - скрипт надо выполнить.
 
Уважаемые форумчане вот инструкция от разработчика.

Использование Lua в Рабочем месте QUIK

1. Возможные подходы написания скриптов Lua для плагина QLua в Рабочем месте QUIK

Для запуска добавьте необходимый скрипт и нажмите на кнопку
«Запустить». Запуск скрипта всегда начинается с обработки тела скрипта вне каких-либо
функций, обозначим его . Можно выделить три подхода при создании Lua скрипта:

1. Вся необходимая логика описывается в области . В этом случае сценарии,
описанные в теле скрипта вне каких-либо функций, после запуска выполняются только
один раз, и скрипт переходит в состояние «Остановлен». Данный подход применим для
Lua скриптов, целью которых является разовый подсчет необходимых данных. Скрипты с
такой структурой выполняются в основном потоке РМ QUIK, ...

2. Вся необходимая логика описывается в функции с предопределенным именем
main(). В этом случае после запуска скрипта первоначально выполняются сценарии,
описанные в , если они присутствуют. Далее в отдельном потоке выполняется
функция main(). ...

3. Событийная модель. При выборе данного подхода предоставляется гибкая среда
выполнения пользовательских сценариев внутри QUIK, позволяющая мгновенно получать
интересующие события от РМ QUIK, производя нужную обработку этих событий. Для
обработки того или иного события необходимо в скрипте прописать функцию
с предопределенным названием. Описание данных функций приведено в разделе 2.2
«Функции обратного вызова» Руководства пользователя Интерпретатора языка Lua.
Скрипт Lua может содержать несколько функций с предопределенными названиями,
являющимися обработчиками событий, таких как новая сделка, новая обезличенная
сделка, изменение котировок и т.д

Как и в предыдущей структуре скрипта Lua, после его запуска первоначально
выполняются сценарии, описанные в , если они присутствуют. Далее происходит
вызов обработчика с именем OnInit(), если он присутствует. В обработчике OnInit()
пользователь имеет возможность инициализировать все необходимые переменные и
библиотеки перед запуском отдельного потока. После завершения функции OnInit()
происходит создание отдельного потока РМ QUIK, и в этом потоке начинает выполнение
функция main(), которая обязательно должна присутствовать в скрипте. Скрипт
считается работающим, пока работает функция main(). При завершении работы
 
VPM, На заборе тоже много чего написано. Особенно про событийную модель.  
 
Цитата
VPM написал:
Уважаемые форумчане вот инструкция от разработчика.
И что? что вы хотели этим сообщением сказать?
 
Прикольно, буря в стакане.
Казалось бы все просто.
Сам вопрос темы не корректный
спросили " в чем преимущество OnInit" , но забыли указать с чем сравнивать.
Написал три возможных варианта
Касалось бы все ясно.
Если ты чайник в программировании, то делай как рекомендуют разработчики КВИК и спи спокойно.
Нет, начинается треп а зачем, а мне насрать, а че это за такие преимущества и бла-бла бла.
 
nikolz, Да с чем угодно. НЕТ у этого говна никаких преимуществ. Нет, И БЫТЬ НЕ МОЖЕТ. Это идеологический кретинизм. Я знаю, что Вы чайник в программировании, но даже Вам не следует тупо делать как рекомендуют разработчики КВИК - они, мягко говоря, не боги. Тем более, что они как раз меньше всех заинтересованы в качестве софта.
 
Уважаемый swerg, ветка называется преимущество OnInit.

Не понимая смысл разработки говорить не о чем. Вот я и вытащил варианты от разработчика.

Где тут вообще преимущества?
От отталкиваемся от собственной разработки принимая один из вариантов.
В чем дискуссия?

Луа  на писан таблицами. Читаем другого разработчика.
Цитата
swerg написал:
А чтобы переменной присвоить значение - скрипт надо выполнить
А это вообще глубочайше заключение, которое нужно вывести в отдельную тему и обсудить.

Только это и хотел сказать.
 
Цитата
Владимир написал:
появился гениальный язык С, любовь на всю жизнь
Что же вы на ненавистном вам луа пишите? Можно же в одну строчку загрузить библиотеку, написанную на С. И все остальное делать уже там. Регистрировать колбеки - lua_register. Дергать функции quik через lua_pcall. И никакого тормозного интерпретатора.
 
paluke, У меня никогда не было ни секунды сомнения, что писать нужно только на чистом Луа, и в начале своего появления здесь я раз сто подробно описывал - почему. НИКАКИХ библиотек! Только так можно почти не обращать внимания ни на версию Квика, ни на версию языка. И за всё время я помню только один случай правки кода по этой причине, когда местные умельцы заменили loadstring на load. Для столь примитивной задачи как торговля гениальный язык С тупо не нужен - достаточно даже такого дерьма как Луа. Написал и забыл. И не надо ничего грузить, ничего регистрировать, ничего компилировать, ничего дёргать. А тормозной интерпретатор позволяет спокойно обслуживать сотни и даже тысячи тикеров - выше крыши для любого трейдера. Да, у меня стоит ограничение не более двух заявок в секунду, но тут уж никакой гениальный язык не поможет.
 
Цитата
Владимир написал:
Единственный коллбек, который использую я - OnTrade, некоторые работают даже без него.
  Вы до сих пор используете OnTrade? Зачем реагировать на полуфабрикаты (колбеки), когда можно использовать текущее состояние QUiK (таблица по сделкам)?  Вы же не занимаетесь FTP (зачем? и точно бессмысленное занятие этим в quik)? Чем проще, тем надежнее.
 
Владимир, Простите что вмешиваюсь в столь полезный диспут.

Но не могу не сказать, что в постановке задачи на мой взгляд есть ошибка. Вот здесь.
Цитата
Владимир написал:
А тормозной интерпретатор позволяет спокойно обслуживать сотни и даже тысячи тикеров - выше крыши для любого трейдера.
Ни Каму не нужны сотни молчу про тысячи тикеров в механической торговой программе (МТС), тем более брокеру!

Для отбора тикеров их фильтрации используют другие программы,
а в МТС тикеры  гонят уже зная чем торговать, как торговать, за с чет кого торговать!

Маркет  (ММ), где то специалист, ММВБ автоматически сводит заявки.
Для поддержания десятка тикеров требуются огромные средства когда их не хватает MM запрашивает помощь у других.

Через квик торговать FTP и жаловаться на быстродействие мягко говоря бессмысленно,
по одно только причине MM РАЗРЕШЕНО делать задержки. Высокочастотники сидят в подвалах биржи.

Но а для других стратегий 1млсек за глаза!
 
Цитата
VPM написал:
Через квик торговать FTP и жаловаться на быстродействие мягко говоря бессмысленно,
Дааа... Дискуссия приобретает все более неожиданные повороты.
FTP - это протокол передачи данных.
то, что ви иметь ввиду называется - HFT.
 
Kalmar, Да спасибо за поправку.
 
TGB, Да, я до сих пор используете OnTrade, намерен и дальше его использовать - это и проще, и быстрее, и надёжнее. Зачем бегать по таблице сделок, если есть прерывание? А если этих сделок сотни или тысячи за сеанс? Мой скрипт экономит своё время...

VPM, Почему это "никому не нужны сотни и тысячи тикеров"? У меня на долларовом рынке только в портфеле было с полсотни тикеров, а у моего друга и за сотню переваливало. И сделок у меня бывало под тысячу даже в боевом режиме. А уж тикеров, за которыми скрипт следил и вообще было тысячи полторы-две. При этом HFT меня никогда не интересовал - не для Квика эта технология, и вообще дурацкая.
 
Владимир,

Нет гонять следить можно, Здесь ключевое стабильно зарабатывать.

Те ребята с которыми мы имеем дело на рынке, свои сделки готовят, читают рынок на раз два, инсайд, закрытые каналы и т.д.
Там где серьёзные средства, существуют   отдельные отделы, следящие за RM, отдельно трейдер, аналитический отдел, в общем структура.  

Нет укусить откусить конечно можно и Ваш подход наверняка имеет место быть об это толь ко Вы можете судить.

Я же говорю о стабильности.

Ну к примеру была у меня сетка нашел алгоритм сам слепил торговал брент на минутках.
Набирала до открытия ам. рынка "мама негорюй" Просыпались капиталисты все отберали еще и мои просили.

Скажите Сетку нельзя торговать очень широко применяется с широким спредом и более серьезными средствами.  
 
VPM, Да не смешите Вы мою задницу. Время от времени даже солиднейшие компании с целой армией аналитиков высочайшей квалификации терпят миллиардные убытки. а инсайд вообще никакого отношения к торговле не имеет - это, по сути, жульничество. Другое дело, что с деньгами намного легче зарабатывать, чем без них. А стабильность - это минимизация рисков. И, соответственно, снижение вероятности заработать много и быстро. Сеточные алгоритмы как раз и относятся к высокорисковым.
 
Владимир,
Цитата
Владимир написал:
Время от времени даже солиднейшие компании с целой армией аналитиков высочайшей квалификации терпят миллиардные убытки
Недавний пример с "Colden Sachs" с ее хедж фондом или современные банкротства инцест банков.
И что Одни капиталисты обули других. Или Ваш супер скрипт поучаствовал.
"Зин а деньги где"?

Цитата
Владимир написал:
Другое дело, что с деньгами намного легче зарабатывать, чем без них. А стабильность - это минимизация рисков
Согласен целиком и полностью.
Цитата
Владимир написал:
снижение вероятности заработать много и быстро
Вероятность Выигрыша в начале нужно перетянуть на свою сторону - минимизация рисков один из подходов.
А Вы мне помнится отрицаете обработку старых данных.
Цитата
Владимир написал:
Сеточные алгоритмы как раз и относятся к высокорисковым.
Не знаю насчет, риска опыт мал, только в планах докрутить хорош больно во флате.
Но есть подозрение что Маркет Мейкер активно пользует или ребята обеспечивающие ликвидность.
 
VPM, Я вообще без понятия, в чём там мой скрипт участвует: денег дал - и пусть выкручивается как знает. Когда писал, стремился как раз максимально снизить риски, так что особых звёзд он с неба не хватает, но работает очень надёжно, и я давно перестал следить, чем он там занимается - всё равно он торгует лучше меня.

Я и сейчас отрицаю обработку старых данных. Разве что режим работы по историческим данным использовал для черновой отладки скрипта.

Естественно, любой, кто может, всегда с радостью откусит кусочек у соседа. А фьючерсы и вообще игра с нулевой суммой. Для меня в своё время было полной неожиданностью, что техника торговли на срочном рынке радикально отличается от фондового, и я тогда довольно прилично просел, пока отлаживал торговые алгоритмы.
 
Цитата
Владимир написал:
Зачем бегать по таблице сделок, если есть прерывание?
   Не надо бегать по таблице сделок. Достаточно сохранять ее размер и только если он изменился, читать только новые записи.
 
TGB, Какая разница, по старым или по новым? По ней нужно бегать, чего-то там сохранять, чего-то там искать. И как часто? У меня, например, блокируется подача подача новой заявки по тикеру, если предыдущая не реализована или не снята. А если у меня эта заявка будет реализована в сотню сделок? В том-то и прелесть OnTrade, что НИЧЕГО не нужно делать, ни за чем не нужно следить, пока тебя не пнут под зад прерыванием.
 
Цитата
Владимир написал:
пока тебя не пнут под зад прерыванием
  Зачем вам прерывания? Вы же программу пишите не для управления системой зажигания автомобиля :smile: ?
Цитата
Владимир написал:
И как часто?
  Наверное, один раз в три секунды скорее всего будет достаточно.
 
TGB, Затем, что сделки приходят в случайные моменты времени, алгоритмически они и есть прерывания. Точно так же, как и реакция на нажатия клавиш или клики мышкой. И мой скрипт обрабатывает и то, и другое именно как прерывания. И программу я пишу не для управления системой зажигания автомобиля, а для ещё более простой задачи торговли через Квик. И не моё собачье дело, когда придёт сделка по моей заявке: через секунду или через час. И не скрипта дело - когда придёт, тогда и обработает.
 
Цитата
Владимир написал:
Затем, что сделки приходят в случайные моменты времени, алгоритмически они и есть прерывания.
 Если я правильно понимаю, вам в скрипте надо знать состояние вашего счета по сделкам. Зачем вам обрабатывать колбеки сделок в случайные моменты времени (дополнительный "геморрой"), когда вы можете посмотреть (только) изменения в таблице сделок (конечный результат), и это можно сделать просто и эффективно. Если между просмотрами таблицы сделок, возникнет несколько новых, то вы их все равно увидите. Задержка 2-3 секунды (из-за цикла просмотра таблицы) в получении состояния по сделкам вряд ли, для вас существенна, так как QUIK точно не HFT терминал.
Страницы: Пред. 1 2 3 След.
Читают тему
Наверх