Transaq

СБО "Transaq" => Подсистема ATF => Topic started by: Dmitriy on Июня 27, 2013, 06:32:45 pm

Title: Автоматическое выставление заявок
Post by: Dmitriy on Июня 27, 2013, 06:32:45 pm
День добрый!
Скрипт, приведенный в примере по адресу http://www.transaq.ru/dokuwiki/atf:заявки_и_сделки :

function fixProfit(var id)
{
  var trade = getTrade(id);
  if (trade["operation"] == OP_BUY) {
    trade["operation"] = OP_SELL;
    trade["price"] = trade["price"] * 1.03;
    trade_action::transactMultiple(trade);
  }
}

не желает работать на ФОРТС. Попросту игнорируется.
Ver. 5.05.305.07, rev51, ATF 1.18.
Не подскажете ли, в чем может крыться причина?
Заранее благодарю!!
Title: Re: Автоматическое выставление заявок
Post by: Heller on Июня 28, 2013, 03:07:23 pm
У ATF есть возможности для установления причин таких ошибок. Посмотрите на той же странице документации раздел "Ошибки и номера транзакций" - сведения оттуда помогут определить в чем причина того, что код не приводит к совершению сделки.
Title: Re: Автоматическое выставление заявок
Post by: Dmitriy on Июня 28, 2013, 04:04:41 pm
Проверил: сообщения signal::output(trade["message"])  и  signal::output(getLastErrorMessage()) - пустые..
Title: Re: Автоматическое выставление заявок
Post by: bugem on Июня 28, 2013, 05:12:34 pm
2 Dmitriy
Попробуйте так
Code: [Select]
function fixProfit(var id)
{
    var trade = new_object("hash");    // Создать объект типа хэш
    trade = getTrade(id);
    ...    // Далее то, что там у Вас было далее :)
}
Title: Re: Автоматическое выставление заявок
Post by: Dmitriy on Июля 01, 2013, 12:04:02 pm
Большое спасибо Вам за участие, однако, к моему удивлению, этот способ также не сработал. Возымела эффект лишь замена функции на onClientTrade(id), вместо getProfit(id). В этом случае она вызывается по факту совершения сделки.