XXM (Автор тем)

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

Страницы: 1
параметр "ACCOUNT" в sendTransaction, особенности его применения на QUIK с субсчетами.
 
Интерпретатор языка Lua.pdf, стр.33, 3.11 Функции для работы с заявками.
читаем:
STRING result sendTransaction(TABLE transaction)
В качестве параметра принимает таблицу, в которой имена и значения полей соответствуют параметрам tri-файла
(см. Руководство пользователя QUIK, Раздел 6 «Совместная работа с другими приложениями», п. 6.11.3).
Там этот пункт отсутствует. Догадываемся, что следует читать п. 6.9.3.
ACCOUNT Номер счета Трейдера. Параметр обязателен при «ACTION» = «KILL_ALL_FUTURES_ORDERS».
В самом деле, при сделках купли-продажи в этом параметре может быть все, что угодно, его может и не быть вовсе. Но возник теоретический (т.к. на практике нет субсчетов) вопрос: как делать заявки при наличии нескольких субсчетов ФОРТС на одном QUIK?
Lbot3D
Как из Lua узнать сумму денежных средств на начало торгов?
 
1-й счет, Единый:


2-й счет, ФОРТС:


В системе QUIK предусмотрен где-то признак счета "Единый" или еще какой другой?
И почему на первом счете лимит открытых поз. нулевой, хотя деньги есть и они видны в другой таблице -лимитов по ДС, а на другом счете, где только ФОРТС - картинка кардинально отличается?

Задавал вопрос тут: https://forum.quik.ru/forum1/topic3969/
Задавал вопрос брокеру.
Никакого ответа пока не получил.
Теперь вопросы задаю тут, на ветке Lua.

Как из Lua узнать сумму денежных средств на начало торгов?
Lbot3D
Таблица "Ограничения по клиентским счетам", и "Таблица лимитов по денежным средствам" имеют разное наполнение для счетов одного брокера, почему так?
 
Имеем один счет, "Единый", картинка с таблицей "Ограничения по клиентским счетам" и "Таблица лимитов по денежным средствам":


Тот же брокер, только ФОРТС, те же таблицы:


Разница в наполнении ячеек, 1 и 2:


На первой картинке ячейка "Лимит откр. поз." в таблице "Ограничения по клиентским счетам" равна нулю, на второй - сумма денежных средств на начало торгов.
На первой картинке ячейка "Входящий остаток" в таблице лимитов по денежным средствам равна сумме денежных средств на начало торгов, на второй - нулю.

Как из Lua определить, откуда брать общую цифру денежных средств на начало торгов в общем случае?
Lbot3D
Quik тайно через график Volume передает значение Price!
 
Выяснилось это как-то прозаично: присвоил идентификатор графику Volume и попытался получить ее значение через Lua-скрипт.
Получил Price.  :shock:
Традиционный вопрос: как такое может быть?  
Lbot3D
Сообщение "Ошибка снятия заявки" в ответ на KILL_ORDER. И все.
 
Такой пример:

Код
-- classCode, trans_id, order_num заданы корректно
local trans_params = {
["CLASSCODE"] = classCode,
["TRANS_ID"] = trans_id,
["ACTION"] = "KILL_ORDER",
["ORDER_KEY"] = order_num
}
local res = sendTransaction(trans_params)
if string.len(res) == 0 then
   message('Заявка на снятии: '..order_num)
   -- момент снятия фиксируется в OnOrder()
else
   message('Ошибка снятия заявки '..order_num..". Причина= " .. res)
   -- какие-то действия при этом
end
Сегодня словил это, на демо:



Интересное явление: QUIK это увидел и отразил в сообщении, OnTransReply() никак не среагировал (((.
Как же подобное отлавливать на QLua?
Или это - особенности демо-версии?
Lbot3D
Грамматика хромает в "Руководстве пользователя", Интерпретатор языка Lua.
 
Цитата
Руководство пользователя.
4.15 Лимиты по бумагам
Цитата
locked_sell NUMBER Заблокировано на продажу количества лотов
locked_buy NUMBER Заблокированного на покупку количества лотов
Где-то, что-то веет, млеет... ©

А что - можно, конечно, догадаться.

Но вы поправьте.
Lbot3D
Присвоим идентификатор графику программно!
 
Предлагаю предусмотреть присвоение идентификатора графикам на Lua в  Settings.
Lbot3D
QUIK (версия 7.0.1.5), function OnTrade(trade), трехкратный вызов на одно событие.
 
Вот такая вот зараза - отработала три раза  :what: !
На 6.17.1.17 такого не наблюдается.
Lbot3D
QUIK (версия 7.0.0.289), function OnTransReply(trans_reply)
 
Результат ее работы:
Скрытый текст

При этом, QUIK версии 6.17.1.17 выдал:

Скрытый текст

Отличий несколько, но сильно смутил один момент: отсутствие  ["sec_code"] в 7-й версии.
Это фича или баг?
Lbot3D
WndConverter, Как легко и просто перейти на новый контракт.
 
Было дело, написали вы WndConverter (при переходе с Т0 на Т2).
Я ей пользовался некоторое время перед экспирацией фьючерсов (подробнее на smart-lab.ru).
Но время шло, версии Quik-а обновлялись, менялись структуры данных (наверное) и возможности утилиты тихо и молча иссякли.
Было бы неплохо, если вы восстанóвите работоспособность программы, и вместо того, чтобы сетовать:
Код
«Перед экспирацией меняю инструмент на графиках, как обычно много лет уже…  
Замена графика как обычно: 
правой кнопкой тык в окно графика > параметры текущего окна > диаграмма > заменить инструмент > 
выбираем нужный, сохраняем. А графиков меня более 20. Устаю» 
мы бы составили подобный текст:
Код
SPBFUT,LKZ5=SPBFUT,LKH6
SPBFUT,SRZ5=SPBFUT,SRH6
SPBFUT,GZZ5=SPBFUT,GZH6
SPBFUT,SiZ5=SPBFUT,SiH6
SPBFUT,GDZ5=SPBFUT,GDH6
SPBFUT,VBZ5=SPBFUT,VBH6
и за 2-3 клика легко и просто перешли бы на новые контракты.
Lbot3D
Тестирование стратегий в QUIK., Почему бы и нет?
 


Тестируемые в видео стратегии:


Код
;-------------------------------------------------------------------------------
[SRT1]
Security = SRU5, SPBFUT, SR_Kelt,T1
WorkSize = 2
OpenSlippage = 30
WithdrawPeriod = 5
Sensitivity = 2
BuyAtLimit = if ({S_Keltner.0} > {Sber_MA})  then {S_Keltner.3}
TakeProfitLong = {S_Keltner.2}
CloseLong = {S_Keltner.0} < {Sber_MA}
SellAtLimit = if ({S_Keltner.0} < {Sber_MA})  then {S_Keltner.1}
TakeProfitShort = {S_Keltner.4}
CloseShort ={S_Keltner.0} > {Sber_MA}
autoBot = Y
;-------------------------------------------------------------------------------

[SRT2]
Security = SRU5, SPBFUT, SR_Kelt,T2
WorkSize = 2
OpenSlippage = 30
WithdrawPeriod = 5
Sensitivity = 2
BuyAtLimit = if ({S_Keltner.0} > {Sber_MA})  then {S_Keltner.0}
TakeProfitLong = {S_Keltner.1}
CloseLong = {S_Keltner.0} < {Sber_MA}
SellAtLimit = if ({S_Keltner.0} < {Sber_MA})  then {S_Keltner.0}
TakeProfitShort = {S_Keltner.4}
CloseShort ={S_Keltner.0} > {Sber_MA}
autoBot = Y
;-------------------------------------------------------------------------------

[SRT3]
Security = SRU5, SPBFUT, SR_Kelt,T3
WorkSize = 2
OpenSlippage = 30
WithdrawPeriod = 5
Sensitivity = 2
BuyAtLimit = if ({S_Keltner.0} > {Sber_MA})  then {S_Keltner.4}
TakeProfitLong = {S_Keltner.1}
CloseLong = {S_Keltner.0} < {Sber_MA}
SellAtLimit = if ({S_Keltner.0} < {Sber_MA})  then {S_Keltner.1}
TakeProfitShort = {S_Keltner.4}
CloseShort ={S_Keltner.0} > {Sber_MA}
autoBot = Y
;-------------------------------------------------------------------------------

[SRT4]
Security = SRU5, SPBFUT, SR_Kelt,T4
WorkSize = 2
OpenSlippage = 30
WithdrawPeriod = 5
Sensitivity = 2
BuyAtLimit = if ({S_Keltner.0} > {Sber_MA})  then {S_Keltner.4}
TakeProfitLong = {S_Keltner.0}
CloseLong = {S_Keltner.0} < {Sber_MA}
SellAtLimit = if ({S_Keltner.0} < {Sber_MA})  then {S_Keltner.2}
TakeProfitShort = {S_Keltner.0}
CloseShort ={S_Keltner.0} > {Sber_MA}
autoBot = Y
;-------------------------------------------------------------------------------

[SRT5]
Security = SRU5, SPBFUT, SR_MA,T5
WorkSize = 2
OpenSlippage = 30
OpenLong   = {MA_fast} > {MA_slow}
OpenShort   = {MA_fast} < {MA_slow}
StopLoss = 50
TakeProfit = 200, 20, 20
autoBot = Y
;-------------------------------------------------------------------------------

[SRT6]
Security = SRU5, SPBFUT, SR_MA,T6
WorkSize = 2
OpenSlippage = 30
OpenLong =  {Close, 1} > {High, 2}
OpenShort = {Close, 1} < {Low, 5-2}
autoBot = Y
StopLoss = 400
TakeProfit = 200, 20, 20
;-------------------------------------------------------------------------------


[SRT7]
Security = SRU5, SPBFUT, SR_MA,T7
WorkSize = 2
OpenSlippage = 30
OpenLong   = {MA_fast} > {MA_slow}
OpenShort   = {MA_fast} < {MA_slow}
Reverse = Y
StopLoss = 50
TakeProfit = 100, 20, 20
autoBot = Y
;-------------------------------------------------------------------------------

[SRT8]
Security = SRU5, SPBFUT, SR_macd,T8
WorkSize = 10
OpenSlippage = 30
OpenLong   = cross(Close, MA_low,1) and {MACDsber} > {0.05}
CloseLong   = cross(Close, MA_high)
OpenShort   = cross(MA_high, Close,1) and {MACDsber} < {-0.05}
CloseShort   = cross(MA_low, Close)
StopLoss = 50
autoBot = Y
;-------------------------------------------------------------------------------

[SRT9]
Security = SRU5, SPBFUT, SR_macd,T9
WorkSize = 10
OpenSlippage = 30
OpenLong   = cross(Close, MA_low) and {MACDsber} > {0.05}
OpenShort   = cross(MA_high, Close) and {MACDsber} < {-0.05}
StopLoss = 50
TakeProfit = 200, 20, 20
autoBot = Y
 
Lbot3D
Индикатор Keltner Levels.
 



Скачать: http://www.xsharp.ru/novosti/keltner_levels
Lbot3D
Окно данных (Data Window), Почти как в Wealth-Lab
 


Было бы полезно создать "Data Window".
Lbot3D
Цифры после запятой на индикаторах QUIK., Отображение индикаторов.
 


Есть ли возможность настроить индикаторы на вывод с настраиваемой точностью (например, для контракта SRU5 выставить "0 цифр после запятой")?
Причем настроить не только для вывода на график, но и для считывания скриптами на Lua.
Lbot3D
Страницы: 1
Наверх