Сергей Парахин (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Снятие всех заявок в таблице
 
Есть задача удаления всех лимитированных заявок в таблице. Написал такой код

client...
code...
n=GET_NUMBER_OF("ORDERS")

        FOR i FROM 1 to n
       trade = GET_ITEM ("ORDERS", i)    
          schet=GET_VALUE (trade,"ACCOUNT")
          sec_t=GET_VALUE (trade, "SECCODE")    
   if schet=client
if sec_t=code
status_limit=GET_VALUE(trade,"STATUS")
tip_operation=GET_VALUE (trade,"OPERATION")
balance=GET_VALUE (trade,"BALANCE")
order_number=GET_VALUE (trade,"NUMBER")
end if
end if
        END FOR
   

if status_limit="ACTIVE"
trans_params = set_value (trans_params, "ACTION", "KILL_ORDER")
trans_params = set_value (trans_params, "ORDER_KEY", order_number)
trans=SEND_TRANSACTION (30,trans_params)

message("Заявка снята.Остаток "&balance,1)
end if

Заявку снимает, но только последнюю активную в таблице. Остальные не снимает. Что я делаю не так ?
Куда деваются секунды ?
 
Здравствуйте ! При выполнении скрипта QPILE в таблице скрипта вывожу значение SERVERTIME через  GET_INFO_PARAM. Это нормально, что секунды могут замереть, а потом перескочить сразу на 2-3 секунды ? Что это означает ? Происходит в это время задержка в выполнении скрипта ? Не хватает мозгов у компа ? Или медленный интернет канал ? В информационном окне  и в левом нижнем углу интерфейса время бежит четко без задержек. Локальное время на компе совпадает со временем сервера. Стоит ли с этим заморачиваться ?
Два теминала от разных провайдеров и один робот qpile
 
Здравствуйте ! Запустил тут на одной машине два терминала от разных брокеров. Загрузил в оба терминала робота на qpile. В настройках робота,как положено, указаны торговые счета для каждого брокера. В остальном код робота совершенно одинаков - название переменных, условия входа/выхода и т.д. Также одинаково обозначены идентификатор цены на графиках в разных терминалах. В результате роботы начали бодаться друг с другом. Вход в позу осуществляется по лимитированной заявке, которая выставляется заранее и либо она сработает, либо нет. Далее следует сигнал заявка снимается и ставится противоположная и т.д. Так вот конфликта в выставлении/снятии заявок нет. Но как только цена доходит до заявки и оба робота входят в позицию, один аварийно закрывает позицию (есть такое условие по одной из переменных). Если закрывать портфель в любом из терминалов, тогда все работает четко.
Вопрос. Может ли существовать конфликт одинакового кода на qpile, запущенного одновременно в двух разных терминалах на одном  ПК ? Или мне надо переименовать все переменные в одном из кодов ? Или это из-за одинакового названия идентификатора цены в настройках графика ?
Что предпочесть при выборе провайдера VDS ?, многоядерность или оперативки побольше
 
Здравствуйте ! Минимальные системные требования читал. Все же, что важнее при выборе провайдера VDS для квика под WIndows Server 2012 R2. При одинаковой стоимости какую конф-ю выбрать:
1)  Intel Xeon, 2.6ГГц - 4 ядра,2 гига опертивки;
2)  Intel Xeon, 2.6ГГц - 1 ядро, 4 гига оперативки.
Или вообще хватит 2 ядра и 2 оперативки ?
Будут крутиться два портфеля на qpile.  
А это нормально ?, Нужно остановить скрипт, чтобы обновился totalnet ?
 
Я что-то после qpile пребываю в легком шоке. Сегодня целый день убил, чтобы понять, почему робот продолжает входить в позицию, хотя уже одна заявку улетела. В цикле на вход, помимо торгового условия есть проверка на наличие позиции по фьючерсу. Код на получение позиции такой (подсмотрел тут на форуме))):

function GetTotalNet(stroka)
  local i = 0
  local futures = {}
     while futures.sec_code ~= stroka do
        futures = getItem("futures_client_holding", i)
        i = i+1
     end
  return futures.totalnet
end

Далее в майне вызываем эту функцию и присваиваем переменной значение local total_net=GetTotalNet(тут пишем код бумаги).
Т.е. если total_net=0 и еще другие условия, то входим в позицию. На купиле это работало. Тут же я долго не мог понять, почему скрипт набирает позицию до упора, пока не выскочит сообщение "превышен лимит по инструменту". Логическим путем пришел к выводу, что после посылки лимитированной заявки (которая уходит по рынку) и ее исполнения, нужно остановить скрипт, чтобы позиция успела обновиться в таблице. В конце цикла на вход ставлю паузу в 5 секунд. Только тогда все заработало как нужно.
Это нормально ? Или у меня код кривой на получение позиции и можно как-то ускорить процесс ?
Как быстрее войти в сделку, Как быстрее получить нужно значение цены или графика для выполнения условия
 
Здравствуйте ! Пытаюсь разобраться с языком QLUA на примере простых стратегий. Например, параболик САР. При перескоке цены параболиком, открываем позицию. Вход на текущей свече. Вопрос. Откуда брать цену, чтобы получить ее максимально быстро по сравнению с кодом на qpile (там я беру цену последней сделки из таблицы текущих параметров):
1) Также из таблицы текущих параметров
2) Из таблицы всех сделок, отфильтровав по нужному инструменту.
3) Напрямую из стакана. Только там будем сравнивать бид или оффер с параболиком, а не цену последней сделки.
4) Напрямую с графика цены через GetNumCandles и далее как в примере с индикаторами ?
Или для Lua это не принципиально ? И в любом случае результат будет одинаковым ?

Какой самый скоростной способ получения данных с индикатора, того же параболика, например ? Или способ только один через GetNumCandles и далее.
Страницы: 1
Наверх