function onStopOrder(var trnid){ var StopOrder; if (trnid != StopOrder_1_TransaqID) { StopOrder = getStopOrder(trnid); StopOrder_1_Status = StopOrder["status"]; }}
А в чем выражается, что "не удается"? Недостаточно деталей, но вообще насколько я понимаю статус должен быть. Что оказывается в переменной StopOrder_1_Status?
Недостаточно деталей...
#line 0 nodrawstatic 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 ОлегА что теперь если получаем хеш, то его не надо предварительно объявлять/создавать?
Нет, ошибки нет, создавать заранее хэщ совершенно не нужно.
Насчет описываемого поведения, затрудняюсь сказать в чем дело - буду отлаживаться. Теоретически есть подозрение, что ошибка связана с тем, что у нас некоторое время назад была ошибка, связанная с обработкой оператора if. Таких сборок было очень мало, но теоретически вам могла попасться такая. Попробуйте убрать if - если начнет работать, то надо будет делать обновление.
Хорошо, сейчас поэкспериментирую, потом отпишусь о результатах.Только мне пока не понятно, как без if идентифицировать именно ту стоп-заявку, статус которой нас интересует. Сейчас попробую что-нибудь придумать.