Sergey Gorokhov (Все сообщения пользователя)

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

Страницы: Пред. 1 ... 50 51 52 53 54 55 56 57 58 59 60 ... 78 След.
Несчастное окно
 
Михаил, в 7.2 это исправлено, рекомендуем обновиться
getParamEx
 
Цитата
Владимир написал:
Извините, что не по теме, но этот топик выходит в первых строках результата Яндекса.

Я правильно понимаю, что список параметров, которые можно получить с помощью GetParamEx, до сих пор является тайной за семью печатями, и нигде-нигде официально не описан?

Не совсем так, он не является тайной.
Он есть в info.chm
-Раздел 8. Алгоритмический язык QPILE
--Функции для получения значений Таблицы текущих торгов
---Значения параметров функций

Если там какого-то параметра нет, его можно узнать выведя таблицу по DDE с установленной галкой "Формальные заголовки"
НЕ РАБОТАЕТ КАК НАДО, НЕ РАБОТАЕТ КАК НАДО
 
Цитата
дмитрий б написал:
Я эти значения вывожу в таблицу чтоб узнать работает это или нет а в дальнейшем я эти значения буду использовать в коде .
Если требуется просто узнать работает или нет, то можно запустить отладчик (в контекстном меню таблицы)
Цитата
дмитрий б написал:
Подскажите а могу ли я эти значения приобразовать в переменные примеру bar1 bar2 также с максимум и минимум этих баров как это лучше сделать
Вопрос не совсем понятен, зачем преобразовывать, если у Вас и так есть массивы CANDLE и CANDLE_OLD из которых Вы уже можете взять максимум и минимум.
НЕ РАБОТАЕТ КАК НАДО, НЕ РАБОТАЕТ КАК НАДО
 
Цитата
дмитрий б написал:
Спасибо большое! А если мне надо будет 2 свечи текущую и вторую как быть
выводить обе в таблицу.
в таком случае надо не менять, а копировать строки
НЕ РАБОТАЕТ КАК НАДО, НЕ РАБОТАЕТ КАК НАДО
 
Вам надо заменить только в одной строке
LINES = GET_VALUE(CANDLE,"LINES")
НЕ РАБОТАЕТ КАК НАДО, НЕ РАБОТАЕТ КАК НАДО
 
Цитата
дмитрий б написал:
Пожалуйста подскажите что надо делать дальше потому что я в программирование совсем недавно подскажите и если не трудно надпишите код желательно с прояснениями если не трудно заранее спасибо большое

У Вас есть массив CANDLE_OLD, Вам остается только что-то с ним сделать, например вывести в таблицу.
Как вывести в таблицу можно посмотреть на примере аналогичного массива CANDLE
Вам остается просто заменить одно на другое.
НЕ РАБОТАЕТ КАК НАДО, НЕ РАБОТАЕТ КАК НАДО
 
Цитата
дмитрий б написал:
ПЫТАЮСЬ ВЗЯТЬ ЗНАЧЕНИЕ ПРЕДЫДУЩЕЙ СВЕЧИ ВСЕ РОВНО ПОЛУЧАЕТСЯ ТЕКУЩАЯ СВЕЧА А НЕ ПРЕДЫДУЩАЯ

Здравствуйте,
По присланному коду не видно чтобы была попытка взять предыдущую свечу.
Видно что Вы ее сохраняете в массив CANDLE_OLD
однако больше с этим массивом Вы ничего не делаете.
Шлюз
 
Цитата
s_mike@rambler.ru написал:
Оказалось, что у брокера весна и он начал транслировать в таблице обезличенных сделок информацию за вечернюю сессию предыдущего дня.

Отказ от классов вечерней сессии был в версии 11.0 шлюза срочного рынка:
11.0
Шлюз
 
Цитата
s_mike@rambler.ru написал:
Цитата
Sergey Gorokhov   написал:
не зная логики скрипта трудно сказать влияет та или иная настройка или нет.
Разве я где-то писал про настройки, влияющие на скрипт с именем XXXXX?

Я писал о настройках сервера/шлюза/остального, которые могут повлиять на работу любого скрипта.

В таком случае, влияют абсолютно все настройки логинов ТС/шлюзов/сервера/прав/терминала.
Отправить их все в QLUA не представляется возможным, ровно как и адаптировать робота под каждую из них.
Шлюз
 
