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

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

Страницы: Пред. 1 ... 65 66 67 68 69 70 71 72 73 74 75 След.
Счётчик числа сделок в секунду по одному тикеру
 
код увидел.
Мне читать все топики лень, поэтому я выскажусь, возможно что кто-то уже это сказал.
1) Работа через onParam - самый плохой вариант. Там и хранилище очень тяжелое и данный колбек на каждый чих срабатывает
при этом если срез не пришел и не актуальный то он вообще потеряется.
Т е через этот колбек Вы обязательно недосчитаетесь сделок когда-нибудь
---------------------------------
2) Поэтому данную задачу полагаю надо решать через onAllTrade
По крайней мере решение через onAllTrade будет полным, но возможно что есть и более быстрое но не полное.
Поэтому  решение через onAllTrade должно быть базовым а остальные,
если они будут быстрее надо сравнивать с базовым.

--------------------------------
Поэтому предлагаю написать вариант через onAllTrade
и изложить претензии к такому решению (желательно с примерами)
получение параметров индикатора, обращение к line
 
Цитата
Michael Bulychev пишет:
Да, обратно возвращаются только те параметры, которые отображаются в диалоге настроек индикатора.
Вроде бы Ваше утверждение не верно.
Так как параметры line в диалоге отображается а обратно не возвращаются.
Т е не возращаются любые параметры которые таблицы. ВО КАК!
Не работает getParamEx и(или) OnQuote
 
function OnQuote(class_code, sec_code)    
поставьте здесь
вывод в файл class_code, sec_code, p_classcode,p_seccode_eurrubtom
и все будет ясно
if class_code==p_classcode and sec_code==p_seccode_eurrubtom then
Счётчик числа сделок в секунду по одному тикеру
 
хорошо бы увидеть код(алгоритм), а то с нуля как-то лень начинать.
А вот покритиковать  чужой код ( то бишь дать идею) -это пожалуйста.
Разработка торговых роботов, Разработка торговых роботов
 
Если у Вас интересный алгоритм ,
то протестирую его в Амиброкере бесплатно
Если алгоритм удачный,
то отдам скрипт для амиброкера бесплатно
Расчёт индекса РТС
 
если в алгоритме нет ошибки,
то Koef .
получение параметров индикатора, обращение к line
 
Цитата
Egor Zaytsev пишет:
Добрый день.

Settings.line[1].Name в функции OnCalculate не поддерживается.
У меня получается, что в функции OnCalculate не поддерживаются в Settings любые параметры типа таблицы, а не только line.
Как быстрее войти в сделку, Как быстрее получить нужно значение цены или графика для выполнения условия
 
Цитата
swerg пишет:
Если же надо просуммировать 1000 свечей, да еще дифур решить для вычисления значения индикатора - лучше взять готовое значение из квика, если там есть такой индикатор, это и проще и надёжнее, ибо в своём алгоритме мы еще и наошибаться можем, а квиковый индикатор - хотя бы глазами видишь что он на самом деле считает.
Вот тут у Вас ошибочка
Чтобы сложить 1000 свечей надо столько же время сколько для сложения двух.
---------------------------------------
Вопрос же поставленный в начале вообще то не имеет однозначного решения
Он из разряда "Как стать счастливым"
getCandlesByIndex, doesExist что показывает
 
Цитата
Валентин пишет:
2. Параметр close показывает цену закрытия свечи (в случае если свечка старая). Если свечка еще активна, параметр показывает текущую цену спроса?
Вроде бы это цена последней сделки, а не спроса.
Стоплосс и тейкпрофит заявки
 
увы,просто это не сделать.
-------------------------
у меня алгоритм примерно такой:
---------------------
создаю таблицы активных:   заявок, стопов, заявок по стопам.
Далее  в колбеках реализуется обработка этих событий для каждого своя.
При этом реализуется обработка заявок по частям а также зависших заявок по стопам
Кроме того, исполнение заявки контролирую по изменениям депозитов в соответствующих колбеках.
-------------------
CreateDataSource
 
если график не открыт то у Вас ничего и нет без вызова CreateDataSource
Вопросы по OnAllTrade
 
все эти галочки появились давным давно,
когда актуальным было экономить трафик или(и) память компа.
------------------------
скрипты появились гораздо позже.
получение параметров индикатора, обращение к line
 
