Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
27.03.2025, 04:36:11
Начало Помощь Поиск Войти Регистрация
Новости: ООО «Скрин маркет системз», правообладатель программы «Система брокерского обслуживания «TRANSAQ» официально заявляет, что не ведет никакой деятельности в мессенджерах или социальных сетях. 
Подробности на нашем сайте  WWW.TRANSAQ.RU.

Просмотр сообщений

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.

Messages - AlexRoot

Pages: [1]
1
Здравствуйте.

Сегодня, с удивлением, обнаружил, что ATR рисует совсем другие данные, по сравнению с Wealth Lab и QUIK.

В аттаче скриншоты для Si 12.14 c ATR period = 100 с трех платформ. Разница достаточно порядочная, особенно когда на основе ATR строятся индикаторы для стратегий.

Поправьте, пожалуйста, индикатор.

2
Вы выше писали:  "В  "Срочные позиции клиента" строки для этого инструмента вообще нет. Т.е. позиция скинута еще до вечернего клиринга."

Дело в том, что данные, которые показываются в этом диалоге, получаются ровно по той же технологии, что и данные, которые отдаются после eventa "CLIENT_HOLDINGS"

Ну вот и ответ на вопрос. :) Ошибка в ветке кода, когда вызывается requestFORTSPositions, когда этого инструмента нет в Срочных позициях. Трудно сказать на сервер сайде или клиенте...

Quote
А не похожа эта цифра на позицию по другому инструменту или по другому клиенту?

Обычно там значение, равное позиции по этому инструменту, у этого клиента на начало дневной сессии. Либо в пределах этих значений (не больше для Long, не меньше для Short)
Кроме того, один Транзак - один счет. Физически они все в разных местах в файловой системе. Так что врядли. В пользу этого говорит то, что происходит случайно у разных совершенно транзаков. Если бы были какие-то совпадения, то, наверное, заметили бы.

Или вот, еще один случай. В тот же день вошли, в тот же день вышли:

12:00:08 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-3
12:00:08 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-5
12:00:08 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-7
12:00:09 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-9
12:00:10 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-13
12:00:10 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-14
12:00:10 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-16
12:00:11 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-17
12:00:11 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-18
12:00:13 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-20
12:00:14 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-23
12:00:14 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-28
12:00:15 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-29
12:00:15 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-30
12:00:16 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-31
12:00:19 08.08.14 - RTS-9.14 : new Forst Position from Holdings:-31

- Тут мы вышли -

12:05:44 08.08.14 - RTS-9.14 : New Forst Position from CurrentPos :0

- Дальше все норм

12:05:46 08.08.14 - RTS-9.14 : new Forst Position from Holdings:0
12:50:02 08.08.14 - RTS-9.14 : new Forst Position from Holdings:0
12:50:04 08.08.14 - RTS-9.14 : new Forst Position from Holdings:0
13:00:10 08.08.14 - RTS-9.14 : new Forst Position from Holdings:0
15:19:42 08.08.14 - RTS-9.14 : new Forst Position from Holdings:0

- С утра - борода

10:05:03 11.08.14 - RTS-9.14 : new Forst Position from Holdings:-29
10:05:07 11.08.14 - RTS-9.14 : new Forst Position from Holdings:-29

- Чтоб "сбросить" счетчик покупаем и продаем один фьючерс.

11:30:29 11.08.14 - RTS-9.14 : New Forst Position from CurrentPos :1
11:30:30 11.08.14 - RTS-9.14 : new Forst Position from Holdings:1
11:30:35 11.08.14 - RTS-9.14 : New Forst Position from CurrentPos :0
11:30:35 11.08.14 - RTS-9.14 : new Forst Position from Holdings:0

3
Спасибо за пояснения. Будем думать как это обрулить. Сейчас на condvalue завязан один алгоритм.

На счет проблемы с requestFORTSPositions .
Настроили на переподключение в 09:50.
Та же песня. Появляется также рандомно, не у всех.
скинули позу:
15:20:02 08.08.14 - Si-9.14 : New Forst Position from CurrentPos :90
15:20:03 08.08.14 - Si-9.14 : New Forst Position from CurrentPos :80
15:20:04 08.08.14 - Si-9.14 : New Forst Position from CurrentPos :70
15:20:05 08.08.14 - Si-9.14 : New Forst Position from CurrentPos :0
на след день подключились в 09:50, в 10:05 обновились через requestFORTSPositions :
10:05:05 11.08.14 - Si-9.14 : new Forst Position from Holdings:90

4
В 09:27 вдруг стрельнул эвент onOrder c каким-то левым id. Причем order["status"]  == OS_MATCHED был.

Что значит "левый id" ?

Утром до начала торгов должны прийти вчерашние вечерние заявки и сделки  - это нормально.

В спеке написано : onOrder(id) - событие изменения статуса заявки или выставления заявки.
Как, в то время, когда торги не запущены, заявка может поменять свой статус на исполненный (OS_MATCHED)?
Причем у заявки отсутствовали некоторые поля : "condvalue" пришел пустой. Хотя точно проверял, накануне все заявки были лимитированые.
Опять же, про то, что onOrder может выстрелить до начала торгов информации на http://www.transaq.ru/dokuwiki/ не нашел.
Толи недокументированная фича, толи недокументированная бага :)

5
Спасибо! Попробую.

Один раз, кстати, Транзаку крышу снесло и в другом месте.

В 09:27 вдруг стрельнул эвент onOrder c каким-то левым id. Причем order["status"]  == OS_MATCHED был. Не знаю, что ему там с утра привиделось...
Пришлось туда тоже вставить такой костыль:

if (getHour(getServerTime()) == 9 && getMinute(getServerTime()) < 58)
{
    return;
}

6
В какое время ваш терминал подключается утром к серверу?


У меня они работают в круглосуточном режиме со вчключенным автоматическим переподключением.
Первая запись в лог, после запуска функции Init, поступает в районе 09:22

09:22:59 08.08.14 - RTS-9.14 : secInf :3242
09:22:59 08.08.14 - RTS-9.14 : getClient : *****
09:22:59 08.08.14 - RTS-9.14 : FORST position : ***

Первая попытка вызова requestFORTSPositions происходит где-то в 10:05


7
Только вчера, опять, наблюдал эту проблему. Причем она появляется совершенно рандомно. Из, примерно, 10-ти счетов у одного. Хотя код у всех одинаковый.
Вот кусок моих логов.
Запись "new Forst Position from Holdings" добавляется при обновлении позици в onEnvEvent + event == "CLIENT_HOLDINGS" из getFORTSPosition ["totalnet"]
Запись "New Forst Position from CurrentPos" добавляется в OnTrade из trade["currentpos"]

12:24:57 06.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-3
12:24:57 06.08.14 - RTS-9.14 : New Forst Position from CurrentPos :-5
12:24:57 06.08.14 - RTS-9.14 : new Forst Position from Holdings:-5
14:21:33 06.08.14 - RTS-9.14 : New Forst Position from CurrentPos :0
14:21:33 06.08.14 - RTS-9.14 : new Forst Position from Holdings:0
20:21:03 06.08.14 - RTS-9.14 : new Forst Position from Holdings:0
20:21:03 06.08.14 - RTS-9.14 : new Forst Position from Holdings:0
10:05:20 07.08.14 - RTS-9.14 : new Forst Position from Holdings:-4
10:05:20 07.08.14 - RTS-9.14 : new Forst Position from Holdings:-4
11:49:58 07.08.14 - RTS-9.14 : new Forst Position from Holdings:-4
11:50:00 07.08.14 - RTS-9.14 : new Forst Position from Holdings:-4

В 14:21 скинули позу. На вечерке все ок, с утра начинает тупить.

Я, сначала, заметил, что init срабатывает в 9:27, думал это из-за того, что я до начала сессии получаю данные, может там сервак Тразаковский еще не "раздуплился". Вот стал забирать в 10 : 05 с утра. Но та же бадяга.
Можно заморочится и хранить в Global Variable, чтоб не обнулялось после завершения сессии.
Но смысл насиловать труп? Похоже, всем наср..... и ATF умер.  :(
Остается долгая и мучительная миграция на QUIK.

8
Здравствуйте, товарищи ботоводы.

Что-то, похоже, тут никто уже не живет. Но, надеюсь, кто-нибудь откликнится. :)

Не могли бы вы подсказать на счет переменных ATF-окружения.
Интересует, как правильно обработать ситуацию, когда вызываем getEnvVariable c name несуществующей переменной?
Я так понимаю, возвращается "не рыба, не мясо", как и в случае несуществующего элемента в hash'е, видимо, аналог null или undefined из JS. Но я не нашел способа проверить переменную на null в ATF. Функция  hash.haskey(key)  тут тоже не подойдет, насколько я понимаю.

Неужели нет способа проверить это из runtime и нужно проверять вручную?

И еще, как можно из кода узнать ID скрипта, в котором сейчас выполняется функция?

Спасибо!

9
В  "Срочные позиции клиента" строки для этого инструмента вообще нет. Т.е. позиция скинута еще до вечернего клиринга.

У меня вызывается requestFORTSPositions() уже по каждому чиху почти (init, onStartRobot, onOrder).

При остановке\запуске робота ясно видно что  signal::outputMultiple("new Forst Position :" + fortsPositionSize); из кода выше, пишет упорно шортовую позицию, скинутую еще вчера.

UPD:

Вчера позиции, скинутые на вечерке, после 19:00, сегодня отображаются корректно.
Четких steps to reproduce пока нет, будем продолжать наблюдать. Но, похоже, примерно так:
Вошли в шорт до дневного клиринга. Закрыли позицию между 14 00 и 19 00. На след день, с утра, робот видит через requestFORTSPositions, что шорт на месте. В  "Срочные позиции клиентов", при этом, строки по этому инструменту нет.

10
Здравствуйте.
Наткнулся на критическую проблему :

Обновляю инфу о позиции клиента по инструменту через requestFORTSPositions.

Кусок кода обработки ответа сервера:

function onEnvEvent(var event)
{
  if (event == "CLIENT_HOLDINGS") {
      var secInf = getSecInfo();
      var fortsPos = getFORTSPosition(clientId, secInf["secid"]);   
      
      
      if (!fortsPos.haskey("totalnet") )
      {
         fortsPositionSize = 0;
      }
      else
      {
         fortsPositionSize = fortsPos["totalnet"];
      }
      
      signal::outputMultiple("new Forst Position :" + fortsPositionSize);

      
      var frotsMoney = getFORTSMoney(clientId);
      freeMoney  = frotsMoney["mcurrent"];
  }
}

Так вот, после выхода из позиции через обычную лимитированную заявку, почему-то транзак упорно возвращает старую позицию как будто она есть. Систиматически наблюдаю эту болячку во второй половине дня. Скинули позицию после обеда, и даже на след день, с утра, робот упорно считает, что позиция есть.
Брокер : Финам.
Подскажите, что делать.

Спасибо!


Pages: [1]


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!