Просмотр сообщений
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Topics - Олег
1
« on: Октября 01, 2013, 07:37:40 pm »
Если погонять вот такой скрипт: #samewindow #line 0 nodraw
function onNewCandle() { trade_action::cancelAllOrders(); }
function calc() { line[0] = 0; }
в начале каждой новой свечи будут сниматься заявки, которых в действительности не существует и при этом никаких сообщений выдаваться не будет. Почему же тогда в определенный момент работы "серьезных" сктиптов время от времени (хотя и достаточно редко) ATF выдает вот такое сообщение? Какзалось бы ситуация одинаковая - пытаемся снять невыставленные заявки. Почему же тогда такая разная реакция?
2
« on: Сентября 22, 2013, 10:37:23 am »
Как сделать так, чтобы signal::output каждый раз перед выводом текста сначала печатал пустую строку? В VBA это делается вот так:
Print (Chr(13) & "Какой-то текст") По аналогии попробовал сделать вот так:
signal::output(num2chr(13) + "Какой-то текст"); Что я делаю не так? Как надо выполнять такую задачу? Какие там надо числа вводить: двоичные, десятичные, шестнадцатиричные? У меня это что-то вроде врожденного инстинкта должно быть, да? Ну типа, это и без объяснений понятно? С молоком матери всосал?
Почему в документации невозможно найти объяснение, как делать самые простые необходимые вещи (с элементарными примерами)?!
P.S. Сейчас придумал делать вот так:
signal::output( " "); signal::output( "Какой-то текст"); Но это же снова "партизанщина".
3
« on: Сентября 16, 2013, 09:34:23 am »
У меня такой вопрос.
У меня много-много окон в Транзаке. Называю я их приблизительно так: Сбербанк_1мин, Сбербанк_1час, Сбербанк_1 день и т.д. Это, на самом деле, везде фьючерсы. Когда создавал эти окна, "шапки" автоматически стали называться: SRU-FUT-1день и т.д.
Кроме этого в каждом окне у меня много всяких-разных окошек с индикаторами (везде разные, поэтому единый шаблон окна создать невозможно).
Сегодня при "пересадке" на следующие фьючерсы делал так: добавлял в то же самое окно следующий фьючерс, а старый фьючерс удалял. В итоге, теперь в каждом окне новый фьючерс, а вот "шапки" везде остались прежними, т.е. привязанными к именам старых фьючерсов, т.е. SRU-FUT-1день и т.д. Спрашивается, зачем мне-пользователю это надо? Я же специально присваиваю окнам такие наименования, которые будут подходить КО ВСЕМ нынешним и будущим фьючерсам по каждой бумаге. Ну и пусть бы тогда в шапку автоматически выносились эти самые МОИ наименования. Или пусть бы при смене фьючерса шапки изменялись бы в соответствии с тикером следующего фьючерса. Тогда бы это было удобно, а сейчас получается печаль. Фьючерсы уже везде новые, а все шапки остались старыми. Конечно это не смертельно, но надо теперь все время держать в голове, что шапки уже не соответствуют реалиям. Получается, что надо все делать с нуля только ради того, чтобы сменились и шапки тоже?
4
« on: Сентября 05, 2013, 02:35:33 pm »
...а чем плох тестовый сервер ?
Предлагаю посвятить данную ветку ответам на этот вопрос. Поехали! Пытаюсь (руками) выставить заявку на продажу двух лотов по рыночной цене, он долго-долго тужится (в таблице заявок видно, как заявки пытаются выставиться), а потом выдает мне вот такое сообщение: И это повторяется далеко уже не один раз и не первый день. Причем независимо от количества лотов и направления заявки (покупка или продажа).
5
« on: Сентября 04, 2013, 11:30:21 am »
АААААААААААААААА Почему ATF покупает или продает беспорядочное количество лотов ААААААААА!!!!!!!!!! указано 10 он мне 50 купил!!!!!!!!
Разработчики! Подскажите, пожалуйста, в сборке 333.04 эта проблема уже решена, этот баг снова не вылезет? У меня тут тоже линии стали на графиках "гулять", но это как-бы цветочки, в смысле, неприятные, но терпимые мелочи, а вот если робот мне вместо одного-единственного разнесчастного лотика скупит весь стакан, вот тогда уже будут ягодки.
6
« on: Сентября 02, 2013, 01:25:37 pm »
Все заявки и сделки в Transaq имеют связанный с ними номер транзакции, обозначаемый в структурах как trnid. Этот номер trnid передается в функции onOrder, onStopOrder и onTrade, а так же используется для снятия заявок и получения их структур. Чёта я туплю. Это правило для onTrade() распространяется только на рыночные и лимитированные заявки или на условные и стоп-заявки тоже? В смысле, когда сделка проходит по лимитированной или рыночной заявке, то ее id передается в эту функцию, ну и т.д. Здесь вопросов нет. А вот когда условная или стоп-заявка. Ведь тогда она до поры до времени хранится на сервере брокера, а при выполнении определенных условий отсылается на биржу, но уже с другим id, правильно я понимаю? Значит в функции onTrade() "напрямую" отслеживать сделки по условным и стоп-заявкам нельзя? Надо сначала в функции onStopOrder() получить номер, с которым будет отправлена заявка на биржу, а уже потом отслеживать судьбу этой заявки с помощью onTrade() по этому номеру, правильно я понимаю? И еще... Почему в документации в олдних местах эти функции приводятся с параметром id, а в других с параметром trnid? Или это синонимы?
7
« on: Августа 18, 2013, 10:06:46 am »
GDH2,10:00:00,1555.2,10,К GDH2,10:00:00,1558.0,1,К GDH2,10:00:00,1559.0,10,К GDH2,10:00:00,1559.8,1,К GDH2,10:00:00,1560.0,5,К GDH2,10:00:00,1560.0,1,К GDH2,10:00:04,1560.0,2,К GDH2,10:00:05,1560.6,1,П GDH2,10:00:06,1560.6,35,П GDH2,10:00:20,1561.2,10,П GDH2,10:00:21,1561.2,2,П GDH2,10:00:30,1561.5,1,К Давно хотел спросить. Вот допустим, уже давно кем-то выставлена лимитированная заявка (пассивная сторона). Вот я только что выставил рыночную заявку (активная сторона). Вот две эти заявки встретились и была заключена сделка. В этой ситуации, разумеется преимущество на стороне активной стороны, то есть если я покупал, то будет "К", а если продавал, тогда будет "П". А вот допустим, сделка заключена по двум рыночным заявкам, то есть пассивной стороны нет. Тогда как определяется, какая будет буква? Или там по времени как-нибудь? Например, по той заявке (из двух встретившися), которая пришла на биржу позднее? Если она на покупку, то и вся сделка "К", а если на продажу, то "П"?
8
« on: Августа 05, 2013, 03:23:18 pm »
Суть вопроса в следующем. Вот, допустим, я купил 5 лотов фьюча Сбербанка по 10000 рублей, а продал через неделю по 11000. В итоге мой доход составил 5*(11000-10000)=5000 рублей. То есть из объема продажи (в рублях) мы вычли объем покупки (в рублях), ну вот и получилась сумма дохода. В спецификации этого контракта приведены формулы для расчета вар. маржи, но трейдер может даже не знать о их существовании. Они нужны только для того, чтобы биржа пересчитывала при переходе через клиринги.
Теперь другая ситуация. Допустим, я купил 1 лот фьюча золота по 1400$, а продал его через 2 месяца по 1450$. Как посчитать доход? Можно ли просто умножить курс доллара на момент продажи на цену контракта в долларах и вычесть из полученного результата произведение курса доллара (на момент покупки) на цену (в долларах), по которой купил? Ну вот и будет мой доход. Купил за 100 рублей, продал за 150, получил 50 рублей дохода. Попробовал считать таким способом, не сходится. Кто-нибудь знает, как можно проверить правильность? И можно ли вообще так считать?
9
« on: Июля 15, 2013, 12:40:17 pm »
Я уж не знаю, была такая тема или нет, было обсуждение этого вопроса на форуме или нет, поэтому решил открыть новую ветку. Проблема заключается в том, что не могу считать статус стоп-заявки в Интре. Делаю вот так: function onStopOrder(var trnid) { var StopOrder;
if (trnid != StopOrder_1_TransaqID) { StopOrder = getStopOrder(trnid); StopOrder_1_Status = StopOrder["status"]; } } При всем при том, статус обычных заявок (не стопов) считывать таким способом получается. В чем причина? 1. Я что-то делаю не так? 2. В Интре решили не моделировать эту тонкость? 3. Баг? 4. Фича?
10
« on: Июля 15, 2013, 12:08:04 pm »
Было бы здорово, если где-нибудь в документации можно было найти, какие именно числовые значения соответствуют всем поименованным константам, используемым в ATF.
11
« on: Июля 14, 2013, 11:21:09 pm »
Заинтересовался таким вопросом. Вот допустим, я выставил 2 стоп-лосса на один и тот же уровень и оба по 50% позиции. Если цена достигнет этого уровня, как будут развиваться события?
Например, сейчас у меня куплено 100 лотов некого инструмента по цене 150. Сейчас цена 160. У меня выставлено 2 стоп-заявки. В одной из них TP = 175 (закрыть 50% позиции) и SL = 100 (закрыть 50% позиции), а в другой TP = 200 (закрыть 50% позиции) и SL = 100 (закрыть 50% позиции).
Предположим, цена сразу пошла в сторону стоп-лоссов и пересекла их уровень (100). По идее, первый стоп-лосс закроет 50% позиции, т.е. 50 лотов, а второй закроет 50% от остатка позиции, т.е. 25 лотов. Но учитывая то, что все произойдет очень быстро (ведь они на одной цене), то второй стоп-лосс закроет не половину остаточной позиции, а все оставшиеся 50% целиком.
Правильно ли я рассуждаю?
12
« on: Июля 07, 2013, 08:05:13 pm »
Снимается или ставится в очередь? P.S. Хотя сейчас призадумался и понял, что так оно, наверно и есть. В смысле, именно снимается. Вот, например, я выставлю рыночную заявку на покупку миллиарда лотов Сбербанка на ФОРТСе. Разумеется, в этом случае я скуплю весь стакан. Но у меня останется еще очень много "неиспользованных" лотов в моей заявке. Ну и по какой цене они должны быть выставлены на покупку? По цене верхнего лимита? Наверно, и правда, логично эту неиспользованную часть снять. Но в таком случае, само название признака "Поставить в очередь" очень обманчивое, мне кажется.
13
« on: Июля 06, 2013, 02:28:28 pm »
Раньше Интра всегда обгоняла боевую по версии ATF, а сейчас почему-то отстает.
На боевой у меня сейчас ATF 1.9, а в Интре ATF 1.8.
14
« on: Июля 05, 2013, 12:46:13 pm »
Правильно сделали, что решили организовать такой подфорум! Хотя, на самом деле, по жизни я не курю Вношу предложение перенести сюда все мои ветки, которые начинаются со слова "ФЛУД", а само это слово из названий этих веток убрать.
15
« on: Июля 03, 2013, 01:37:15 pm »
Сейчас смастерил пробный скрипт, в котором используется таймер. Про Интру как-то и не вспомнил, начал сразу в боевом транзаке экспериментировать. Сначала одна проблема вылезла, потом другая. Короче, я несколько раз этот индикатор удалял, а потом снова кидал на то же самое окно. Интервал таймера 1 секунда (periodically).
Вопрос возможно весьма примитивный, но все-таки... Одним словом, насколько эти таймеры "живучи", что надо сделать, чтобы их "убить"? Достаточно ли просто удалить данный индикатор с данного графика?
Все-таки версия боевая, поэтому не хочется, чтобы фантомные таймеры жрали ресурсы.
|