действительно в setting в OnCalculate исчезают параметры,
которые определены как таблицы.
получение параметров индикатора, обращение к line
 
вот тест :

Settings=
{
 Name = "AAAA",
 Smooth=10,
 line =
 {
   {
     Name = "Hi",
--    Color = RGB(255, 0, 0),
     Type = TYPE_LINE,
     Width = 2
  }
 }


}
print(Settings.line[1].Name)
-------результат--------------
>lua -e "io.stdout:setvbuf 'no'" "test2015.lua"
Hi
>Exit code: 0
получение параметров индикатора, обращение к line
 
Settings.line[1].Name
Вопросы по OnAllTrade
 
Цитата
sam063rus пишет:
ударение на слове: "почти" бо как у каждой сделки на то и есть поле "время" - и скрипты могут на него полагаться На деле же, получается так, что "время можно повернуть вспять". Понятное дело, что "всё можно учесть, отфильтровать, подпилить под собственные нужды" но, когда размер постоянных "допиливаний" и недосказанностей в штатной документации переваливает размер критической массы - не остаётся ничего друго, как давить на "арку", прекрасно понимая, что ничего кроме очередного троллинга от tech support, некоторых разработчиков и банальных троллей-роботорговцев - ждать не приходится.
Не совсем так.
----------------------
Как говорит народная мудрость "После драки кулаками не машут"
Работа с ТВС - это прогнозирование по прошлому Т е "махание руками после драки"
Но прошлое никогда не повторяется абсолютно точно.
Поэтому и для прогноза нет смысла учитывать каждый чих в прошлом.
------------------------
Можно конечно (вернее бесконечно) давить на "арку" или обвинять всех в троллинге ,
а можно сначала определить решаемую прикладную задачу, а потом выпиливать недостающие детали.
----------------------------------------------------
Предполагаю ( исходя из своего опыта решения задач искусственного интеллекта и прогнозирования),
что Вы подменяете задачу прогноза рынков созданием технических средств,
полагая,  что они, каким-то таинственным образом,  позволят Вам решить задачу прогноза.
А это еще надо доказать. возможно то,
что Вы так упорно пытаетесь запрограммировать - очередной танк для первой мировой.
----------------------------
Романтично, но не практично.  
Стоплосс и тейкпрофит заявки
 
Цитата
Александр Евстратенко пишет:
Вопрос заключался можно ли с помощью каких либо флагов или параметров сделки просто и точно определить условие по которому исполнилось стоплосс и тейкпрофит заявка. Алгоритм, рассматриваемый мной, предполагает различные действия в каждом случае.

Анализ по цене сделки понятен, но усложняет программу и может быть не всегда однозначен при малых таймфреймах (например минутки - стопы относительно близки к тейкпрофиту) и малой ликвидности (это почти все на этих таймфреймах, за исключением RI и Si).

Но если нет простой возможности - значит придется анализировать цену сделки ( и,естественно, срабатывание стоплосс и тейкпрофит заявки должно предполагать контроль и доведение позиции до сделки если этого не произошло).
конечно можно проверить таблицу стоп заявок.
Но как я написал ранее, исполнение стоп-заявки может создать активную заявку, которая никогда не исполнится.
возможна другая ситуация, когда заявки исполнилась, то сервер брокера не учел еще изменение Ваших лимитов
Поэтому полагаю, что проблема не в том , чтобы узнать какое из двух условий верно, а в том чтобы узнать как эти условия отразились на вашей позиции.
------------------------------------
А вот играть в зоне предела быстродействия КВИКА да еще на неликвидных рынках - это конечно создает дополнительно адреналин,
но чревато лишь сливом депозита.
Вопросы по OnAllTrade
 
