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

Просмотр сообщений

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - andreyvv

Pages: 1 ... 4 5 [6]
76
Добрый день. Возможно ли внести возможность вставки собственных подписей горизонтальный трендов? Чтобы не просто цена была написана, а была возможность у пользователя подписать что это за уровень ("MA-200", "MA-50" и т.п.)

77
Вопрос к разработчикам или знающим. Вот есть достаточно редкая ситуация на рынке, которая может дать статистическое преимущество (в теории)). В связи с чем необходимо запустить тысячи роботов на разных рынках и инструментах, чтобы там, где ситуация складывается разместить заявку. Есть ли какие-то аппаратные или программные ограничения для ATF? Сколько копий одного робота можно запустить на одной машине (2 тысячи, 3 тысячи, 5 тысяч)?

78
Хотелось бы иметь что-то типа функции LastApprovedCross, чтоб ATF запоминал какая из отслеживаемых линий пересекла другую снизу или сверху. Полезная функция в ситуации, когда выбило из позиции по стопу и цена снова пошла в сторону поданного сигнала. Ну или если кто решил как эмулировать эту функцию, поделитесь, пожалуйста наработками.

Просто перезаходить когда сигнальная линия выше или ниже уровня не вариант, так как важно направление движения. Здесь бы такая функция была очень кстати. Скажем на ApprovedCross открываем позицию, затем при каждом кальке проверяем её и если LastApprovedCross показывает лонг, а позиция равна нулю (выбило стопом), выставляем заявку... Как-то так.

UPD: Пока думается сделать такую конструкцию:

1)В функции OnApprovedCross наряду с размещением заявки открываем файл и сохраняем туда номер линии и направление пересечения.

2) По событию OnTrade (выбило по стопу) открываем файл и считываем переменную LastApprovedCross

3) В Calc проверяем наличие позиции и если она равна нулю, а пересечение не отменено размещаем лимитную заявку.

Однако, в таком раскладе робот перестаёт быть универсальным, для каждого инструмента понадобится свой файл для хранения переменных пересечения.

79
OnNewCandle слишком редко получится. Остаётся проблема появления и исчезновения пересечения линий индикатора, на одной разворотной свече (30 минутный таймфрейм) может быть три-четыре раза переворот позиции. Если данные запрашивать только на новой свече, то цена может убежать очень далеко вперёд. Математическое ожидание в таком случае и вовсе из положительного может стать отрицательным. Собственно, потому и огород горожу, что после каждого калька роботу нужно знать положение линий и баланс. Пока придумал только использовать getbought - getsold, но при этом необходимо выходить из всех позиций перед вечерним клирингом и перезаходить после. Ну это на ФОРТС, на фонде, как понимаю, таких проблем нет.

80
Спасибо за ответ. Я правда код не пробовал :-), пока по другому пути пошёл, но радует, что какая-то "жизнь" здесь сохраняется. Честно говоря, вообще не понимаю, почему поддержку ATF закрыли. Полно вопросов возникает, а точный и квалифицированный ответ получить негде. Давно бы уже косой десяток роботов наклепал и у брокера оборот бы в десять раз был выше, но пока по большей части не устраивает работа МТС.

81
Замучился с адекватным получением позиции по ФОРТС. Написал скрипт для теста. При запуске прекращают поступать данные в терминал (не отображается свечной график), даже вручную невозможно посмотреть срочные позиции и средства клиента. Лечится только перезагрузкой.  Пробовал по разнице "продано-куплено", но при переносе конструкция bal = getBought() - getSold(); не работает, робот не торгует до клиринга, если позиция ноль с прошлых торгов или торгует непонятно как, если позиция не нулевая). Закладываемый в скрипт смысл в том, чтобы даже когда через ночь передаёт не ноль, а пустое множество, подменять эти данные нулём. Но гладко было на бумаге, а в реал-лайфе не работает.

 Объясните люди добрые, где косяк (или свой вариант гарантированного получения позиции по ФОРТС, в том числе при переносе через ночь):

#line 0 solid blue

static pos;
static curPos;

function init()
{
   pos = new_object("hash");
}

