Здравствуйте. Работаю на фьючах на московской бирже. 1.Параметр type - принимает параметр лимитированная или рыночная. Я так понял рыночной заявки какбы не существует? параметр type не обязателен, Все заявки всегда лимитированные и надо всегда указывать price? Если да, то к чему тогда существует параметр type? 2. Предположим мне необходимо сейчас открыть позицию, выставить стоп и тейкпрофит. Это нормально считать стоп, тейкпрофит на основе параметра close из функции getCandlesByIndex последней свечи (5минутка) или есть какие то лучшие варианты?
Sergey Gorokhov пишет: Здравствуйте, Да верно на ФОРТС не существует рыночных заявок. Но QUIK умеет их эмулировать. Для этого нужно поставить Type=M и указать цену 0
А на опционах появится эмуляция рыночных заявок? И почему её не делали до сих пор?
Можно чуть подробнее про эмуляцию. Где она совершается на терминале пользователя или сервере брокера? При эмуляции используются параметры инструментов PRICEMIN и PRICEMAX или другие?
Валентин пишет: Здравствуйте. Работаю на фьючах на московской бирже. 1.Параметр type - принимает параметр лимитированная или рыночная. Я так понял рыночной заявки какбы не существует? параметр type не обязателен, Все заявки всегда лимитированные и надо всегда указывать price? Если да, то к чему тогда существует параметр type? 2. Предположим мне необходимо сейчас открыть позицию, выставить стоп и тейкпрофит. Это нормально считать стоп, тейкпрофит на основе параметра close из функции getCandlesByIndex последней свечи (5минутка) или есть какие то лучшие варианты?
1) этот параметр появился еще до того, как стали торговать фьючерсами. ----------------------------------------- 2) Стоп и тайк профит - это условное выставление лимитированных заявок. ----------------------- Что это означает? ----------------- Означает это следующее. Мы открываем позицию и желаем застраховать ее от наступления двух событий: Во-первых - чтобы наши убытки по-возможности не превысили терпимый для нас уровень - это stop-limit Во-вторых - чтобы наша оценочная прибыль превратилась в реальную с терпимым для нас убытком - это take profit ----------------------------- А теперь попробуйте ответить сами на Ваш вопрос. А именно - разве наши желания страховки связаны с close последней свечи на 5 минутках? Очевидно, что, нет, они связаны с затратами на открытие позиции, с величиной допустимых для нас рисков(потерь) и что ВАЖНО - с нашим прогнозом возможного движения рынка. -------------------- А вот при расчете прогноза возможно использование и последней свечи и еще ...надцати предыдущих и движение солнца, цены нефти, выступления президента и т д ------------------------------------------- Надеюсь, что пояснил понятно.
lergen пишет: Можно чуть подробнее про эмуляцию. Где она совершается на терминале пользователя или сервере брокера? При эмуляции используются параметры инструментов PRICEMIN и PRICEMAX или другие?
до версии 6.17 эмуляция была на терминале пользователя, теперь она происходит на шлюзе. Эмуляция рыночной заявки на ФОРТС представляет из себя выставление лимитированной заявки с типом "Снять остаток" и автоматической подстановкой цены PRICEMIN или PRICEMAX в зависимости от направления. Цена автоматически подставляется только в случае если пользователь не заполнил цену или указал ее равной нулю. На опционах, к сожалению, пока подстановка цены не работает.
Валентин пишет: Здравствуйте. Работаю на фьючах на московской бирже. 1.Параметр type - принимает параметр лимитированная или рыночная. Я так понял рыночной заявки какбы не существует? параметр type не обязателен, Все заявки всегда лимитированные и надо всегда указывать price? Если да, то к чему тогда существует параметр type? 2. Предположим мне необходимо сейчас открыть позицию, выставить стоп и тейкпрофит. Это нормально считать стоп, тейкпрофит на основе параметра close из функции getCandlesByIndex последней свечи (5минутка) или есть какие то лучшие варианты?
А теперь попробуйте ответить сами на Ваш вопрос. А именно - разве наши желания страховки связаны с close последней свечи на 5 минутках? Очевидно, что, нет, они связаны с затратами на открытие позиции, с величиной допустимых для нас рисков(потерь) и что ВАЖНО - с нашим прогнозом возможного движения рынка. -------------------- А вот при расчете прогноза возможно использование и последней свечи и еще ...надцати предыдущих и движение солнца, цены нефти, выступления президента и т д ------------------------------------------- Надеюсь, что пояснил понятно.
боюсь что вы меня немного не поняли. сигнал на решение по открытию позиции я беру из других источников. Сигнал есть, решение есть, открываем позицию. Вопрос был где лучше взять текущую цену продажи или покупки (в зависимости от направления). Что бы к этой текущей цене отнять\прибавить 100 пунктов (к примеру) и получить величину стопа
Валентин пишет: Вопрос был где лучше взять текущую цену продажи или покупки (в зависимости от направления).
Вопрос некорректный. Так как непонятно что значит "лучше" Лучше для Вас, то есть выгоднее? Или лучше, в смысле чтобы быстрее исполнилась, тогда для Вас это "хуже" то есть не выгодно.
Валентин пишет: Вопрос был где лучше взять текущую цену продажи или покупки (в зависимости от направления).
Вопрос некорректный. Так как непонятно что значит "лучше" Лучше для Вас, то есть выгоднее? Или лучше, в смысле чтобы быстрее исполнилась, тогда для Вас это "хуже" то есть не выгодно.
во-первых быстрее и надежнее, во вторых не самая плохая цена. параметры pricemin pricemax возможно не самый лучшие варианты
Валентин пишет: Вопрос был где лучше взять текущую цену продажи или покупки (в зависимости от направления).
Вопрос некорректный. Так как непонятно что значит "лучше" Лучше для Вас, то есть выгоднее? Или лучше, в смысле чтобы быстрее исполнилась, тогда для Вас это "хуже" то есть не выгодно.
во-первых быстрее и надежнее, во вторых не самая плохая цена. параметры pricemin pricemax возможно не самый лучшие варианты
быстрее и надежней это и есть pricemin pricemax, но они же самые невыгодные. Самые выгодные это bid offer, но они же самые ненадежные. соответственно Вам нужно выбрать что-то среднее.
Валентин пишет: Вопрос был где лучше взять текущую цену продажи или покупки (в зависимости от направления).
Вопрос некорректный. Так как непонятно что значит "лучше" Лучше для Вас, то есть выгоднее? Или лучше, в смысле чтобы быстрее исполнилась, тогда для Вас это "хуже" то есть не выгодно.
во-первых быстрее и надежнее, во вторых не самая плохая цена. параметры pricemin pricemax возможно не самый лучшие варианты
быстрее и надежней это и есть pricemin pricemax, но они же самые невыгодные. Самые выгодные это bid offer, но они же самые ненадежные. соответственно Вам нужно выбрать что-то среднее.
Sergey Gorokhov пишет: быстрее и надежней это и есть pricemin pricemax, но они же самые невыгодные.
Не понял. Заявка все равно будет исполняться не по этим а по лучшим ценам в стакане на текущий момент. Разве нет. Или вы намекаете на некие особенности исполнения заявок типа микро аукцион?
Sergey Gorokhov пишет: быстрее и надежней это и есть pricemin pricemax, но они же самые невыгодные.
Не понял. Заявка все равно будет исполняться не по этим а по лучшим ценам в стакане на текущий момент. Разве нет. Или вы намекаете на некие особенности исполнения заявок типа микро аукцион?
Чем дешевле Вы продаете или чем дороже покупаете тем быстрее найдете встречное предложение, это и есть pricemin pricemax.
открывал длинную позицию по рыночной цене, квик ругнулся, что мол ошибка фортс 332 - нехватка средств по лимитам. средства есть, больше чем го. из разговора с брокером, я так понял с некоторых пор (с 07.09.2015) что то случилось с рыночными квикавскими заявками, и по ним го считается по другому?
Валентин пишет: открывал длинную позицию по рыночной цене, квик ругнулся, что мол ошибка фортс 332 - нехватка средств по лимитам. средства есть, больше чем го. из разговора с брокером, я так понял с некоторых пор (с 07.09.2015) что то случилось с рыночными квикавскими заявками, и по ним го считается по другому?
У меня вопрос: - Почему "Лимитированная" заявка после выставления исполняется не по указанной цене, а по другой, например, в заявке указана цена=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
Вы хотели продать по 67069, а биржа продала Вам по лучшей, чем Ваша цене 67075 --------------------------------------------------- Вы можете мне отдать лишнее.
Фёдор Сухов пишет: Дело не в том, что цена лучшая.
Фёдор, дело именно в этом. Тип заявки "лимитированная" означает "исполнить по ценам не хуже заданной", а не так, как вы думаете - "ровно по заданной цене". Для заявки на продажу это значит "по заданной цене ИЛИ выше". Так работают лимит-ордера на любой бирже мира, этот алгоритм основан на принципе экономической целесообразности (если можно купить дешевле или продать дороже - только вперед!). И ни система QUIK, ни её разработчики здесь совершенно ни при чем. Взглянем на принцип исполнения ордеров немного с другой стороны. Предположим, в стакане стоят такие заявки:
Теперь "приезжает" ваша лимит на продажу по 67069. Так вот, покупатели по ценам 67075 и 67072, наименее выгодным для себя, будут в этой очереди первыми на сделки с теми, кто продает. И "объехать" вам их, заключив сделку сразу по 67069, даже менее выгодно для вас лично, вам не дадут. Не по-джентльменски это :) Надеюсь, понятно объяснил.
Тип заявки "лимитированная" означает "исполнить по ценам не хуже заданной", а не так, как вы думаете - "ровно по заданной цене". Для заявки на продажу это значит "по заданной цене ИЛИ выше". Так работают лимит-ордера на любой бирже мира,
Спасибо, конечно, большое за объяснение! Но я всё прекрасно понимаю это.
Но ещё раз подчёркиваю, что мне необходимы правила открытия позиции по мной заданной цене.
Это не упрямство, так мне надо. Жаль, что Вы, почему-то, думаете что я что-то там не понимаю.
Я просто в Квике не знаю как мне выставить заявку по той цене, по которой я хочу. Если моя заявка не будет удовлетворена, то я её сниму и переставлю, но только по той цене по которой сочту нужным, т.е. робот рассчитает.
Мне необходимы параметры в структуре или нужные настройки.
Поэтому ещё раз обращаюсь к разработчикам или более опытным трейдерам, помогите разобраться, пожалуйста!
П.С.: Вручную же я могу это осуществить. Но как структуру заполнить?
Хочу напомнить, что тема называется <Программирование на языке Lua>
Прошу ответить на вопрос или дать ссылку на подробную документацию о заполнении структуры транзакции. Ничего более я не хочу. Я, пока, подробной инструкции или документации не нашёл.
Фёдор Сухов пишет: Хочу напомнить, что тема называется <Программирование на языке Lua>
Прошу ответить на вопрос или дать ссылку на подробную документацию о заполнении структуры транзакции. Ничего более я не хочу. Я, пока, подробной инструкции или документации не нашёл.
Добрый день.
Федор, выше пользователи уже ответили на Ваш вопрос. Таковы правила биржи, врятли что-то можно придумать в коде LUA, чтобы обойти правила торгов.
Все параметры транзакций вы можете посмотреть в документации QUIK. Раздел 6. Совместная работа с другими приложениями/Импорт транзакций/Формат .tri-файла с параметрами транзакций Данные формат идентичен и для LUA.
Приведу аргументы почему я настаивал на такой возможности, а именно: - Например, происходит следующее: --------------------------------------------------------------------- 1. Открытие короткой позиции Price=67663, Vol=1 2. Далее формируется сигнал на закрытие позиции 3. Close Sell (Buy), PriceIn=67705 Bid=67702.000000 Ask=67705.000000 4. Но по цене 67705 не закрывается позиция. 5. Тут начинается формироваться, как говорится, "лучшая цена" для клиента, но он этого не видит! (такие вот кухонные методы) 6. Цена изменилась!!!! Bid=67712.000000, Ask=67716.000000 7. Переставляем заявку и боремся за "лучшую цену" - PriceIn=67712, чтобы закрыться! По цене 67716 не хотим закрываться. 8. Цена изменилась!!!! Bid=67715.000000, Ask=67717.000000 9. Переставляем заявку и боремся за "лучшую цену" - PriceIn=67715, чтобы закрыться! По цене 67717 не хотим закрываться. 10. Наконец-то происходит Закрытие короткой позиции Price=67715 11. Итого: 67663-67715 = -52 А если закрылись, именно, закрылись по цене 67705, то 67663-67705= -42 Вот такой самый банальный пример борьбы за "лучшую цену". ------------------------------------------------------------------------------------
Конечно, не спорю при открытии позиции бывает происходит открытие по лучшей цене, но весьма трудно закрыть и зафиксировать прибыль по той цене, которая была на момент формирования сигнала.
Налицо перехват заявок "перехватчиками", которые потом и "формируют" уже для себя лучшую цену. Поэтому не хочется иметь дело с биржевыми алгоритмами, предлагающими "лучшую цену" для клиента, если рассматривать в контексте происходящих сделок в течении торгового дня. И такое происходит много-много раз.
Если нельзя, но очень хочется то можно попробовать указать EXECUTION_CONDITION -Условие исполнения заявки, необязательный параметр. Со значением «FILL_OR_KILL» – немедленно или отклонить, ------------------------- Относительно перехвата заявки перехватчиками, то это Вам кажется. Очевидно Вы пришли с кухне форекса. Но там не биржевой рынок и свои законы, как в джунглях На бирже немного иначе. Скорее всего это маркет-мейкер стукает. Меняйте алгоритм.
Николай Камынин пишет: Если нельзя, но очень хочется то можно попробовать указать EXECUTION_CONDITION -Условие исполнения заявки, необязательный параметр. Со значением «FILL_OR_KILL» – немедленно или отклонить,
Вряд ли это поможет исполнить заявку по цене, худшей, чем есть сейчас в стакане.
Николай Камынин пишет: Относительно перехвата заявки перехватчиками, то это Вам кажется. Очевидно Вы пришли с кухне форекса. Но там не биржевой рынок и свои законы, как в джунглях На бирже немного иначе. Скорее всего это маркет-мейкер стукает. Меняйте алгоритм.
Странно, конечно, но многие значит не в курсе, что "перехватчики" существуют, кроме, конечно самого маркет-мейкера, главное получить быстрее, чем многие список заявок.
А кухонные FX-брокеры такими вещами не заморачиваются, у них есть весьма простые скрипты написанные для МТ4 (в основном), для манипуляции ценой. И стакан заявок им и не снился.
Фёдор Сухов пишет: 1. Открытие короткой позиции Price=67663, Vol=1 2. Далее формируется сигнал на закрытие позиции 3. Close Sell (Buy), PriceIn=67705 Bid=67702.000000 Ask=67705.000000
Надо понимать, в данном примере речь идет о фиксации убытка, т.е. стоп-лосс. Только не стоп-ордером, а вручную. Ок, имеем право. Короткую позицию закрываем покупкой, значит, смотрим предложение. В стакане лучшая цена 67705, отправляем ордер Buy 67705. Чудесно. Только кто вам гарантирует, что пока ваша заявка не дошла до биржи, стакан не изменился? И вот теперь Bid=67704 Ask=67706 например? Ваша заявка, не найдя согласно лимит-условию встречного предложения, упала в стакан и вот теперь Bid=67705 Ask=67706. Ау, кто продаст мне по 67705? Нет, пока есть желающие только по 67706.
Цитата
Фёдор Сухов пишет: 6. Цена изменилась!!!! Bid=67712.000000, Ask=67716.000000 7. Переставляем заявку и боремся за "лучшую цену" - PriceIn=67712, чтобы закрыться!
А вот дальше еще интереснее. Вместо того, чтобы бить в оффер (67716) продавцу, пока рынок не уехал еще вверх, мы встаем в бид (67712) и ждем у моря погоды. Но на рынке движуха, и сейчас покупатели (быки) правят бал, плевав на наши проблемы с короткой позицией и убытками.
Цитата
Фёдор Сухов пишет: По цене 67716 не хотим закрываться.
Ну а кто хочет продавать дороже-то?!
Цитата
Фёдор Сухов пишет: 8. Цена изменилась!!!! Bid=67715.000000, Ask=67717.000000 9. Переставляем заявку и боремся за "лучшую цену" - PriceIn=67715, чтобы закрыться!
Цитата
По цене 67717 не хотим закрываться.
Рынок уже х.. знает где. Но есть такой зверь - жаба. И она в каждом из нас. Ну почему же никто нам бедным не хочет продать по 67715?!
------------------------------- Существует множество техник торговли, чтобы сформировать/закрыть нужную вам позицию. Только непонятно, какое отношение имеет к этому вопросу механизм исполнения лимитированных заявок? Всё предельно просто - ваша заявка исполнится, если найдется подходящее встречное предложение. Если нет - не исполнится.
Цитата
Фёдор Сухов пишет: весьма трудно закрыть и зафиксировать прибыль по той цене, которая была на момент формирования сигнала.
Вот это - истинная правда! Особенно убыток по стопу. Так при чем тут какие-то мифические флаги заявок?
Фёдор Сухов пишет: Странно, конечно, но многие значит не в курсе, что "перехватчики" существуют, кроме, конечно самого маркет-мейкера, главное получить быстрее, чем многие список заявок.
Ничто в современном мире так не ценно, как информация. Своевременная. Вот для этого существует прямое подключение к бирже по Plaza, чем многочисленные профессиональные скальперы невозбранно и пользуются. Выкладывайте денежки за такое подключение и присоединяйтесь к их армии!
Фёдор Сухов пишет: Налицо перехват заявок "перехватчиками", которые потом и "формируют" уже для себя лучшую цену. Поэтому не хочется иметь дело с биржевыми алгоритмами, предлагающими "лучшую цену" для клиента,
Насчет мифических "перехватчиков". Ваша заявка (после контроля лимитов) попадает напрямую (!) на биржу. До этого никто из посторонних ее не видит и знать про нее не знает. Там она попадает в ядро исполнения (order execution), где по описанному ранее алгоритму (matching) находит (или не находит) одно или несколько встречных предложений. Абсолютно из всех приходящих заявок на серверах биржи формируется очередь. Биржа транслирует её (order log) своим клиентам ПОСЛЕ помещения туда входящих заявок. Дневной файл по всей бирже весит гигабайты. И "влезть" туда как-то в серединку перед вашей заявкой, уже имея о ней публичную информацию, невозможно. Лучшую, как впрочем и все другие цены, для всех участников торгов и прочих любопытствующих предлагают не биржевые алгоритмы, а такие же участники торгов, как и вы. Биржевые алгоритмы (и алгоритмы системы QUIK) лишь обрабатывают информацию, упорядочивают её и представляют клиентам в удобном виде.
Николай Камынин пишет: Если нельзя, но очень хочется то можно попробовать указать EXECUTION_CONDITION -Условие исполнения заявки, необязательный параметр. Со значением «FILL_OR_KILL» – немедленно или отклонить,
Вряд ли это поможет исполнить заявку по цене, худшей, чем есть сейчас в стакане.
Совершенно верно. Условие исполнения говорит, что следует сделать с остатком (неисполненным объемом) заявки - поставить в стакан или забыть навсегда.
Фёдор Сухов пишет: Налицо перехват заявок "перехватчиками", которые потом и "формируют" уже для себя лучшую цену. Поэтому не хочется иметь дело с биржевыми алгоритмами, предлагающими "лучшую цену" для клиента,
Насчет мифических "перехватчиков". Ваша заявка (после контроля лимитов) попадает напрямую (!) на биржу. До этого никто из посторонних ее не видит и знать про нее не знает. Там она попадает в ядро исполнения (order execution), где по описанному ранее алгоритму (matching) находит (или не находит) одно или несколько встречных предложений. Абсолютно из всех приходящих заявок на серверах биржи формируется очередь. Биржа транслирует её (order log) своим клиентам ПОСЛЕ помещения туда входящих заявок. Дневной файл по всей бирже весит гигабайты. И "влезть" туда как-то в серединку перед вашей заявкой, уже имея о ней публичную информацию, невозможно. Лучшую, как впрочем и все другие цены, для всех участников торгов и прочих любопытствующих предлагают не биржевые алгоритмы, а такие же участники торгов, как и вы. Биржевые алгоритмы (и алгоритмы системы QUIK) лишь обрабатывают информацию, упорядочивают её и представляют клиентам в удобном виде.
А если я поставлю сервер на биржу и буду без всяких Квиков ловить заявки? А разве так не делают?
Даже, если все честные до святости, то тогда вот такое обстоятельство: - У меня, допустим, пинг с сервером 40 милисекунд, а у господина А...кого пинг менее 5 милисекунд. - Кто раньше сможет поставить заявку используя один и тот же робот?
Непонятно, что вы имеете в виду под "честностью" в данном случае. Деятельность бирж регулируется федеральными законами о рынке ценных бумаг, об организаторах торговли, также регламентами работы бирж. Это публичные нормативные акты, с которыми может ознакомиться каждый. В протоколах связи используются криптографические средства защиты. Получить третьему лицу информацию о заявках клиентов до их принятия и обработки ядром биржи невозможно. После этого - принимайте order log и действуйте по своему усмотрению. Рынок формируется путем подачи всеми участниками торгов абсолютно таких же заявок, какие доступны вам. Никаких скрытых дополнительных флагов заявок ни у кого больше нет.
Цитата
Фёдор Сухов пишет: - У меня, допустим, пинг с сервером 40 милисекунд, а у господина А...кого пинг менее 5 милисекунд. - Кто раньше сможет поставить заявку используя один и тот же робот?
Господин А. По крайней мере, быстрее вас получить актуальную рыночную информацию.
Цитата
Фёдор Сухов пишет: - И сколько раз Он сможет считать стакан и оценить, пока я только 1 раз считаю?
В соответствии со своими техническими возможностями способа подключения к торгам, толщиной канала связи и талантом программиста.
Фёдор Сухов пишет: Даже, если все честные до святости, то тогда вот такое обстоятельство: - У меня, допустим, пинг с сервером 40 милисекунд, а у господина А...кого пинг менее 5 милисекунд. - Кто раньше сможет поставить заявку используя один и тот же робот?
Ответ очевиден же.
Если твоему алгоритму так важны миллисекунды, то аллокируй сервер на площадке биржи. Это стоит денег. Если профит от этого превышает затраты, то - вперед.
И, кстати, топик-стартер пишет HFT-робота или робота-скальпера? Если да - то надо действовать через Плазу. Если нет - то несколько пипсов играют ли большую роль?
Николай Камынин пишет: Если нельзя, но очень хочется то можно попробовать указать EXECUTION_CONDITION -Условие исполнения заявки, необязательный параметр. Со значением «FILL_OR_KILL» – немедленно или отклонить, ------------------------- Относительно перехвата заявки перехватчиками, то это Вам кажется. Очевидно Вы пришли с кухне форекса. Но там не биржевой рынок и свои законы, как в джунглях На бирже немного иначе. Скорее всего это маркет-мейкер стукает. Меняйте алгоритм.
Добрый день, всем! Давно не заходил на форум. Мой вопрос я решил довольно простым способом и, именно, так я и хотел с самого начала, т.е., если моей цены нет, то не открываюсь, но, конечно, если есть лучшая для меня цена, то открываюсь, иначе снимаю заявку. В общем, всё сделал как надо без "скачковых" невыгодных срабатываний.