Цитата
Старатель пишет:
Если все сделки заказаны до начала торговой сесссии, то в рамках класса (точнее, торговой площадки) сделки поступают в хронологическом порядке. Либо, если один или несколько бумаг одного класса дозаказаны в течение торговой сессии, то после докачки старых данных новые сделки также поступают в хронологическом порядке.
Цитата
sam063rus пишет:
синхронизация соблюдается только в рамках одного тикера.
Можете привести примеры конкретных ситуаций, когда в рамках одного класса синхронизация не соблюдается?
Мне думается, что наблюдается некоторая путаница
----------------------------
Есть два принципиально разных режима работы с ТВС.
----------------------------
1) Так "Если все сделки заказаны до начала торговой сессии,"
то эти сделки придут одним пакетом или двумя
так как они все есть на сервере и он вам их пришлет.
Т е это случай работы не в реальном времени.
----------------------------------
2) Реальное время, когда сделки уходят с биржи на сервер , а потом с сервера на терминал.
В этом случае никто ни за что не отвечает.
Все идет асинхронно и кто придет первым  никто не знает. ( Почти как на ипподроме )
--------------------
Поэтому надо принять как аксиому ,
что момент прихода информации о сделках не может быть определен до их прихода в терминал.
И этот момент прихода не должен нас интересовать как недоступный для прогнозирования параметр.
Если строить свои программы исходя из этой аксиомы, то все будет просто и понятно.
 
Стоплосс и тейкпрофит заявки
 
Цитата
s_mike@rambler.ru пишет:
стоп лосс 99
тейкпрофит 101 / 2
Выставляется, когда цена равна 100

движение цены:100 -> 101 -> 99
Ваш пример - доказательство моего утверждения:
прочитайте еще раз внимательно:
----------------------------
"1) если выставление стопов соответствует их названию,
то можно определить
2) по расположению цены сделки предшествующей срабатыванию стопа
по отношению к расположению позиции относительно рынка."
------------------------

Теперь разбираем Ваш пример
Условие 1) выполнено.
--------------------------------
переходим к анализу ситуации.
-------------------------
2) по расположению цены сделки предшествующей срабатыванию стопа
по отношению к расположению позиции относительно рынка.
-------------------------
Условия Вашего примера не полные.
Чтобы принять решение, надо определится еще в некоторых характеристиках рынка.
-----------------------------
Сначала пару слов без протокола...
Во-первых, предполагается, что чел, который пытается применить данный метод немного понимает в рынке.
так как "нет защиты от дурака"
-----------------------------
Поэтому считаем, что рынок ликвидный.
В этом случае переход от 101 к 99 не может произойти за одну сделку.
Поэтому после срабатывания стопа ниже 101 смотрим где была сделка перед срабатыванием
Она была выше нашей позиции - т е это тайк профит.
------------------------------------
P.S:
Хочу обратить внимание автора топика на следующее.
Срабатывание стопа не означает совершение сделки по этому стопу.
поэтому сама постановка вопроса изначальна не полная.
Вопросы по OnAllTrade
 
Цитата
sam063rus пишет:
квик не предназначен для стабильной роботорговли по определению. бо как любое его обновление может в одночасье угробить весь депозит, за что разработчики только в очередной раз мило извиняться и пообещают исправить прискорбную ситуацию в новых своих версиях, а брокер тем временем скажет, что, цитирую дословно: "... надо учитывать риски". Ну, а биржа, весело назовёт техническим сбоем и забудет об этом, в отличии от всяких SEC - так и не анулировав сделки.
формально Вы правы, но по-существу нет.
------------------------------------------
Правы в том, что "квик не предназначен для стабильной роботорговли по определению"
Потому что QUIK - это программа для подачи поручений брокеру (по определению)
Хочу обратить внимание на то, что  НЕ для подачи  заявок на биржу, а лишь поручений брокеру.
Это две большие разницы.
-----------------------------
Неправы потому что, разработчики никогда (поправьте если я ошибаюсь) не говорили,
что делают бесплатный инструмент для создания торговых роботов.
Наоборот, периодически подчеркивалось,
что VM LUA  встроена без изменений,
что библиотека  QLUA сделана как копия купала.
а КУПАЙЛ сделан не для торговли я для отображения бесплатной информации клиентам.
т е это некоторе подобие кубиков в детском саду, чтобы было чем заниматься детям.
Ну а если из этих кубиков начинают делать что-то большое, то проблема тех, кто это делает, а не тех , кто сделал кубики.
-----------------------------------------------------------------------------------------------------------
Ну не умеет трактор летать.
Но  если очень хочется, то надо осваивать ЧПУ и проектирование самолетов и из трактора делать самолет.
Разработка торговых роботов, Разработка торговых роботов
 