function onEnvEvent(var eventname)
{   
        if (eventname == "CLIENT_HOLDINGS")
        {var info=getSecInfo();
         pos =  getFORTSPosition(getClient(), info["secid"]);}
}


function calc()
{       
       requestFORTSPositions(getClient());
       if (pos.isEmpty()) {curPos=0;} else {curPos=pos["totalnet"];}
       line[0] = curPos; 
}

UPDATE:

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

#line 0 solid blue

static pos;
static curPos;

function init()
{
   pos = new_object("hash");
   requestFORTSPositions(getClient());
}

function onEnvEvent(var eventname)
{   
        if (eventname == "CLIENT_HOLDINGS")
        {var info=getSecInfo();
        pos =  getFORTSPosition(getClient(), info["secid"]);}
}


function calc()
{     
       if (pos.isEmpty()) {curPos=0;} else {curPos=pos["totalnet"];}
       line[0] = curPos; 
}

82
В приведённом ниже коде робот совершает сделки в зависимости от положения линий:


  bal = getBought() - getSold();
     signal::output("Закрытие шорта и лонг на = " + bal);
     if (bal<0) {
     if(line[6]>line[7]){
     trade_action::buy(lot + abs(bal), ::lots);}
}


     bal = getBought() - getSold();
     signal::output("Лонг на = " + bal);
     if (bal==0) {
     if(line[6]>line[7]){
     trade_action::buy(lot, ::lots);}
}


     bal = getBought() - getSold();
     signal::output("Наращиваем лонг на = " + bal);
     if (bal>0) {
     if(line[6]>line[7]){
     trade_action::buy(lotgrow, ::lots);}
}


     bal = getBought() - getSold();
     signal::output("Наращиваем шорт на = " + bal);
     if (bal<0) {
     if(line[6]<line[7]){
     trade_action::sell(lotgrow, ::lots);}
}


     bal = getBought() - getSold();
     signal::output("Шорт на = " + bal);
     if (bal==0) {
     if(line[6]<line[7]){
     trade_action::sell(lot, ::lots);}
}

     bal = getBought() - getSold();
     signal::output("Закрываем лонг и входим в шорт на = " + bal);
     if (bal>0) {
     if(line[6]<line[7]){
     trade_action::sell(lot+abs(bal), ::lots);}
}

После чего хочу выставить условные заявки для закрытия открытых позиций, однако условные заявки не выставляются. Если кто может, подскажите в чём ошибка в коде:


//Фиксация прибыли лонга
}
function fixProfitBuy(var id)
{
//Переменная цены для фиксации прибыли
  var fixprice = IndRef("atr", renko_atr)[0]*atr_mult_rate; 
  var trade = getTrade(id);
  if (trade["operation"] == OP_BUY) {
    trade["operation"] = OP_SELL;
    trade["withinpos"] = true;
    trade["price"] = trade["price"] + fixprice;
    trade_action::transactMultiple(trade);
  }


//Фиксация прибыли шорта
}
function fixProfitSell(var id)
{
//Переменная цены для фиксации прибыли
  var fixprice = IndRef("atr", renko_atr)[0]*atr_mult_rate;
  var trade = getTrade(id);
  if (trade["operation"] == OP_SELL) {
    trade["operation"] = OP_BUY;
    trade["withinpos"] = true;
    trade["price"] = trade["price"] - fixprice;
    trade_action::transactMultiple(trade);
  }
}

83
Нет, та же самая ошибка:

"AO_MY, line 18: Ссылка на неопределённую линию индикатора."

84
Подскажите, кто-то из старожилов, кто бывает: как получить в скрипте цвет бара AO на текущей свече?

UPD: Как я понял цвет бара нельзя стандартными методами получить. Пошёл окольным путём и написал такой скрипт:

#line 0 nodraw
#line 1 colored_hist
 
extern period1 = 5;
extern period2 = 34;
 
function init()
{
   var max = period1;
   if (period2 > max) {max = period2;}
   setBounds(0, max - 1, 0);
}
 
