Спасибо, конечно, большое за объяснение! Но я всё прекрасно понимаю это.
Но ещё раз подчёркиваю, что мне необходимы правила открытия позиции по мной заданной цене.
Это не упрямство, так мне надо. Жаль, что Вы, почему-то, думаете что я что-то там не понимаю.
Я просто в Квике не знаю как мне выставить заявку по той цене, по которой я хочу. Если моя заявка не будет удовлетворена, то я её сниму и переставлю, но только по той цене по которой сочту нужным, т.е. робот рассчитает.
Мне необходимы параметры в структуре или нужные настройки.
Поэтому ещё раз обращаюсь к разработчикам или более опытным трейдерам, помогите разобраться, пожалуйста!
П.С.: Вручную же я могу это осуществить. Но как структуру заполнить?
У меня вопрос: - Почему "Лимитированная" заявка после выставления исполняется не по указанной цене, а по другой, например, в заявке указана цена=67069, а сделка совершается по цене=67075?
Но я же указал, что заявка "Лимитированная", т.е. Лимит-ордер, а отрабатывает как рыночная заявка.
Если вручную выставлять заявки, то всё проходит нормально, но вот загвоздка в программной части.
Что не так? ---------------------------------------------------- local transaction={ ["TRANS_ID"]=tostring(1), ["ACTION"]="Ввод заявки", ["CLASSCODE"]=sClassCode, ["Тип"]="Лимитированная", ["Условие исполнения"]="Поставить в очередь", ["Класс"]=sClassCode, ["Инструмент"]=sSecCode, ["Количество"]=tostring(vol), ["Цена"]=toPrice(sSecCode,price), ["Торговый счет"]=FIRM_ID } if op=='B' then transaction['К/П']='Покупка' else transaction['К/П']='Продажа' end --transaction.COMMENT = "LUA "..op
res=sendTransaction(transaction)
if res~="" then message(res,1) end
------------------------------------------------------------------------- (из таблицы заявок) 18:03:19 Продажа 67069,000000 1,000000 67069,000000 Исполнена (из таблицы сделок) 18:03:19 Продажа 67075,000000 1,000000 67075,000000 Si-12.15
Дмитрий пишет: Поддерживаю пожелания sam063rus Лично меня напрягает процесс создания с помощью небогатых средств QLua для работы с экранными таблицами таких в общем-то стандартных элементов, как кнопки, переключатели, списки выбора, поля ввода и т.п. А пользоваться сторонними библиотеками без крайней необходимости не хочу (из соображений надежности и устойчивости работы скрипта).
Добрый день,
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной. Если по результатам дальнейшего анализа, включающего юридические аспекты, анализ на непротиворечивость с общей политикой компании, никаких возражений не возникнет, мы постараемся включить Ваше пожелание в план доработок при выпуске одной из следующих версий нашего ПО.
Добрый день! Вижу, что пожелание доработать QLua было озвучено в конце января, а как сейчас обстоят дела по кнопкам?
Спрэд в стакане и цены совершённых сделок (Таблица всех сделок), Проблема понимания изменения спрэда в стакане и цены совершённых сделок в Таблице всех сделок
Sergey Gorokhov пишет: Здравствуйте, Помимо того что стаканы и таблица всех сделок не обязательно едут синхронно мне нечего добавить. Если интересуют подробности, рекомендую обратиться к специалистам биржи.
По опыту архивирования стакана за торговый день, вочти всегда со временем всё в порядке, но есть исключение, а именно, когда в у брокера или у Интернет-провайцдера бывает "затор", тогда заявки в стакан попадают в текущее биржевое время с временем прошлым, поскольку они немножко задержались в пути. И тогда в базе стакана светится заявка, например, в 10:22:00 есть заявка со временем 10:21:59, но это бывает нечасто.
Спрэд в стакане и цены совершённых сделок (Таблица всех сделок), Проблема понимания изменения спрэда в стакане и цены совершённых сделок в Таблице всех сделок
Спрэд в стакане и цены совершённых сделок (Таблица всех сделок), Проблема понимания изменения спрэда в стакане и цены совершённых сделок в Таблице всех сделок
Николай Камынин пишет: Вопрос конечно интересный. попробуйте отобразить еще время чтения стакана и содержимое ТТП по инструменту. Тогда возможно будет понятнее.
В том то и дело, что я беру время биржевое у стакана и у сделок, и оно совпадает.
Спрэд в стакане и цены совершённых сделок (Таблица всех сделок), Проблема понимания изменения спрэда в стакане и цены совершённых сделок в Таблице всех сделок
Объясните, пожалуйста, почему такое происходит с ценами или, вернее, почему сделки проходят за пределами спрэда? Покупка по цене 62050, а спрэд находится в диапазоне цен 62076-62099 (Рис. 1). или Продажа по цене 62076, а спрэд находится в диапазоне цен 62052-62071 (Рис. 2).
Михаил, бросьте, пожалуйста, этот спор! Всё что я Вам выслал предостаточно, правда нет отладчика, но его можно скачать дополнительно по названием "decode". Плюс к этому своё воображение включаем и поехали!
Спрэд в стакане и цены совершённых сделок (Таблица всех сделок), Проблема понимания изменения спрэда в стакане и цены совершённых сделок в Таблице всех сделок
Спрэд в стакане и цены совершённых сделок (Таблица всех сделок), Проблема понимания изменения спрэда в стакане и цены совершённых сделок в Таблице всех сделок
Суть проблемы: Почему сделки находятся за пределами установленного на данный момент спрэда (19:00:00)? Правильно ли берётся спрэд из стакана заявок? Что неправильно в коде?
Например: Покупка по цене 62050, а спрэд находится в диапазоне цен 62076-62099 (Рис. 1). или Продажа по цене 62076, а спрэд находится в диапазоне цен 62052-62071 (Рис. 2).
Ссылки на изображения прилагаю.
Рис.1. Копия сделок и спрэд в стакане Рис.2. Копия сделок и спрэд в стакане Рис.3. Фрагмент Таблицы всех сделок (Квик)
Код
sClassCode = "SPBFUT"
sSecCode = "SiU5"
deltaSpread=10 -- рублей
if alltrade.sec_code == sSecCode and alltrade.class_code == sClassCode then
if bit.band(alltrade.flags, 0x1) ~= 0 then
direction="Продажа"
qt = getQuoteLevel2(sClassCode, sSecCode)
priceBid=qt.bid[qt.bid_count+0].price
priceAsk=qt.offer[1].price
if priceAsk-priceBid>=deltaSpread then
f=f+1
ttt=tostring(direction.." Price="..alltrade.price.." bid="..priceBid.." ask="..priceAsk.." V="..alltrade.qty)
local row = t:AddLine()
SetCell(t.t_id, row, 1, tostring(f))
SetCell(t.t_id, row, 2, table_time)
SetCell(t.t_id, row, 3, ttt )
end
end
if bit.band(alltrade.flags, 0x2) ~= 0 then
direction="Купля"
qt = getQuoteLevel2(sClassCode, sSecCode)
priceBid=qt.bid[qt.bid_count+0].price
priceAsk=qt.offer[1].price
if priceAsk-priceBid>=deltaSpread then
f=f+1
ttt=tostring(direction.." Price="..alltrade.price.." bid="..priceBid.." ask="..priceAsk.." V="..alltrade.qty)
local row = t:AddLine()
SetCell(t.t_id, row, 1, tostring(f))
SetCell(t.t_id, row, 2, table_time)
SetCell(t.t_id, row, 3, ttt )
end
end
end
Фёдор Сухов пишет: а вот, если надо вот такой немножко посложней: ------------------------------------------------------------------
Код
PLOT: fastMA=EMA(5,close)
PLOT: slowMA=EMA(21,close)
PLOT: r=RSI(14,close)
BUY: fastMA[1] < slowMA[1] and fastMA[0] > slowMA[0] and while ( r[1]<50 and r[0]>50 )
SELL: fastMA[1] > slowMA[1] and fastMA[0] < slowMA[0] and while ( r[1]>50 and r[0]<50 )
http://strategy4you.ru/prostaya-strategiya-foreks/strategy-forex-metod-bagovino.html Если можно так как я описал, то, возможно я Вам клиента нашёл
первая часть формул будет почти такой же: ------------------------------------ 1) fastMA(1)< slowMA(1) & fastMA(0) > slowMA(0) --------------------------------------------------------------- 2) fastMA(1) > slowMA(1) & fastMA(0) < slowMA(0) -------------------------------------------------------------------- только формулы для BUY и для SELL помещаются в отдельные файлы. Т е Вы создаете библиотеки сигналов BUY и sELL и STOP и TAKE и SHORT и COVER а потом просто указываете в роботе какие сигналы вы хотите использовать. ----------------------------------- Вообще-то я не понял на каком Вы языке написали. могу лишь догадываться, что это дедушка метасток. ------------------------------- Откровенно сказать я его уже забыл основательно . ---------------------------- поэтому поясните , что Вы хотите сделать этой записью: ------------------------------- and while (r[1]<50 and r[0]>50 ) -------------------------------------------
Я знал, что вы об этом спросите, но дело не в языке Метасток или Омега Ресёрч. Я просто хотел реализовать ожидание пересечения уровня "50" индикатором RSI? после пересечения средних, т.е. пересекли и ждём сигнала от RSI, хотя, может быть и одновременное пересечение со средними.
а вот, если надо вот такой немножко посложней: ------------------------------------------------------------------
Код
PLOT: fastMA=EMA(5,close)
PLOT: slowMA=EMA(21,close)
PLOT: r=RSI(14,close)
BUY: fastMA[1] < slowMA[1] and fastMA[0] > slowMA[0] and while ( r[1]<50 and r[0]>50 )
SELL: fastMA[1] > slowMA[1] and fastMA[0] < slowMA[0] and while ( r[1]>50 and r[0]<50 )
http://strategy4you.ru/prostaya-strategiya-foreks/strategy-forex-metod-bagovino.html Если можно так как я описал, то, возможно я Вам клиента нашёл :D
Николай Камынин пишет: 1024=2^10, т е установлен 10 бит. то бишь не старшие, а лишь один - десятый.
Николай, а причем тут 1024? мы же про 1025 и 1026 говорим
Николай, правильно пишет про 10-й бит, только 1 нему ещё добавляется самый первый (о-й) бит, вот и получается число 1025, а если значение=1026, то заполнены 10-й и 2-й биты Двоичная арифметика, пымаш ли.
Всё проверил! Действительно надо было побитово проверять. При старте и в течении дня проскакивают заполненные старшие биты, поэтому и не получалось определять направление сделки.
Вы не правильно проверяете наличие флага, правильно так:
Код
if bit.band(alltrade.flags, 0x1) ~= 0 then
direction="Продажа"
end
if bit.band(alltrade.flags, 0x2) ~= 0 then
direction="Купля"
end
Но ведь по двоичной арифметике 1-й бит установлен в 1, то 2 в нулевой степени равно 1, если 2-й бит установлен в 1, то 2 в первой степени равно 2. Всё должно быть правильно.
Вопрос возникает только при расчёте именно первой сделки при старте, за редким исключением в течении дня, но очень редко.
Небольшое добавление к вопросу выше: ------------------------------------------------------------------------------------------------- Флаги для таблицы Обезличенные сделки
Флаг установлен Значение бит 0 (0x1) Сделка на продажу бит 1 (0x2) Сделка на покупку
В случае, если флаги не установлены, направление сделки не определено. --------------------------------------------------------------------------------------------------
Так вот: А такое бывает, когда флаги могут быть не установлены? Судя по возникшей проблеме, вроде, - да.
Добрый день! Столкнулся с проблемой определения направления сделок из "Таблицы всех сделок", а именно: 1. Это бывает редко, но бывает. Пример кода:
Код
sClassCode = "SPBFUT"
sSecCode = "SiU5"
if alltrade.sec_code == sSecCode and alltrade.class_code == sClassCode then
if alltrade.flags==1 then
direction="Продажа"
end
if alltrade.flags==2 then
direction="Купля"
end
Так вот, например сегодня 28.07.2015 при старте в 10:00:00 первая сделка в текстовом представлении терминала QUIK (версия 6.17.1.17) выглядит так: № Время Цена Кол-во Операция ______________________________________ 1 10:00:00 60648 55 Купля ______________________________________
С помощью программы на Lua не получается определить направление сделки, причём это бывает всегда, а именно, при старте.
Далее, всё работает нормально и все направления определяются правильно, но и после старта случается невозможным определить направление, правда, гораздо реже.
Что же делать? Как быть? Что не так? Как сам терминал определяет направление и, надеюсь, правильно определяет?
С уважением ко всем разработчикам! Заранее благодарю!