А я верю челу и рад за него.
---------------------------------------
sam063rus
У меня к Вам вопросик:
Зачем делать открытый проект библиотеки ?
--------------------------------
Вполне серьезно спрашиваю.
Можете сформулировать, что конкретно невозможно реализовать на QLUA с использованием API С?
(Оставим в стороне ошибки и зависания).
Почему спрашиваю?
объясню.
---------------------
По-моему мнению, есть недоразвитость графических и диалоговых средств.
Но это решается сторонними модулями.
В остальном реализуемо любые мечты буратины.
----------------------
Спасибо
Стоплосс и тейкпрофит заявки
 
но уже похвально,что Вы отказались от категоричного утверждения "никак"
Стоплосс и тейкпрофит заявки
 
Цитата
s_mike@rambler.ru пишет:
Цитата
Николай Камынин пишет:
если выставление стопов соответствует их названию,
то можно определить по расположению цены сделки предшествующей срабатыванию стопа
по отношению к расположению позиции относительно рынка.
В общем случае это неверно. В большинстве случаев так прикинуть можно, но далеко не всегда.

Поэтому утвердительно ответить на первоначальный вопрос нельзя.
Это голословное утверждение.
приведите пример, но соблюдайте указанные мною условия.
CreateDataSource
 
2) Чтобы ничего не пропустить,  цикл можно поставить в колбеке  
CreateDataSource
 
1) читаем документацию:  OnInit  Функция вызывается терминалом QUIK перед вызовом функции main().
2) Чтобы ничего цикл можно поставить в колбеке
будет нечто такое:
--------------------------
local ind_old=1
function cd()
  local size=ds:Size()
   for i = ind_old, size do       Candles[i] = ds:C(i)    end      
  ind_old=size
end
Стоплосс и тейкпрофит заявки
 
если выставление стопов соответствует их названию,
то можно определить по расположению цены сделки предшествующей срабатыванию стопа
по отношению к расположению позиции относительно рынка.
 
Вопросы по OnAllTrade
 
вернее сказать,  они становятся как бы новыми сделками не потому что время изменилось, а потому что биржа перенесла их в новый класс
Вопросы по OnAllTrade
 
про вечерние сделки могу сказать следующее ( наблюдал это уже давно возможно что-то изменилось)
Они приходят потому, что на следующий день у них меняется класс
т е они становятся как бы новыми сделками и сервер их обязательно передает в терминал.
Когда сортировал все сделки на лету тоже поначалу в этом застрял. Потом поставил фильтр и все стало ОК
Вопросы по OnAllTrade
 
позволю предложить следующий алгоритм (так cделал бы сам):
-------------------
1) По спискам формируем таблицу играющих инструментов (критерий на ваш вкус)
2) если я ожидаю, что будут запаздывающие данные,
то задаю таблицу неопределенности (т е таблицу памяти N секунд, которые могут корректироваться опоздавшими данными.
3) В колбеке считаем распределение числа сделок по  N последним секундам.
------------------------------------
Ну а далее думаю - и зачем я это все посчитал???
CreateDataSource
 
1) колбек не может ничего сканировать.
по определению -это функция,которая вызывается при наступлении события.
в данном случае - это событие -  получение новых исторических данных  с сервера,
которые дописываются к существующим данным.
------------------
2) Таким образом, колбек позволяет обнаружить приход новых данных, а не ждать их.
Осуществлять обработку при поступлении новых данных.
Приостановить скрипт, возможно?
 
т е вы организуете отдельный луа поток для транзакций к которому делаете очередь заявок
Приостановить скрипт, возможно?
 
Вот примерно Ваш алгоритм:
-------------------------
1) в корутине должен быть бесконечный цикл,в котором вы посылаете и останавливаете корутину.
2) когда ответ пришел вы активируете корутину и она снова посылает и останавливается.
3) кроме этого должна быть очередь к корутине
4) корутина пускает из этой очереди если очередь пустая то останавливается
5) кроме того должна быть запись в очередь
6) при записи в очередь,если корутина стоит то запускается.
Отображать индикатор только на последней свечке?
 
if i==Size() then
--удаляем с i-1
--выставляем на i
end
ЛИНИИ ТРенда и ТА
 