function calc()
{
   line[0] = MovAvg(ind_sma, period1, pt_med) - MovAvg(ind_sma, period2, pt_med);

   if (line[0] > line[0][-1]) {
        line[1] = 100; 
}  else   
    { line[1] = -100;       

}

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

AO_MY, line 18: Ссылка на неопределённую линию индикатора.

Как я понимаю, ругается на эту конструкцию "if (line[0] > line[0][-1])" - пытаюсь сравнить линию 0 с линией 0 на прошлой свече, видимо что-то не так понимаю.

Но при этом индикатор работает нормально, но хотелось бы убрать эту ошибку, т.к. не понятно как она может сказаться на функционировании робота.

Старожилы поправьте код, пожалуйста, по возможности.


85
Поделитесь, пожалуйста, намётками скрипта, если кто-то такой реализовал, который бы закрывал открытую позицию при отмене пересечения линий. Использовать OnNewCandle очень не хочется, т.к. за время свечи цена может улететь порядочно. Очень нужен такой алгоритм:

1. Отследили пересечение линий - открыли позицию.
2. Если по завершении свечи пересечение отменилось - закрываем открытую позицию и продолжаем отслеживать перечечение.

86
По RI проверьте выставление цен, там шаг цены 10, а по SI - 1 рубль, может недопустимая цены выставляется? Насколько понимаю рыночная заявка не поддерживается биржей на самом срочном рынке, ATF здесь не поможет. В терминале, ИМХО, эмуляция рыночной заявки. Могу ошибаться, но похоже, когда отмечается "по рынку" в стакан кидается лимитная заявка с ценой равной максимуму или минимуму дня, при этом поскольку на рынке присутствуют лучшие предложения, то сделка заключается по текущей цене. Довольно забавно, получается, что чисто теоретически (хотя я про такое не слышал) можно получить сделку по цене планки на сегодня и кагбэ претензии предъявлять некому, т.к. сам указал максимальную цену в заявке :-)

87
Удивительно, но  нет. Ставил тейки именно на 100% позиции. Открывает лот (причём не понятно откуда берётся количество, если открытых позиций по инструменту нет), что, собственно и удивило. Ради интереса завтра попробую какую-нибудь мелкую заявку с утра разместить  с тейком на 100%. Скрин выложу, если повторится.

88
Адски неудобно, что невозможно отключить открытие TP новой позиции. Можно ли установить такую функцию, скажем "Количество в пределах позиции" как в условной заявке? Пример: ставится условная заявка, сразу двухсторонняя стоп-заявка. Свеча пролетает мимо условной заявки, позиция не открывается, но TP срабатывает, покупая на падающей свече. Всё решил бы один маленький чекбокс в тейке "Количество в пределах позиции".

89
1)При попытке импортировать через тэговый файл TP с такими тэгами

TRN_ID=1;TRN_TYPE=NEW_STOP;MARKET=FORTS;BOARD=FUT;SEC_CODE=SRH6;CL_ID=7777tjx;B_S=B;ALT_ACC=Y;TP_ACT_PRICE=8400;TP_CORRECTION_UNIT=PRICE;TP_CORRECTION=10;TP_GUARD_SPREAD=MKT;TP_SPREAD_UNIT=PRICE_PERCENT;TP_USE_CREDIT=N;TP_QUANTITY=50;TP_QTY_UNIT=POS_PERCENT;TP_GUARD_TIME=5

Выдаёт всё время ошибку: 1,18/01/2016 18:36:43,1,4,,Недопустимое значение параметра:TP_USE_CREDIT

Со SL тоже самое:  недопустимое значение SL_USE_CREDIT.

Вне зависимости ставишь Y или N или вообще убираешь этот тэг. Одно и тоже. Стоп-заявки не создаются.

И второе: не получается установить коррекцию в процентах TP_CORRECTION_UNIT=PRICE_PERCENT;TP_CORRECTION=0,01 - в таком виде выдает ошибку "Неверный формат TP_CORRECTION.

Есть ли рабочий вариант тэгов SL и TP, а то уже устал с ними бороться. Версия Transaq - 5.31.372.10, rev.59, ATF 1.20

UPDATE: торгую только на FORTS, счёт не маржинальный. При выставлении заявок чекбокс "Использовать кредит" вообще не доступен. Может быть это влияет? Так как не проходят стоп-заявки из файла с любым значением параметра USE_CREDIT

Pages: 1 ... 4 5 [6]


Войти

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