Transaq

СБО "Transaq" => Подсистема ATF => Topic started by: Олег on Июля 15, 2013, 12:40:17 pm

Title: Не удается считать статус стоп-заявки в Интре
Post by: Олег on Июля 15, 2013, 12:40:17 pm
Я уж не знаю, была такая тема или нет, было обсуждение этого вопроса на форуме или нет, поэтому решил открыть новую ветку.
Проблема заключается в том, что не могу считать статус стоп-заявки в Интре.

Делаю вот так:

Code: [Select]
function onStopOrder(var trnid)
{
var StopOrder;

if (trnid != StopOrder_1_TransaqID)
  {
  StopOrder = getStopOrder(trnid);
  StopOrder_1_Status = StopOrder["status"];
  }
}

При всем при том,  статус обычных заявок (не стопов) считывать таким способом получается.

В чем причина?
1. Я что-то делаю не так?
2. В Интре решили не моделировать эту тонкость?
3. Баг?
4. Фича? :)

Title: Re: Не удается считать статус стоп-заявки в Интре
Post by: Heller on Июля 15, 2013, 05:25:01 pm
А в чем выражается, что "не удается"? Недостаточно деталей, но вообще насколько я понимаю статус должен быть. Что оказывается в переменной StopOrder_1_Status?
Title: Re: Не удается считать статус стоп-заявки в Интре
Post by: Олег on Июля 15, 2013, 06:30:04 pm
А в чем выражается, что "не удается"? Недостаточно деталей, но вообще насколько я понимаю статус должен быть. Что оказывается в переменной StopOrder_1_Status?

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


Недостаточно деталей...

Вот детали:  :)

Code: [Select]
#line 0 nodraw

static StopOrder_1_IssuedAlready = "Нет";
static StopOrder_1_TransaqID = 0;
static StopOrder_1_Status = -1;

 function onNewCandle()
{
signal::outputMultiple ("StopOrder_1_Status = " + StopOrder_1_Status);
}

 function onStopOrder(var trnid)
{
var StopOrder;

if (trnid != StopOrder_1_TransaqID)
  {
  StopOrder = getStopOrder(trnid);
  StopOrder_1_Status = StopOrder["status"];
  }
}

function init()
{
setBounds (0, countCandles(), 0);
  setInitCandles(countCandles());
}


 function calc()
 { 
  if (not isHistoryCalculated()) {return;}
  line [0] = 0;
 
if (StopOrder_1_IssuedAlready == "Нет")
{
  var stop = new_object("hash");
stop["validbefore"] = TILL_CANCELED;
stop["tp_quantity"] = 1;
stop["sl_quantity"] = 1;
stop["tp_spread"] = 0;
stop["operation"] = OP_BUY;
stop["tp_activationprice"] = close - 25;
stop["tp_brokerref"] = "TP_П_1";
stop["sl_activationprice"] = close + 25;
StopOrder_1_TransaqID = trade_action::transact(stop);

StopOrder_1_IssuedAlready = "Да";
}
  }
 

На каждой новой свечке статус этой заявки всегда показывается равным минус единице, несмотря на то, что с ней присходит (выставляется, ждет исполнения, уже исполнена...).

Title: Re: Не удается считать статус стоп-заявки в Интре
Post by: bugem on Июля 15, 2013, 07:07:22 pm
2 Олег

А что теперь если получаем хеш, то его не надо предварительно объявлять/создавать?  :o
Title: Re: Не удается считать статус стоп-заявки в Интре
Post by: Олег on Июля 15, 2013, 07:47:19 pm
2 Олег

А что теперь если получаем хеш, то его не надо предварительно объявлять/создавать?  :o

Я делал по аналогии вот с этим:

(http://s11.postimg.org/d2s1vn9fj/Snap_2013_07_15_20_42_54_002.jpg) (http://postimg.org/image/d2s1vn9fj/)

Может очередная ошибка в документации?
Title: Re: Не удается считать статус стоп-заявки в Интре
Post by: Heller on Июля 15, 2013, 07:53:15 pm
Нет, ошибки нет, создавать заранее хэщ совершенно не нужно.

Насчет описываемого поведения, затрудняюсь сказать в чем дело - буду отлаживаться. Теоретически есть подозрение, что ошибка связана с тем, что у нас некоторое время назад была ошибка, связанная с обработкой оператора if. Таких сборок было очень мало, но теоретически вам могла попасться такая. Попробуйте убрать if - если начнет работать, то надо будет делать обновление.
Title: Re: Не удается считать статус стоп-заявки в Интре
Post by: Олег on Июля 15, 2013, 08:07:35 pm
Нет, ошибки нет, создавать заранее хэщ совершенно не нужно.

Ну я так и думал.
А чего тогда Бугем меня путает, язвительные вопросики подбрасывает? :)
Безобразие! :)

Насчет описываемого поведения, затрудняюсь сказать в чем дело - буду отлаживаться. Теоретически есть подозрение, что ошибка связана с тем, что у нас некоторое время назад была ошибка, связанная с обработкой оператора if. Таких сборок было очень мало, но теоретически вам могла попасться такая. Попробуйте убрать if - если начнет работать, то надо будет делать обновление.

Хорошо, сейчас поэкспериментирую, потом отпишусь о результатах.
Только мне пока не понятно, как без if идентифицировать именно ту стоп-заявку, статус которой нас интересует. Сейчас попробую что-нибудь придумать.
Title: Re: Не удается считать статус стоп-заявки в Интре
Post by: bugem on Июля 15, 2013, 08:08:23 pm
Нет, ошибки нет, создавать заранее хэщ совершенно не нужно.

Heller, это относится только к hash  или и к другим object тоже?
Title: Re: Не удается считать статус стоп-заявки в Интре
Post by: Олег on Июля 15, 2013, 10:49:14 pm
Насчет описываемого поведения, затрудняюсь сказать в чем дело - буду отлаживаться. Теоретически есть подозрение, что ошибка связана с тем, что у нас некоторое время назад была ошибка, связанная с обработкой оператора if. Таких сборок было очень мало, но теоретически вам могла попасться такая. Попробуйте убрать if - если начнет работать, то надо будет делать обновление.

Хорошо, сейчас поэкспериментирую, потом отпишусь о результатах.
Только мне пока не понятно, как без if идентифицировать именно ту стоп-заявку, статус которой нас интересует. Сейчас попробую что-нибудь придумать.

Heller, отбой воздушной тревоги! :)
Не надо отлаживаться в этом направлении!
В процессе экспериментов я в своем коде (см. выше) поймал огромного колорадского жука. Удивляюсь, как я его раньше не заметил.
Вот он-то все и портил:

(http://s24.postimg.org/kufc5w66t/Snap_2013_07_15_23_40_26_003.png) (http://postimage.org/)

Жука убил, теперь все работает идеально. В смысле, статус стоп-заявок считывается без проблем.
Title: Re: Не удается считать статус стоп-заявки в Интре
Post by: Heller on Июля 19, 2013, 04:20:37 pm
bugem, нет, любые функции, которые возвращают какие-то объекты, они заранее их создают сами.