Цитата
s_mike@rambler.ru написал:
А зачем перечислять?
Открываем админку сервера и по каждой настройке. Может она влиять на функционал скрипта? - добавляем в список
То же самое и про настройки рабочего места

не зная логики скрипта трудно сказать влияет та или иная настройка или нет.
Шлюз
 
Михаил,
Увы но как уже было сказано чтобы у всех, все, было одинаково никогда не будет.
Если стоит задача определения параметров, уточните что именно Вам бы хотелось проверять.
И как именно Вы бы хотели их проверять
И мы зарегистрируем пожелание на доработку
Шлюз
 
Цитата
s_mike@rambler.ru написал:
Я хочу иметь возможность узнать те настройки, которые явно влияют на поведение и функционал скриптов. Раз брокер может их менять - дайте их на чтение из скрипта

почему бы нет, это хорошее пожелание на доработку.
давайте попробуем перечислить нужные в скрипте опции
Шлюз
 
Михаил, открою секрет, на фондовом и валютном рынках, брокер тоже может отключить рыночные заявки если ему это необходимо.
Шлюз
 
Михаил,
Вопрос понятен. Вы хотите чтобы у всех брокеров все было одинаково.
Такого не будет.
Ибо каждый брокер решает свои задачи по организации доступа к торгам и у каждого брокера есть возможность настроить наш софт под эти задачи.
С Вашей стороны, как программиста, нужно предусмотреть в коде возможность того что брокер может отключить функционал.
Заявка, Заявка
 
Константин,
Сохраните транзакцию из кармана в tri файл
Проверьте совпадают ли имена параметров с теми что у Вас в коде
Заявка, Заявка
 
Цитата
Константин Рейм написал:
Ошибка отправки транзакции: Не найдено поле "Проверять лимиты" для транзакции "Ввод заявки" по классу "FORTS (опционы)"

Установите в терминале QUIK настройку Настройки - Основные - Торговля - Заявки - Применять стандартные формы ввода.
Попробуйте создать карман транзакций (Торговля - Карман транзакций) и положить туда транзакцию "Ввод заявки" по классу "FORTS (опционы)" с заполненным признаком "Проверять лимиты"
Сообщите получится или нет?
Заявка, Заявка
 
Цитата
Константин Рейм написал:
res - пишет, нет поля "Проверять лимиты"

Это не полный текст ошибки.
Как получить данные индикатора RSI ?, Как получить данные индикатора RSI ?
 
Здравствуйте
Цитата
Optimus1 Optimus1 написал:
А получать фактические данные с уже высчитанного уграфика RSI без доп. вычислений в скрипте - не поулчится ?
для получения данных с графика в QLUA есть функция getCandlesByIndex
Цитата
Optimus1 Optimus1 написал:
Что то не увидел, чтобы разработчики Quik там что то любезно предоставили :)

речь про ссылку Все индикаторы на Lua
там все индикаторы которые есть в QUIK реализованы на LUA
Функции которые используются, в том числе позволяют проводить расчеты по заданной таблице данных
Какую таблицу вывести для сравнения цены приобретения акции и текущей цены на рынке?
 
Цитата
Евгений Миронов написал:
в том то и дело что там нет цены приобретения акций. например вчера купил акции газпром за 150 руб/штука, сегодня они стоят 152 руб. но уже нигде не вижу цены  150, т.к. таблица состояния счета имеет колонки Цена и ликвидная цена

"Баланс. цена" - Для спот-рынка – соответствует значению параметра «Цена приобретения» в таблице лимитов по бумагам.
Какую таблицу вывести для сравнения цены приобретения акции и текущей цены на рынке?
 
Дополним ответ,
Лучше смотреть Состояние счета. Там отображаются все нужные Вам параметры.
В лимитах по бумагам не все.
Какую таблицу вывести для сравнения цены приобретения акции и текущей цены на рынке?
 
Здравствуйте,
Вам подойдет таблица лимитов по бумагам.
Еще Вы можете использовать таблицу Состояние счета.
Где Обработка внешних транзакций в 7 версии?, Где Обработка внешних транзакций в 7 версии?
 
Здравствуйте,
Меню Сервисы - Экспорт/Импорт данных - Внешние транзакции
Создание портфеля для SiM6, qpile, не выводит список свечей
 
