Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Января 29, 2022, 01:26:02 am
Начало Помощь Поиск Войти Регистрация
Новости:

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Алерт « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Алерт  (Прочитано 8647 раз)
AlexeyNev
Jr. Member
**
Сообщений: 53


Просмотр профиля Email
« : Апреля 14, 2014, 01:28:54 pm »

Привет, подскажите
Почему alert срабатывает по текущей цене клоуз , когда свеча ещё не закончилась. Как сделать так, чтобы он срабатывал на реальной цене close текущей свечки, то есть по окончанию расчета свечки (алерт нужен в тот момент когда свечка закрыла выше линии, а не проколола ее)?


if (close > line[1]) {
signal::alert("?????? ? LONG!");


Еще небольшой вопрос

функция isHistoryCalculated() принимает True когда начинается расчёт онлайн или наоборот?

есть ли где более подробная информация по её работе?
Записан
klf302
Newbie
*
Сообщений: 30


Просмотр профиля Email
« Ответ #1 : Апреля 21, 2014, 10:31:16 am »

Здраствуйте.В выходные на 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.Вставил этот скрипт.Но не работает.Сначала при запуске отвечал: «Выход за границы при обращению к индикатору»,а теперь при запуске ничего не отвечает и не работает.
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #2 : Апреля 21, 2014, 12:07:11 pm »

Из того, что вы написали ничего не понятно.

Ошибка "Выход за границы при обращению к индикатору" в вашем коде явно не может происходить, поскольку вы не обращаетесь  тут к данным свечей или других индикаторов вообще никак.

Вполне возможно, что у вас происходит деление на ноль - тут для этого много возможностей и после этого скрипт, естественно, работать не будет.
Записан
klf302
Newbie
*
Сообщений: 30


Просмотр профиля Email
« Ответ #3 : Апреля 22, 2014, 05:50:40 pm »

Я пока так и не разобрался.Но одно не пойму:почему в Transaq Intra этот код работает нормально,а в Транзаке нет.
Записан
klf302
Newbie
*
Сообщений: 30


Просмотр профиля Email
« Ответ #4 : Апреля 25, 2014, 04:34:07 pm »

Здраствуйте.Есть ли программа,которая обрабатывает таблицу сделок?Накапливает количество купленных акций по бумаге,на какую сумму куплено.То же по продаже.GetBoughtMoney,кажется ,не работает.
Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #5 : Апреля 25, 2014, 08:40:46 pm »

substr(as_string(pos5),1,5) - обращаемся к строке,... в данной операции она рассматривается как массив , пусть даже символов,...ищите проблему тут....проверенно !!!

substr(as_string(pos6),1,5)) - ну и тут....

проконтролируйте pos5, и варьируйте параметрами 1,5) - станет понятно.

ну или в последних сборках отвалились getBoughtMoney() ; и все подобные по деньгам функции, которые выдают пустоту !!!
« Последнее редактирование: Апреля 25, 2014, 08:47:44 pm от White Noise » Записан
klf302
Newbie
*
Сообщений: 30


Просмотр профиля Email
« Ответ #6 : Апреля 28, 2014, 10:48:28 am »

Со строками еще не разобрался.Но дело в том,что  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);
}
Работает не совсем правильно,видимо,переменные неправильно объявил.Накопленная сумма часто обнуляется.Хотя надо и номер сделки проверять и код бумаги.И самую первую сделку надо обрабатывать по другой ветке.Может есть подобная программа,чтобы не придумывать велосипед?
Записан
klf302
Newbie
*
Сообщений: 30


Просмотр профиля Email
« Ответ #7 : Апреля 28, 2014, 03:25:52 pm »

Подскажите, как подкорректировать этот код ,чтобы количество купленного  по бумаге,а также на какую сумму куплено накапливалось с каждой сделкой нормально.То же и по продаже.
Записан
DiveRSS
Jr. Member
**
Сообщений: 68


Просмотр профиля Email
« Ответ #8 : Апреля 28, 2014, 03:29:31 pm »

getSecBalance() посмотри данную команду
Записан
klf302
Newbie
*
Сообщений: 30


Просмотр профиля Email
« Ответ #9 : Апреля 28, 2014, 04:38:24 pm »

Эта команда не очень подходит.Как узнать  сколько я купил и на какую сумму я купил сегодня данной бумаги?Как накапливать эту самую сумму с каждой сделкой?
Записан
DiveRSS
Jr. Member
**
Сообщений: 68


Просмотр профиля Email
« Ответ #10 : Апреля 28, 2014, 05:13:33 pm »

В твоем вопросе заложен и ответ.
1 "сколько я купил"  Начнем с того что переменные должны быть static  в них мы будем хранить данные.
2 Количество ты можешь по последнему исполненному ордеру так же как и цену ( но тут не уверен что будет именно та цена что тебя интересует).
3. Если нужно конкретно накапливать смотри формулы вывода и забора данных из файла ( я если честно не использую их я работаю внутри дня)

Опять таки какой срок хранения для каких целей используются в дальнейшем данные.

Команды ну тут как бы тебе надо посмотреть статус ордера если он выполнен взять данные из него


function onOrder(var idl)

   status = getOrder(idl);
   status = status["status"];

if (status == 11)
{
Выполнение арифметики

}

Код выше приведен как направление в котором копать из ордера ты так же можешь получить количество и по идее цену ( но какую цену ты получишь я не знаю средние по сделке или последнюю не проверял не знаю).


З.Ы. В одном ордере может быть несколько трейдов так что функция onTrade ну как бы не особо хороша для подсчетов данных цифр.
Записан
klf302
Newbie
*
Сообщений: 30


Просмотр профиля Email
« Ответ #11 : Апреля 29, 2014, 09:41:57 am »

Спасибо.Насчет 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);
 }
Записан
DiveRSS
Jr. Member
**
Сообщений: 68


Просмотр профиля Email
« Ответ #12 : Апреля 29, 2014, 09:54:51 am »

signal::alertMultipe  <--  Вот Это ставь за место signal::alert

signal::alert<-- Срабатывает 1 раз в свечку.
Записан
Страниц: [1] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Алерт « предыдущая тема следующая тема »
Перейти в:  


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!