Transaq
СБО "Transaq" => Подсистема ATF => Topic started by: Олег 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. Фича? :)
-
А в чем выражается, что "не удается"? Недостаточно деталей, но вообще насколько я понимаю статус должен быть. Что оказывается в переменной StopOrder_1_Status?
-
А в чем выражается, что "не удается"? Недостаточно деталей, но вообще насколько я понимаю статус должен быть. Что оказывается в переменной StopOrder_1_Status?
В эту переменную, по идее, должен считываться статус моей стоп-заявки. Но он почему-то не считывается. В самом начале работы скрипта я присваиваю этой переменной значение минус единица. Стоп-заявка выставляется, срабатывает и т.п., но статус так и остается равным минус единице.
А вот для обычных заявок (не стопов) статус считывается без проблем (т.е. исполнена, отклонена брокером и т.п.).
Недостаточно деталей...
Вот детали: :)
#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 = "Да";
}
}
На каждой новой свечке статус этой заявки всегда показывается равным минус единице, несмотря на то, что с ней присходит (выставляется, ждет исполнения, уже исполнена...).
-
2 Олег
А что теперь если получаем хеш, то его не надо предварительно объявлять/создавать? :o
-
2 Олег
А что теперь если получаем хеш, то его не надо предварительно объявлять/создавать? :o
Я делал по аналогии вот с этим:
(http://s11.postimg.org/d2s1vn9fj/Snap_2013_07_15_20_42_54_002.jpg) (http://postimg.org/image/d2s1vn9fj/)
Может очередная ошибка в документации?
-
Нет, ошибки нет, создавать заранее хэщ совершенно не нужно.
Насчет описываемого поведения, затрудняюсь сказать в чем дело - буду отлаживаться. Теоретически есть подозрение, что ошибка связана с тем, что у нас некоторое время назад была ошибка, связанная с обработкой оператора if. Таких сборок было очень мало, но теоретически вам могла попасться такая. Попробуйте убрать if - если начнет работать, то надо будет делать обновление.
-
Нет, ошибки нет, создавать заранее хэщ совершенно не нужно.
Ну я так и думал.
А чего тогда Бугем меня путает, язвительные вопросики подбрасывает? :)
Безобразие! :)
Насчет описываемого поведения, затрудняюсь сказать в чем дело - буду отлаживаться. Теоретически есть подозрение, что ошибка связана с тем, что у нас некоторое время назад была ошибка, связанная с обработкой оператора if. Таких сборок было очень мало, но теоретически вам могла попасться такая. Попробуйте убрать if - если начнет работать, то надо будет делать обновление.
Хорошо, сейчас поэкспериментирую, потом отпишусь о результатах.
Только мне пока не понятно, как без if идентифицировать именно ту стоп-заявку, статус которой нас интересует. Сейчас попробую что-нибудь придумать.
-
Нет, ошибки нет, создавать заранее хэщ совершенно не нужно.
Heller, это относится только к hash или и к другим object тоже?
-
Насчет описываемого поведения, затрудняюсь сказать в чем дело - буду отлаживаться. Теоретически есть подозрение, что ошибка связана с тем, что у нас некоторое время назад была ошибка, связанная с обработкой оператора if. Таких сборок было очень мало, но теоретически вам могла попасться такая. Попробуйте убрать if - если начнет работать, то надо будет делать обновление.
Хорошо, сейчас поэкспериментирую, потом отпишусь о результатах.
Только мне пока не понятно, как без if идентифицировать именно ту стоп-заявку, статус которой нас интересует. Сейчас попробую что-нибудь придумать.
Heller, отбой воздушной тревоги! :)
Не надо отлаживаться в этом направлении!
В процессе экспериментов я в своем коде (см. выше) поймал огромного колорадского жука. Удивляюсь, как я его раньше не заметил.
Вот он-то все и портил:
(http://s24.postimg.org/kufc5w66t/Snap_2013_07_15_23_40_26_003.png) (http://postimage.org/)
Жука убил, теперь все работает идеально. В смысле, статус стоп-заявок считывается без проблем.
-
bugem, нет, любые функции, которые возвращают какие-то объекты, они заранее их создают сами.