Не получается выставить трейк-профит

Страницы: 1
RSS
Не получается выставить трейк-профит
 
Здравствуйте Всем.

Столкнулся с проблемой. Подскажите пожалуйста.
Пишу код.

function main()

message ("начало")
tabl = {
CLIENT_CODE = "?????";
CLASSCODE = "TQBR"; -- класс бумаги
SECCODE = "TATN"; -- код бумаги
ACCOUNT = "??????"; -- номер счета трейдера

ACTION = "NEW_ORDER"; -- вид заявки
TYPE = "M"; -- тип заявки «L» – лимитированная, «M» – рыночная
OPERATION = "B"; -- Направление заявки «S» – продать, «B» – купить
QUANTITY = "1"; -- количество лотов
PRICE = "0"; -- цена покупки/продажи (если по рыночной то ставить 0)
TRANS_ID = "3"; -- не понятно зачем
}
message("Заполнили таблицу для заявки")
message("покупаем");
res = sendTransaction (tabl);
message("отправили заявку на покупку");
end

function OnOrder (trade)
message ("Вошли в OnOrder")
message (tostring(trade.order_num))
end;

На покупку по рыночной цене работает. Но определить номер заявки не получается. То есть в функцию @OnOrder@ даже не заходит. Правильно ли я понимаю что эта функция должна вызываться сама когда я отправляю заявку на покупку/продажу?

И второе. Не могу выставить заявку на продажу по условию
Пишу такой код:

ACTION = "NEW_STOP_ORDER"; -- вид заявки
TYPE = "L"; -- тип заявки «L» – лимитированная, «M» – рыночная
OPERATION = "S"; -- Направление заявки «S» – продать, «B» – купить
QUANTITY = "1"; -- количество лотов
STOPPRICE = "490"; -- цена покупки/продажи (если по рыночной то ставить 0)
TRANS_ID = "3"; -- не понятно зачем
EXPIRY_DATE = "GTC"; -- срок действия стоп заявки
STOP_ORDER_KIND = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER";

смысл такой: если цена упадет до 490 то продать по рыночной.

И снова не приходит номер заявки. что бы при необходимости мне её отменить

Что я делаю не так?
 
Юрий, OnOrder не просто функция - это прерывание. Лично я её вообще не использую - пользуюсь только OnTrade. А в тех редких случаях, когда мне нужен order_num (некоторые варианты снятия заявок), то лезу в таблицу orders и вытаскиваю его оттуда через getItem по trans_id.

Эта функция должна вызываться сама ЕСЛИ Вы напишете её тело в своём скрипте. И делать она будет то, что Вы ей напишете.

Насчёт "второго" вообще не в курсе - по рыночное не продаю никогда. Впрочем, "если цена упадет до 490 то продать по рыночной" тривально программируется тоже в своём скрипте. Так будет и намного надёжнее.
 
Владимир,

number_of_rows = getNumberOf("orders"); -- получение количество строк по таблице orders
all_trade_item = getItem("orders", number_of_rows); -- запрос последнего значения в таблице orders
message ("Последняя сделка - " .. tostring(all_trade_item.order_num)); -- вывод сообщения

Выдает ошибку   attempt to index a nil value (global 'all_trade_item')  
 
Юрий, У меня этот кусок выглядит так:
Код
n=getNumberOf('orders');   -- заявка не исполнена, ищем в таблице orders
for k=0,n do          -- заявку или транзакцию с тем же номером
 s=getItem('orders',k);      -- читаем строку таблицы orders
 if s~=nil then       -- иногда идут сбои - возможно, поэтому
Страницы: 1
Читают тему (гостей: 1)
Наверх