Хочу подлить масло в огонь.
Возможно это уже обсудили, но не увидел.
-------------------------------------
Относительно линий трендов.Гипотеза следующая ( не проверял, лень)
-----------------------------------------
Линии тренда должны смещаться по крайней мере если занимают интервал нескольких торговых дней.
----------------------
Проблема в том, что как всем известно день - это 24 часа и не все из них торговые, и есть еще выходные и праздники,
а следовательно такие дни(часы не отображаются на оси времени в квике.
-----------------------------------------------------
Прямая наклонная линия будет непрерывной и монотонной лишь при равномерном шаге оси времени.
--------------------------------------
В нашем же случае мы имеем разрывы оси времени, следовательно линия тренда тоже должна иметь разрывы,
либо это линия с меняющимся углом наклона.
Т е положение линии тренда при смене тайма будет изменятся, иначе она должна быть ломаной линией.
Quik forever?, Разработка сложной торговой системы 24х7
 
задача решается в такой связке
QUIK+QLUA+API C LUA.
CreateDataSource
 
Цитата
Серж пишет:
ds = CreateDataSource (ClassCode, SecCode, Interval)
repeat sleep(1) until ds:Size() ~= 0 -- тут надо поиграть с задержкой
for i = 1, ds:Size() do
Candles = ds:C(i)
end
надо не со sleep играть, а колбек использовать.
Я в ужасе!! Кто-нибудь отзовитесь пожалуйста и скажите что это неправда!!
 
Нет,
предположим, что нет этого достоинства (передача по указателю)
Что тогда?
тогда остается лишь копирование по циклу.
Т е то что есть без достоинства.
Если язык допускает присвоение таблиц (например MATLAB) то цикл будет неявным,
а если такого оператора нет (например паскаль) то цикл будет явным либо в виде функции.
Т е достоинства лишь предполагают внимательное изучение языка и приобретения навыков мышления на нем.
 
ещё много много раз - потокобезопасные операции, Потокобезопасность.
 
хэш - это число.
В луа используется для хранения строковых данных.
В луа таким образом обеспечивается быстрое сравнение строк, так как сравниваются фактически числа.
Кроме того, хранятся лишь уникальные строки, что исключает избыточное хранение копий строк.
Я в ужасе!! Кто-нибудь отзовитесь пожалуйста и скажите что это неправда!!
 
Одно из существенных достоинств луа это то, что таблицы не копируются а передаются указателем.
Это существенно ускоряет вычисления и экономит память, особенно в микроконтроллерах.
Если нужна копия таблицы, то надо делать явно через цикл.
Как быстрее войти в сделку, Как быстрее получить нужно значение цены или графика для выполнения условия
 
Цитата
ED921 пишет:
Здравствуйте. Тоже пытаюсь разобраться ..) И все-таки подскажите пожалуйста, как лучше на примере простых стратегий (по параболикам, пересечением скользящим) формировать сигнал для заявок? В простых примерах на просторах инета, часто берутся данные индикаторов прямо с графика, можно же наверно расчеты тех же скользяшек делать в скрипте используя (что-то, что лучше?, может про это спрашивалось в топике) и так будет быстрее, чем ждать когда Квик посчитает... Потом, что лучше брать для дальнейших действий в алгоритме, к примеру купили и хотим сразу выставить заявку на продажу, что лучше ждать?, отклика от сервера, что заявка исполнена или можно использовать данные ТЧП или это может быть гораздо дольше.... Простите пожалуйста за то, что неуч еще тот.. не программист я, просто времени свободного навалом, вот и читаю все подряд про QLua )
На примере простых стратегий подсказать очень просто: НЕЛЬЗЯ на простых стратегиях выиграть на бирже.
-------------------------------------------------
Простые примеры на просторах инета для того,
чтобы показать буратинам,
что на поле чудес они могут быстро стать карабасами.
Буратинам обычно этого достаточно.
----------------------------------------------------------
"Мы люди не местные,
детство тяжелое,
учиться некогда,
хотим много денег
Надеемся на халяву и чудо.
Простите нас пожалуйста."
- молитва начинающих игроков.
.
Highlight
 
