Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
13.05.2025, 22:42:29
Начало Помощь Поиск Войти Регистрация
Новости: ООО «Скрин маркет системз», правообладатель программы «Система брокерского обслуживания «TRANSAQ» официально заявляет, что не ведет никакой деятельности в мессенджерах или социальных сетях. 
Подробности на нашем сайте  WWW.TRANSAQ.RU.

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Помогите разобраться с получением id заявок и событий onOrder, onTrade « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Помогите разобраться с получением id заявок и событий onOrder, onTrade  (Прочитано 5715 раз)
Termvsrobo
Newbie
*
Сообщений: 18


ICQ Messenger - 362808130
Просмотр профиля Email
« : 16.04.2014, 11:32:37 »

Прошу помощи. Не могу никак разобраться с получением id номеров заявок. Задача стоит такая. Робот выставляет заявку на покупку, нужно получить id заявки и по событию изменения состояния заявки (событие покупки) нужно выставить стоп-ордер на продажу. Умею отдельно выставлять заявки на покупку/продажу и стоп-ордеры в коде. Но никак не могу разобраться с тем как получить id заявки для того, чтобы передать этот id в функции onOrder и onTrade. Подскажите пожалуйста как мне это реализовать. И как функция trade_action::buy передает id транзакции? У меня строчка var p = trade_action::buy вызывает внутреннюю ошибку компилятора.
« Последнее редактирование: 16.04.2014, 11:58:16 от Termvsrobo » Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #1 : 16.04.2014, 15:24:33 »

Внутренней ошибки компилятора возникать не должно, здесь где-то наша ошибка. Можете показать код вашего индикатора?

Для функций onOrder и onTrade вам вообще говоря не нужно как-то специально получать id заявки, они передаются в эту функцию извне автоматически в качестве параметра - самостоятельно вы эти функции вызывать не должны (если я правильно вас понял).
Записан
Termvsrobo
Newbie
*
Сообщений: 18


ICQ Messenger - 362808130
Просмотр профиля Email
« Ответ #2 : 17.04.2014, 05:00:59 »

Исходный код у меня такой:

#line 0 solid red

extern kol_punktov = 15;
extern kol_lotov = 3;
extern step =0.01;

var trend1;
var trend2;
var Balance;

function init()
{
   setInitCandles(10);
    setBounds(0, 10, 0);
}

function checkAction() //Определяем наличие активных заявок
{
   var NewArray = new_object("array"); //Определяем количество обычных активных заявок
   NewArray = getActiveOrderIDs();
   var NewArray2 = new_object("array"); //Определяем количество активных стоп-заявок
   NewArray2 = getActiveStopOrderIDs();
   var n = NewArray.size() + NewArray2.size();
   return n;
}

function calc()

{
   trend1 = IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0] - IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0][-1]; //Определяем направление тренда
   trend2 = IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0][-1] - IndRef("macdhistogram", 12, 26, 9, ind_ema, ind_ema, ind_ema, pt_close)[0][-2];
   line[0] = trend1; //Для графического представления строим линию
   checkAction();
   var t = checkAction();
   line[1] = 0.01;
   line[2] = -0.01;
   line[3] = trend2;
   if (t == 0) {
   if (trend1>0.01 and trend2>0.01) {signal::alert("Открываем длинную позицию");
                              trade_action::buy(kol_lotov, ::lots, close);
   
                              var order1 = new_object("hash");
                              order1["operation"] = OP_SELL;
                              order1["tp_activationprice"] = close+kol_punktov*step;
                              order1["tp_quantity"] = kol_lotov;
                              order1["tp_correction"] = 0.01;
                              order1["tp_guardspread"] = 0.01;
                              order1["sl_activationprice"] = close-kol_punktov*step;
                              order1["sl_quantity"] = kol_lotov;
                              order1["sl_orderprice"] = close-kol_punktov*step;
                              trade_action::transact(order1);} //Если тренд восходящий, то встаем в лонг
}
}
                              

Как тут вы можете видеть, заявка на покупку и стоп ордер выставляются одновременно. Хочу это исправить. Нужно сделать так, чтобы по изменению состояния выставленной заявки onTrade или onOrder выполнялся код выставления стоп-ордера. Условие такое, чтобы активных заявок всегда было не более одной. Т.е. если есть хотя бы одна активная заявка, то ждем ее исполнения. Ума не приложу как мне задействовать функции onOrder или onTrade, так как не могу найти более подробное работы этих функций. Хочется увидеть хоть какой-то пример подобной задачи.
Записан
Termvsrobo
Newbie
*
Сообщений: 18


ICQ Messenger - 362808130
Просмотр профиля Email
« Ответ #3 : 17.04.2014, 05:52:17 »

Для функций onOrder и onTrade вам вообще говоря не нужно как-то специально получать id заявки, они передаются в эту функцию извне автоматически в качестве параметра - самостоятельно вы эти функции вызывать не должны (если я правильно вас понял).

А если мне нужно получать события изменения статуса двух заявок, то как избежать путаницы, если и там и тут используется одна и та же функция trade_acrion?
Записан
Termvsrobo
Newbie
*
Сообщений: 18


ICQ Messenger - 362808130
Просмотр профиля Email
« Ответ #4 : 17.04.2014, 10:20:48 »

Внутренней ошибки компилятора возникать не должно, здесь где-то наша ошибка. Можете показать код вашего индикатора?

Вставил код:

static order = 0;
.....
function calc()

{   
   ...
   if (trend1>0.01 and trend2>0.01) {   order = trade_action::buy(kol_lotov, ::lots, close);
                            ....
                            } //Если тренд восходящий, то встаем в лонг
}

И ошибка компилятора перестала возникать.
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #5 : 21.04.2014, 12:39:38 »

А какую сборку вы используете? Есть подозрение, что именно эта ошибка была исправлена в последних версиях.
Записан
Termvsrobo
Newbie
*
Сообщений: 18


ICQ Messenger - 362808130
Просмотр профиля Email
« Ответ #6 : 21.04.2014, 12:55:11 »

336.01 ATF 1.20
Записан
klimov
Разработчики
Hero Member
*****
Сообщений: 815


Просмотр профиля Email
« Ответ #7 : 21.04.2014, 18:32:52 »

336.01 ATF 1.20

Попробуйте поставить вот это обновление:

http://transaq.ru/cl_files/v508/508Trader.336.25.zip
Записан
Страниц: [1] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Помогите разобраться с получением id заявок и событий onOrder, onTrade « предыдущая тема следующая тема »
Перейти в:  


Войти

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