Здравствуйте,
Дело в том что для получения данных по SiM6 требуется указать параметр USE_CASE_SENSITIVE_CONSTANTS
Суть работы этого параметра в том что абсолютно все строковые константы становятся зависимыми от регистра букв.
Это касается не только пользовательских констант, но и служебных.
В частности Ваш код не работает так как служебные константы "High", "Low", "Close" и "Volume" указаны в неправильном регистре.
Согласно документации, они должны быть указаны БОЛЬШИМИ буквами.
iuplua, обсуждаем работу стороннего графического пакета
 
Здравствуйте,
Цитата
_sk_ написал:
Можно ли что-то подобное сделать в рамках QUIK?

К сожалению надежного решения нет
SearchItems
 
Цитата
Андрей 77 написал:
Пытаюсь постичь глубокий смысл этой функции. Но, что-то не получается.

Глубокий смысл в том чтобы быстро получить номера строк удовлетворяющие требованиям.

Цитата
Андрей 77 написал:
Это что же, для каждой конкретной выборки свою функцию писать !?
Зачем? Никто не мешает в fn передавать какие нибудь параметры.

Цитата
Андрей 77 написал:
Хотелось бы иметь универсальную fn, а набор контролируемых параметров и их значения  задавать при вызове SearchItems.

Никто не мешает задавать набор  контролируемых параметров в функции SearchItems

Цитата
Андрей 77 написал:
Но она использует getItem(),

SearchItems выдает таблицу которая содержит номера нужных строк, который в любом случае нужно передавать в getItem.

Цитата
Андрей 77 написал:
а как я понимаю,  именно из-за слишком медленной ее работы и была создана SearchItems ...
Неверно понимаете, getItem в любом случае придется использовать.
SearchItems создавался чтобы избежать лишних циклов.
Параметры меток
 
Здравствуйте!

Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Подскажите как загрузить данные в квик для работы на выходных
 
Цитата
ninjatrader написал:
так нет больше вариантов кроме как со скриптом?
Здравствуйте,
Варианта два, либо в терминале заказывать данные, либо скриптом заказывать данные.
Странности с объявлением переменных
 
Цитата
Кирилл Мазеин написал:
А кодировка может повлиять на объявление переменных?
Согласно документации для Qpile скриптов кодировка должны быть CP-1251.
Любая другая кодировка уже означает что есть вероятность некорректной работы скрипта
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Цитата
Николай Бехтерев написал:
Да, у меня явно нет ясного понимания КоллБек функций. И к сожалению пока не попалось ни одной подробно разъясняющей статьи.

Принцип работы с колбеками в Lua ничем не отличается от аналогичного функционала в других языках.
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Цитата
Николай Бехтерев написал:
А если мой пример, и функция main( ), в которой я что-то делаю с fut_pos? Да, в коллбеке пусто, но в майн табличка будет обновляться после коллбека?

Причем тут Main и колбек? Видимо происходит какое-то непонимание процесса.

В main ничего не будет обновляться пока Вы сами это не напишите.
Хотите передавать таблицу в main напишите так:


Код
mytable={}

function OnFuturesClientHolding(fut_pos)
   mytable=fut_pos
end

function main()
   while true do
      message(type(mytable)) --работаем с таблицей mytable
   end
end




Цитата
Николай Бехтерев написал:
И что же меняется?
Добавьте логирование параметров, будет видно.

Цитата
Николай Бехтерев написал:
Ясно, что описаны, просто я не совсем понимаю, что делают другие битовые функции, вот и спросил, есть ли способ за одну битовую функцию на этими битами узнать всё и сразу. Ясно, будем тыкать.
Рекомендуем почитать в интернете статьи на тему "Битовые операции".
Без этой теории трудно будет разобраться, зато когда разберетесь флаги покажутся легким делом.
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Цитата
Николай Бехтерев написал:
Хорошо, но если в описании функции КоллБека не передать табличку, то она не обновится, верно?
Т.е. в моём примере выше, в отличие от вашего табличка с данными обновится, а в вашем нет, по сколько функции не передаётся таблица, верно?

В Вашем примере Вы ничего не делаете с "fut_pos", а раз ничего не делаете какой к нем смысл.
Зачем обновлять таблицу раз Вы с этими обновлениями все равно ничего не делаете.
Поэтому в моем примере я убрал ее, тем самым показав что этот параметр не обязателен.
Проще говоря, хотите работать с данными которые пришли в колбек, задайте параметр функции, если нет можете не задавать, на ваш вкус.