Вот интересно, что реально хочет сказать автор этой фразы:
" Мы постараемся рассмотреть его (пожелание)..." и "постараемся ... сообщить Вам результаты анализа"
--------------------------
Варианты ответа:
-----------------------
a) Ваш вопрос такой маленький, что без специального старания его никак не рассмотреть.
----------------------
b) Мы очень заняты, но все же постараемся понять , что же Вы написали. Для этого проведем анализ.
----------------------------
c) Мы создадим специальную комиссию , которая тщательно проанализирует Ваше высказывание.
и "постараемся ... сообщить Вам результаты анализа"
----------------------------------------------------------------------------------------------------------

"Над кем посмеялся, тому уже простил, того даже полюбить готов" -И.С.Тургенев
Запуск скриптов lua
 
Могу предположить, что при запуске в автомате Ваши скрипты обращаются к еще не полученным данным.
В результате получаете nil и аварийное завершение.
когда пускаете кнопкой все данные уже подгружены и такого не происходит.
Почему умерает корутина?
 
Viktor MMM
Попробуйте рассмотреть работу Вашей программы,
когда приходят onorder, а корутина еще занята обработкой предыдущего.
-----------------------------------------
Для использования корутины с колбеками надо делать очередь.
Как быстрее войти в сделку, Как быстрее получить нужно значение цены или графика для выполнения условия
 
Параболик в любом случае работает с историей сделок.
Если цена для заявки - все равно,  то ставьте "по рынку"
Аккаунт выставившего заявку, Можно ли увидеть?
 
Объясняю.
против Вас играет маркет-мейкер.
У него алгоритм такой: Если стоит против, то ему биржа платит.
----------------------------------------
Когда Вы якобы обыгрывали -  Вы просто стояли по рынку.
А когда рынок пошел против Вас -  Вы просто этого не заметили.
----------------------------------------
Когда по рынку - то все гуру,
а когда против - то ищут кукловода,
а он - в зеркале.
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
1) на любой взгляд этот цикл "for i=1, 30 do" лишний.

2) Если надо делать такое лишь один раз в сессию то можно и так,
но если это делается всю сессию,
то надо ставить колбек OnQuote(STRING class_code, STRING sec_code).  
Ограничения VM LUA, указываются существующие ограничения при программировании на LUA
 
http://www.kamynin.ru/archives/5851
Объединение массивов
 
такой вариант устроит:
-----------------------------
for i=1,#b do a[#a+1]=b[i] end;
table.sort(a);
for i=2,#a do if a[i-1]==a[i] then a[i-1]=nil end end;
table.sort(a);
Ontrade
 
Цитата
Серж пишет:
Цитата
Alexey K пишет:
почему у меня в этой части скрипта выдает ноль?
А вот если бы указал trade=getItem("trades", getNumberOf("trades")-1) то получил бы номер заявки предыдущей сделки
Потому что в хранилище Квика сделка попадает после отработки колбека. Поэтому внутри колбека getNumberOf возвращает количество сделок без учёта последней. И взять её значение из таблицы функцией getItem невозможно.
Но вот почему у вас ноль, а не nil - вот это вопрос.
Момент записи сделки в хранилище не имеет никакого значения в данном случае.
--------------------------------
В данном колбеке:
------------------------------------
function OnTrade(trade_data)
trade=getItem("trades", getNumberOf("trades"))
message(tostring(trade["order_num"]),1)
end
------------------------
обрабатывается не последняя совершенная сделка,
а сделка, которая находится после в таблице  в ячейке getNumberOf("trades")

----------------------------------------------------------

т е trade_data никакого отношения не имеет к следующим операторам:

trade=getItem("trades", getNumberOf("trades"))
message(tostring(trade["order_num"]),1)
--------------------------------
Т е message выводит в сообщение номер сделки в пустой ячейке таблицы.
(см. мой комент выше)


---------------------------------------
А эта запись:
------------------------------
function OnTrade(trade_data)   message(tostring(trade_data["order_num"]),1) end
--------------------------------
обращается не к хранилищу, а к полученной таблице с параметрами сделки.
Хранилище здесь тоже не имеет никакого значения.
---------------------------------------------------
ноль очевидно потому, что  trade_data.order_num=0.
Новый индикатор
 
Добрый день,
Юрий Жбаков,
А Вы без этого индикатора тренд не видите?
Или есть надежда,
что по индикатору лучше гадать, чем по графику цены?
Страницы: Пред. 1 ... 65 66 67 68 69 70 71 72 73 74 75 След.
Наверх