Transaq
СБО "Transaq" => Подсистема ATF => Topic started by: AlexeyNev on 14.04.2014, 13:28:54
-
Привет, подскажите
Почему alert срабатывает по текущей цене клоуз , когда свеча ещё не закончилась. Как сделать так, чтобы он срабатывал на реальной цене close текущей свечки, то есть по окончанию расчета свечки (алерт нужен в тот момент когда свечка закрыла выше линии, а не проколола ее)?
if (close > line[1]) {
signal::alert("?????? ? LONG!");
Еще небольшой вопрос
функция isHistoryCalculated() принимает True когда начинается расчёт онлайн или наоборот?
есть ли где более подробная информация по её работе?
-
Здраствуйте.В выходные на Intra я попробовал такой код.
function init()
{
setInitCandles(1);
}
function calc(){
var pos1= getBought() ;
var pos2= getBoughtMoney() ;
var pos5=pos2/pos1;
var pos3= getSold() ;
var pos4= getSoldMoney() ;
var pos6=pos4/pos3;
signal::alert("купля"+" "+pos1+" "+pos2+" "+substr(as_string(pos5),1,5)+" продажа"+" "+pos3+" "+pos4+" "+substr(as_string(pos6),1,5));
}
Работает нормально.Сегодня с утра я обновил Transaq до сборки 338.Вставил этот скрипт.Но не работает.Сначала при запуске отвечал: «Выход за границы при обращению к индикатору»,а теперь при запуске ничего не отвечает и не работает.
-
Из того, что вы написали ничего не понятно.
Ошибка "Выход за границы при обращению к индикатору" в вашем коде явно не может происходить, поскольку вы не обращаетесь тут к данным свечей или других индикаторов вообще никак.
Вполне возможно, что у вас происходит деление на ноль - тут для этого много возможностей и после этого скрипт, естественно, работать не будет.
-
Я пока так и не разобрался.Но одно не пойму:почему в Transaq Intra этот код работает нормально,а в Транзаке нет.
-
Здраствуйте.Есть ли программа,которая обрабатывает таблицу сделок?Накапливает количество купленных акций по бумаге,на какую сумму куплено.То же по продаже.GetBoughtMoney,кажется ,не работает.
-
substr(as_string(pos5),1,5) - обращаемся к строке,... в данной операции она рассматривается как массив , пусть даже символов,...ищите проблему тут....проверенно !!!
substr(as_string(pos6),1,5)) - ну и тут....
проконтролируйте pos5, и варьируйте параметрами 1,5) - станет понятно.
ну или в последних сборках отвалились getBoughtMoney() ; и все подобные по деньгам функции, которые выдают пустоту !!!
-
Со строками еще не разобрался.Но дело в том,что getBoughtMoney не работает и эта программа не будет работать.Вот другой скрипт:
var moneyito;
var quanito;
var i;
function onTrade(var id)
{
var trade = getTrade(id);
var pr = trade["price"];
var quan = trade["quantity"];
var money = pr*quan;
if (i > 0)
{
quanito = quanito + quan;
moneyito = moneyito + money;
i = i + 1;
}
else
{
quanito=quan;
moneyito = money;
i =i + 1;
}
signal::alert("куп"+pr+" "+quanito+" "+moneyito);
}
Работает не совсем правильно,видимо,переменные неправильно объявил.Накопленная сумма часто обнуляется.Хотя надо и номер сделки проверять и код бумаги.И самую первую сделку надо обрабатывать по другой ветке.Может есть подобная программа,чтобы не придумывать велосипед?
-
Подскажите, как подкорректировать этот код ,чтобы количество купленного по бумаге,а также на какую сумму куплено накапливалось с каждой сделкой нормально.То же и по продаже.
-
getSecBalance() посмотри данную команду
-
Эта команда не очень подходит.Как узнать сколько я купил и на какую сумму я купил сегодня данной бумаги?Как накапливать эту самую сумму с каждой сделкой?
-
В твоем вопросе заложен и ответ.
1 "сколько я купил" Начнем с того что переменные должны быть static в них мы будем хранить данные.
2 Количество ты можешь по последнему исполненному ордеру так же как и цену ( но тут не уверен что будет именно та цена что тебя интересует).
3. Если нужно конкретно накапливать смотри формулы вывода и забора данных из файла ( я если честно не использую их я работаю внутри дня)
Опять таки какой срок хранения для каких целей используются в дальнейшем данные.
Команды ну тут как бы тебе надо посмотреть статус ордера если он выполнен взять данные из него
function onOrder(var idl)
status = getOrder(idl);
status = status["status"];
if (status == 11)
{
Выполнение арифметики
}
Код выше приведен как направление в котором копать из ордера ты так же можешь получить количество и по идее цену ( но какую цену ты получишь я не знаю средние по сделке или последнюю не проверял не знаю).
З.Ы. В одном ордере может быть несколько трейдов так что функция onTrade ну как бы не особо хороша для подсчетов данных цифр.
-
Спасибо.Насчет static подсказали,а то я все var пользуюсь.Вот этот код получше работает, накапливает количество акций и сумму в рублях,хотя алерт не на каждую сделку исполняется.
static moneyito;
static quanito;
static money;
static i;
function onTrade(var id)
{
var trade = getTrade(id);
var pr = trade["price"];
var quan = trade["quantity"];
money = pr*quan;
if (i > 0)
{
quanito = quanito + quan;
moneyito = moneyito + money;
i = i + 1;
}
else
{
quanito=quan;
moneyito = money;
i =i + 1;
}
signal::alert("куп"+pr+" "+quanito+" "+moneyito);
}
-
signal::alertMultipe <-- Вот Это ставь за место signal::alert
signal::alert<-- Срабатывает 1 раз в свечку.