Цитата
Николай Бехтерев написал:
Что это значит? Что-то меняется?
Да что-то меняется.
Цитата
Николай Бехтерев написал:
Есть способ выяснить за одну функцию (хелп в этом деле скромный помощник, я чуть ли не методом тыка выведываю всё) сразу все флаги? А то как-то нелепо каждый бит bit.band'ом щупать.
Флаги описаны в хелпе, глава "Описание битовых флагов"
Где взять данные о моих открытых позициях?
 
Кирилл Мазеин,
Если язык непривычный, Вы можете перейти на Lua.
QPILE мы уже давно признали устаревшим и оставили только для обратной совместимости.
Ошибка "Missing assignment" говорит о том что какая-то из переменных не задана.
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Цитата
Николай Бехтерев написал:
т.е. пустой блок функции не пойдёт? Никак нельзя так:Кодfunction OnFuturesClientHolding(fut_pos)

end

Можно, только смысл какой?
Можете хоть так написать
function OnFuturesClientHolding()
message("сработал OnFuturesClientHolding")
end
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Здравствуйте,
OnFuturesClientHolding(fut_pos)
message(type(fut_pos))
end
Где взять данные о моих открытых позициях?
 
Цитата
Кирилл Мазеин написал:
Как я понял, QUIK не знает, что такая таблица существует.

Здравствуйте,
Идентификаторы должны быть указаны как строка, то есть в кавычках
MYPOS = GET_ITEM("FIRM_HOLDING", 0)
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Здравствуйте,
Цитата
XXM написал:
Милую картинку - три идентичных отклика OnTrade() и два OnOrder(), если не считать разницу в миллисекунды между ними.
Не вижу причин упрека, никто не говорил что в версии 7.2 в этом месте что-то менялось
Рекомендуем ознакомиться со списком изменений.
Создание кармана транзакций
 
Здравствуйте,
Выполните очистку данных через меню Система  - Заказ данных - Перезаказать данные. В появившемся окне поставить все галки и нажать Перезаказать
Sleep (1) приводит к бОльшим задержкам чем 1 мс.
 
Цитата
Космонавт написал:
ок
но Ваш ответ о другом
у меня вопрос почему при проходе 61 акции  sleep (1) даёт задержку не 61 миллисекунда, а гораздо больше.

потому что 61*15 = 915мс займет обработка цикла.
Если проще то sleep не может работать чаще чем ему разрешит операционная система.
Частоту системного таймера Windows можно изменить, но это на Ваш страх и риск и рассказывать как это делается мы не будем.
К слову если точнее, то частота системного таймера равна 15.625
Sleep (1) приводит к бОльшим задержкам чем 1 мс.
 
Цитата
Космонавт написал:
не понял Вашу мысль
переформулируйте пожалуйста по простому, для не программиста.

речь о том что системный таймер Windows имеет свое разрешение, равное 15 миллисекундам.
На microsoft есть статься на тему
https://msdn.microsoft.com/ru-ru/library/system.timers.timer.interval%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Цитата
Николай Бехтерев написал:
И такой вопрос, допустим выставление лучшей заявки мы засовываем в коллбек OnOrder, в OnTrade мы получаем информацию о том взята заявка или нет, как исключить момент исполнения двух заявок? Без sleep() и ожидания ответа о том, что заявка снята - тут никак не обойтись, я правильно понимаю?

можно и без speep
Например запоминать номер выставленной заявки и перед выставлением новой, проверять исполнилась старая или нет через функцию getOrderByNumber
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
вот так сделайте
Код
function OnQuote(class, sec)
   if class == "SPBFUT" and sec == "SiM6" then
      stock = getQuoteLevel2(class, sec)
      OFFER_PRICE = stock.offer[1].price
      if (OFFER_PRICE < LAST_OFFER_PRICE) then
      --sendTransactio("ТУТ УБИВАЕМ ПРЕДЫДУЩУЮ ЗАЯВКУ")
                                        -- while не выясним убили мы заявку или нет, не выставляем новую.
                                        --sendTransaction
      end
      LAST_OFFER_PRICE = OFFER_PRICE
   end
end

function main()
   while is_run == 1 do
   sleep(1000)
   end
