Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Июля 22, 2019, 07:13:27 am
Начало Помощь Поиск Войти Регистрация
Новости:

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Не работает автоматическая подача заявок у финам « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Не работает автоматическая подача заявок у финам  (Прочитано 231 раз)
siegried
Newbie
*
Сообщений: 5


Просмотр профиля Email
« : Апреля 27, 2019, 01:07:59 pm »

Не работает автоматическая подача заявок на покупку-продажу у брокера финам.

var order = new_object("hash");
order["quantity"] = lots;
order["operation"] = OP_BUY;
trade_action::transact(order);

Значок МТС зеленый.

В финаме ничего толком пояснить не смогли.
Прошу помочь
« Последнее редактирование: Апреля 27, 2019, 01:09:34 pm от siegried » Записан
osle
Newbie
*
Сообщений: 29


Просмотр профиля Email
« Ответ #1 : Апреля 27, 2019, 10:23:53 pm »

Вот прямо в приведенном виде она и не сработает.
Т.к.: «quantity | Количество лотов в заявке» ©.
«lots» это переменная? Ей значение присвоено?

Конечно на скрипт лучше посмотреть бы в более развернутом виде
(в части формирования ордера и ключей хэша).
И на ошибки, если таковые имеются при выполнении.
Также: по какому счёту заявка (срочный/единый)?

ЗЫ. у «Финама», на сей момент, точно работают «Простейшие заявки» (без хэша).

« Последнее редактирование: Апреля 27, 2019, 10:31:19 pm от osle » Записан
siegried
Newbie
*
Сообщений: 5


Просмотр профиля Email
« Ответ #2 : Апреля 29, 2019, 04:49:43 pm »

Брокер финам, счет единый. привожу код

#line 0 solid black

extern   "number" period = 14;                       
extern   "number" lots = 50;
extern buy_treshold = -90;
extern sell_treshold = -10;



static   secName;
static   lotsize;
static   NewCandle;
static   CandleTime;
static   price;
static   stop_id;
static   trend;
static buy_checkpoint = 0;
static sell_checkpoint = 0;
   
function init()
{
   setInitCandles(period + 1);
   secName = getSecName();
   lotsize = getLotSize();
   NewCandle = false;
   CandleTime = getFormattedTime(getServerTime());

}

function calc()
{

   line[0] = IndRef("wpr", period)[0];

if (line[0] <= -95)
{

     if(getSecBalance()< lots ){
         trade_action::buy(lots, ::securities);
                                signal::output("BUY");
     }

     
}

if(line[0] >= -20)
{


   if(getSecBalance() >= lots){
         trade_action::sell(lots, ::securities);
                                 signal::output("SELL");
     
   }
}

}


Записан
siegried
Newbie
*
Сообщений: 5


Просмотр профиля Email
« Ответ #3 : Апреля 29, 2019, 04:50:04 pm »

Причем на just2trade такой код отлично работает.
Записан
siegried
Newbie
*
Сообщений: 5


Просмотр профиля Email
« Ответ #4 : Апреля 29, 2019, 05:51:43 pm »

Кстати увидел ошибку: Некорректный ордер [66]. Неверно указан инструмент или по данному инструменту торги запрещены. Инструмент UNH, торгую ей всё время
Записан
osle
Newbie
*
Сообщений: 29


Просмотр профиля Email
« Ответ #5 : Мая 01, 2019, 12:28:04 am »


Скрипт тестировал:

- «Финам»;
- «ЕДП»;
- фондовая секция (на СПб ФБ у меня нет доступа, надеюсь площадка непринципиальна);
- «Газпром» (1 лот[!])

Работает при условиях:

1. Заявки выставляются НЕ при обращении к ЕДП, а при обращении к его внутреннему счёту прикреплённому
к интересующей секции. Это, скорее всего, связано с тем, что проект «АТФ» был закрыт до появления
ЕДП, - механизм, соответственно, не прописан под него. Ну так показалось. Поэтому или прописываем
внутренний счёт в скрипте [типа: setClient( "B333/B333" )], или выбираем его в окне терминала (плохой вариант),
предварительно «расцепив» ЕДП кнопкой «Режим Клиент/Юнион». Я выбирал его в окне терминала.

2. Т.к. заявки выставляются внутри calc(), то они должны быть «кратными»:

trade_action::buyMultiple ... ;
trade_action::sellMultiple ... ;

3. Не удалось выставить заявки с ключом ::securities, поэтому заменил на ::lots. Думаю с бумагами тоже
должно работать, - надо или на форуме поискать или «бубен брать».
ЗЫ. В этом пункте не уверен, просто с этим ключом сработало, а менять уже времени не было.

Про «Некорректный ордер» есть на форуме ...
Записан
siegried
Newbie
*
Сообщений: 5


Просмотр профиля Email
« Ответ #6 : Мая 01, 2019, 06:33:39 pm »

Спасибо большое за помощь! Заработало! Ключевое было, что не хотело работать с единым счетом
Записан
Страниц: [1] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Не работает автоматическая подача заявок у финам « предыдущая тема следующая тема »
Перейти в:  


Войти

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