end

Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Цитата
Николай Бехтерев написал:
какой минимальный набор в main, я чувствую что у меня всё по коллбекам сейчас раскидается.
что же оставить в main?

Достаточно в main оставить цикл вида
  while is_run == 1 do
                       sleep (1000)
  end


Цитата
Николай Бехтерев написал:
А ещё у меня ощущение, что без sleep( ) скрипт, даже если засунуть по коллбекам всё, работать не будет. Я прав?
Получается в main засовывается sleep всё равно?

Во первых никто не говорил что надо "все" перетаскивать.
Как уже было не раз сказано, перенести надо только проверку и только результат этой проверки (выставление заявки)

Во вторых, рекомендация дана исходя из того кода который Вы привели,, если у Вас код другой рекомендация тоже может быть другой.
В общем случае, если есть циклы их желательно держать в main
В частном случае (то что Вы написали выше) в цикле (который "while totalnet >= 0 do") нет необходимости и только по этому была дана рекомендация от него избавиться.
Как в LUA осуществить поиск файла в заданной папке с заданным именем ?
 
Цитата
Sergey Gorokhov написал:
Цитата
Старатель   написал:
Цитата
Sergey Gorokhov   написал:
Если функция вернула nil значит файла не существует
Или он занят другим приложением.
с параметром "r+" ??

Хотя да, если доступа к файлу нет то действительно вернет nil
тогда можно использовать просто параметр "r"
Как в LUA осуществить поиск файла в заданной папке с заданным именем ?
 
Цитата
Старатель написал:
Цитата
Sergey Gorokhov   написал:
Если функция вернула nil значит файла не существует
Или он занят другим приложением.

с параметром "r+" ??
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Николай,
Никто не говорил что main надо убрать.
речь о том чтобы перенести проверку и выставление заявки в колбек OnQuote
Без main скрипт отработает один раз и остановится.
Виснет lua-индикатор
 
Цитата
Вадим написал:
Так, с функцией понятно. Значит был неправ.
А что с настройкой "Последние 50 свечек" ? Она работает для lua-индикаторов или нет ?

Параметр "Последние ... интервалов" не влияет на обычные и на Lua индикаторы.
Влияет только "Фильтр по времени"
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Цитата
Николай Бехтерев написал:
Цитата
Sergey Gorokhov   написал:
и проверка на totalnet  вам по сути не нужна.
почему? Потому что мы должны на все 100% удостовериться, что сняли заявку и это мы опять в OnTrade смотрим?

OnTrade - это НЕ заявки, это сделки.
Если Вам нужно смотреть снятие заявки, это OnOrder
Цитата
Николай Бехтерев написал:
Цитатав main проверяете, если она меньше предыдущей то снимаете старую заявку и ставите новую.
Однако, лучше убрать проверку из main и перенести ее целиком в OnQuote, только без sleepНе понимаю почему проверку в OnQuote если всё равно происходит выставление заявки в main?
Т.е. допустим мы в OnQuote будем иметь два ценовых уровня OFFER и LAST_OFFER допустим мы сравнили и выяснили, что наша заявка не лучшая, тогда нам всё равно эту перемену как-то нужно передать в main и получится уже два if-then, а значит большая вычислительная мощность, разве нет?


Зачем в main передавать переменную и там ставить заявку когда все можно сделать в OnQuote?
Сейчас у Вас как раз код написан не оптимально. Раз есть sleep то значит проверка произойдет с задержкой, а оно Вам не надо
Я Вам предлагаю наиболее оптимальный вариант без всяких циклов и sleep.
Прислушаться к совету или нет дело Ваше.
Как в LUA осуществить поиск файла в заданной папке с заданным именем ?
 
Здравствуйте,
На сколько становится понятно, задача проще чем кажется.
Раз папка и имя файла заранее известны, значит нужно делать не поиск файла а проверить его существование.
Это легко делается функцией io.open с параметром "r+"
Если функция вернула nil значит файла не существует
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
и проверка на totalnet  вам по сути не нужна.
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
В коде действительно много ошибок, но суть понятна
В колбеке на стакан Вы обновляете текущую цену.
в main проверяете, если она меньше предыдущей то снимаете старую заявку и ставите новую.
Однако, лучше убрать проверку из main и перенести ее целиком в OnQuote, только без sleep
Страницы: Пред. 1 ... 50 51 52 53 54 55 56 57 58 59 60 ... 78 След.
Наверх