Николай Бехтерев (Все сообщения пользователя)

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

Страницы: Пред. 1 2 3 След.
Переподключение к серверу: автоматическое или из Lua
 
Цитата
swerg написал:
После потери связи можно настроить автопереподключение штатными средствами.
А чтобы терминал  автологинился при запуске (или перезапуске в случае краха) можно использовать скрипт на Lua с небольшой доп. библиотекой .
Ага, и при первом же использовании этот файл с dll в который средний пользователь QLUA заглянуть не сможет, кинет вам его логин и пароль))) А то оба файла pubrink и sebrink в фоном режиме)
В sendTransaction() KILL_ALL_ORDERS так и не работает?
 
...как: убить старый и запустить новый?
В sendTransaction() KILL_ALL_ORDERS так и не работает?
 
Цитата
Stanislav Tvorogov написал:
Добрый день,

Причина в том, что функции
 «KILL_ALL_ORDERS» – снять все заявки из торговой системы,
 «KILL_ALL_STOP_ORDERS» – снять все стоп-заявки,
 «KILL_ALL_NEG_DEALS» – снять все заявки на внебиржевые сделки и заявки на  сделки РЕПО.
 не предназначены для использования в LUA.
Значит даже не предвидится реализации в рамках LUA этих удобных вещей?
Ну, и вдогонку пару вопросцев тогда: как мне узнать, что стоп сработал? Если мне нужно менять что-то в Стопе, у меня нет другого выбора как: убить старый и запустить старый?
В sendTransaction() KILL_ALL_ORDERS так и не работает?
 
Где-то год назад пробовал, не работало, мож исправили?
Как сделать так, чтобы файлы подгружались сами?
 
Спасибо за советы, всё остальное сработало наконец-то)
Как сделать так, чтобы файлы подгружались сами?
 
А как быть с русской кодировкой, если название папок на нашем языке?
Как сделать так, чтобы файлы подгружались сами?
 
Цитата
Старатель пишет:
Указывайте полные пути к модулям (файлам).
а не сработало.
прямо путь с обычными "\"?
Как сделать так, чтобы файлы подгружались сами?
 
Ни dofile(), ни loadfile() не делают этого, пока сам не откроешь все свои модули (файлы) в окне "Доступные скрипты".
Есть ли какая возможность или быть может я не правильно пользуюсь этими функциями?
Если внутри функции создаётся переменная, то по выходу из функции она умирает?
 
Цитата
Imersio Arrigo пишет:
я думал намек погуглить будет верно понят с первого раза

https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C_%D0%B2%D­0%B8%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8
я знаю этот термин.
для того, чтобы переменная в Lua была локальной нужно указать LOCAL, но у меня переменная задана в файле, до описания функции, сам файл и функция в нём вызывается в основном цикле программы (уже в другом файле), вот я и задался вопросом - а переменная живёт или каждый раз заново создаётся? Выходит, раз не указано LOCAL - то живёт.
Если внутри функции создаётся переменная, то по выходу из функции она умирает?
 
Цитата
Imersio Arrigo пишет:
"Область видимости переменных", не?
ну да, видимость это понятно, живучесть то как? убиваются, да?
Если внутри функции создаётся переменная, то по выходу из функции она умирает?
 
Нужно спецом создавать глобальную переменную иначе всё что создаётся для расчёта в функции по выходу из неё будет убито?
На запуск скрипта никакой реакции. Не появляется зелёный значок работы скрипта., Засунул большую часть вычислений в функции обратного вызова.
 
Нашёл причину, is_run не указал в единицу))))))
Расчёт индекса РТС
 
Цитата
Старатель пишет:
Николай Бехтерев , вы, как минимум, берёте не тот курс доллара.
а какой брать?
На запуск скрипта никакой реакции. Не появляется зелёный значок работы скрипта., Засунул большую часть вычислений в функции обратного вызова.
 
Вот такого рода код.
Может быть я был не прав засунув что-то в функции обратного вызова?
Код
fut = "SIU5"    --торгуемый фьючерс
range = 200
lots = 1       --количество торгуемых лотов
ID = 1          --Айди транзакций
totalnet = 0    --начальный размер позиции

dofile("transaction.lua")
dofile("candle.lua")


function OnAllTrade(AllTrades)
   if AllTrades.sec_code == fut then
      Price = AllTrades.price
      posa = chemp(Price, range)   
      Class = AllTrades.class_code
   end
end
 

function OnFuturesClientHolding(fut_pos)
   if fut_pos.sec_code == fut then
      totalnet = fut_pos.totalnet
      PrintDbgStr("Changed position size to "..tostring(position))
   end
end
 

function OnStop()
   is_run = 0
end
 

function main()
   while is_run == 1 do
   
      if position > posa then
         --ВЫХОДИМ ИЗ ЛОНГА; КОЛИЧЕСТВО В ЗАЯВКЕ = lots + totalnet
         Qty = lots + totalnet
         OrderSell (Price, ID, Class, Qty, fut)
         ID = ID + 1         
         position = -1
      PrintDbgStr("Перевернулись в шорт по цене "..tostring(Price))
      
      elseif position < posa then
         --ВЫХОДИМ ИЗ ШОРТА; КОЛИЧЕСТВО В ЗАЯВКЕ С УЧЁТОМ РАЗМЕРА ОСТАТКА ПО СЧЁТУ
         Qty = lots - totalnet
         OrderBuy (Price, ID, Class, Qty, fut)
         ID = ID + 1         
         position = 1
      PrintDbgStr("Перевернулись в лонг по цене "..tostring(Price))
         
      end
      sleep(100)
   end
end
 
Расчёт индекса РТС
 
Цитата
Николай Камынин пишет:
Индекс РТС либо считается точно, либо в действительности считаете не индекс РТС, а какой-то свой индекс.
Поэтому "почти точно" - почти тоже самое, что "почти беременная"
Так вся ирония в том, что формула проста как два пальца. Выходит либо транслируемый биржей индекс ложный, либо выложена не последняя редакция, либо где-то ошиблись в расчётах, так ведь опять же - там всё просто как 2 пальца.
Расчёт индекса РТС
 
Иногда передаваемый RTSI биржи сильно врёт. И что удивительно фьючерс на эти разводки вообще никак не реагирует.
Почему я уверен, что врёт, потому что расхождение с кодом может быть из-за коэффициентов, т.е. отрисовывающий в реальном времени график не должен был бы расходиться на разную величину каждый раз.
А иногда получается довольно сильное расхождение не на 0,5 а на целый пункт, например...
Расчёт индекса РТС
 
Вот этот код у меня показывает почти 1 в 1 Индекс РТС:

Код
Settings=
{
   Name = "RTSI",
   period = 1,
   line = 
   {
      {
         Name = "One",
         Color = RGB(128, 255, 0),
         Type = TYPE_LINE,
         Width = 3
      }
   }
}






function Init()
--SECCODE="MXH5"              --код инстркмента    
--CLASSCODE="SPBFUT"              --класс инструмента
--EXP_DATE="15.06.2015"            --дата экспирации

--Koef = 32 100 266 683.38
Koef = 148748222.4317
start = 0
--k=0

C = {}                        --кол-во выпущенный акций
C[1]=23673512900
C[2]=850563255
C[3]=21586948000
C[4]=1000000000
C[5]=94561355
C[6]=35725994705
C[7]=7701998235
C[8]=3036306000
C[9]=158245476
C[10]=12960541337338
C[11]=10598177817
C[12]=2066413562
C[13]=2178690700
C[14]=147508500
C[15]=1554875
C[16]=2936015891
C[17]=7364965630
C[18]=837718660
C[19]=2278636493
C[20]=386255464890
C[21]=269161148
C[22]=620000000
C[23]=2669204301
C[24]=242831469
C[25]=150570662
C[26]=29788012
C[27]=5993227240
C[28]=9650000000
C[29]=129500000
C[30]=2000000000
C[31]=423031984
C[32]=3032149962
C[33]=660497344
C[34]=63048706145
C[35]=104400000000
C[36]=11174330000
C[37]=124750000
C[38]=103030215
C[39]=1274665323063
C[40]=43963773
C[41]=37792603
C[42]=179768227
C[43]=993586094
C[44]=1110616299
C[45]=40534000
C[46]=161078853310
C[47]=11529538
C[48]=416270745
C[49]=282215500
C[50]=34270159



K_free_float = {}                  --коэф-нт free-float
K_free_float[1]=0.46
K_free_float[2]=0.46
K_free_float[3]=0.48
K_free_float[4]=1
K_free_float[5]=0.54
K_free_float[6]=0.25
K_free_float[7]=0.73
K_free_float[8]=0.27
K_free_float[9]=0.3
K_free_float[10]=0.39
K_free_float[11]=0.12
K_free_float[12]=0.49
K_free_float[13]=0.32
K_free_float[14]=1
K_free_float[15]=1
K_free_float[16]=0.28
K_free_float[17]=0.23
K_free_float[18]=0.21
K_free_float[19]=0.51
K_free_float[20]=0.34
K_free_float[21]=0.3
K_free_float[22]=0.15
K_free_float[23]=0.28
K_free_float[24]=0.6
K_free_float[25]=0.12
K_free_float[26]=0.63
K_free_float[27]=0.14
K_free_float[28]=0.36
K_free_float[29]=0.19
K_free_float[30]=0.08
K_free_float[31]=0.25
K_free_float[32]=0.1
K_free_float[33]=0.32
K_free_float[34]=0.18
K_free_float[35]=0.18
K_free_float[36]=0.14
K_free_float[37]=0.46
K_free_float[38]=0.33
K_free_float[39]=0.21
K_free_float[40]=0.51
K_free_float[41]=0.39
K_free_float[42]=0.42
K_free_float[43]=0.28
K_free_float[44]=0.32
K_free_float[45]=0.16
K_free_float[46]=0.14
K_free_float[47]=0.1
K_free_float[48]=0.35
K_free_float[49]=0.34
K_free_float[50]=0.46



K_m = {}                     --коэф-нт ограничивающий вес акции
K_m[1]=0.7473607
K_m[2]=1
K_m[3]=1
K_m[4]=1
K_m[5]=1
K_m[6]=1
K_m[7]=1
K_m[8]=1
K_m[9]=1
K_m[10]=1
K_m[11]=1
K_m[12]=1
K_m[13]=1
K_m[14]=1
K_m[15]=1
K_m[16]=1
K_m[17]=1
K_m[18]=1
K_m[19]=1
K_m[20]=1
K_m[21]=1
K_m[22]=1
K_m[23]=1
K_m[24]=1
K_m[25]=1
K_m[26]=1
K_m[27]=1
K_m[28]=1
K_m[29]=1
K_m[30]=1
K_m[31]=1
K_m[32]=1
K_m[33]=1
K_m[34]=1
K_m[35]=1
K_m[36]=1
K_m[37]=1
K_m[38]=1
K_m[39]=1
K_m[40]=1
K_m[41]=1
K_m[42]=1
K_m[43]=1
K_m[44]=1
K_m[45]=1
K_m[46]=1
K_m[47]=1
K_m[48]=1
K_m[49]=1
K_m[50]=1

LastPrice = {}
--message(" LastPrice " .. LastPrice[2], 1)

return 1
end
 
function OnCalculate(index)
RTSI = 0
MC_n = 0

N1 = getNumCandles("Ind")

table = getParamEx("TQBR", "GAZP", "LAST")
LastPrice[1] = table.param_value
table = getParamEx("TQBR", "LKOH", "LAST")
LastPrice[2] = table.param_value
table = getParamEx("TQBR", "SBER", "LAST")
LastPrice[3] = table.param_value
table = getParamEx("TQBR", "SBERP", "LAST")
LastPrice[4] = table.param_value
table = getParamEx("TQBR", "MGNT", "LAST")
LastPrice[5] = table.param_value
table = getParamEx("TQBR", "SNGS", "LAST")
LastPrice[6] = table.param_value
table = getParamEx("TQBR", "SNGSP", "LAST")
LastPrice[7] = table.param_value
table = getParamEx("TQBR", "NVTK", "LAST")
LastPrice[8] = table.param_value
table = getParamEx("TQBR", "GMKN", "LAST")
LastPrice[9] = table.param_value
table = getParamEx("TQBR", "VTBR", "LAST")
LastPrice[10] = table.param_value
table = getParamEx("TQBR", "ROSN", "LAST")
LastPrice[11] = table.param_value
table = getParamEx("TQBR", "MTSS", "LAST")
LastPrice[12] = table.param_value
table = getParamEx("TQBR", "TATN", "LAST")
LastPrice[13] = table.param_value
table = getParamEx("TQBR", "TATNP", "LAST")
LastPrice[14] = table.param_value
table = getParamEx("TQBR", "TRNFP", "LAST")
LastPrice[15] = table.param_value
table = getParamEx("TQBR", "URKA", "LAST")
LastPrice[16] = table.param_value
table = getParamEx("TQBR", "ALRS", "LAST")
LastPrice[17] = table.param_value
table = getParamEx("TQBR", "CHMF", "LAST")
LastPrice[18] = table.param_value
table = getParamEx("TQBR", "MOEX", "LAST")
LastPrice[19] = table.param_value
table = getParamEx("TQBR", "HYDR", "LAST")
LastPrice[20] = table.param_value
table = getParamEx("TQBR", "YNDX", "LAST")
LastPrice[21] = table.param_value
table = getParamEx("TQBR", "MFON", "LAST")
LastPrice[22] = table.param_value
table = getParamEx("TQBR", "RTKM", "LAST")
LastPrice[23] = table.param_value
table = getParamEx("TQBR", "RTKMP", "LAST")
LastPrice[24] = table.param_value
table = getParamEx("TQBR", "BANE", "LAST")
LastPrice[25] = table.param_value
table = getParamEx("TQBR", "BANEP", "LAST")
LastPrice[26] = table.param_value
table = getParamEx("TQBR", "NLMK", "LAST")
LastPrice[27] = table.param_value
table = getParamEx("TQBR", "AFKS", "LAST")
LastPrice[28] = table.param_value
table = getParamEx("TQBR", "PHOR", "LAST")
LastPrice[29] = table.param_value
table = getParamEx("TQBR", "RUALR", "LAST")
LastPrice[30] = table.param_value
table = getParamEx("TQBR", "POLY", "LAST")
LastPrice[31] = table.param_value
table = getParamEx("TQBR", "PGIL", "LAST")
LastPrice[32] = table.param_value
table = getParamEx("TQBR", "PIKK", "LAST")
LastPrice[33] = table.param_value
table = getParamEx("TQBR", "EONR", "LAST")
LastPrice[34] = table.param_value
table = getParamEx("TQBR", "IRAO", "LAST")
LastPrice[35] = table.param_value
table = getParamEx("TQBR", "MAGN", "LAST")
LastPrice[36] = table.param_value
table = getParamEx("TQBR", "DIXY", "LAST")
LastPrice[37] = table.param_value
table = getParamEx("TQBR", "LSRG", "LAST")
LastPrice[38] = table.param_value
table = getParamEx("TQBR", "FEES", "LAST")
LastPrice[39] = table.param_value
table = getParamEx("TQBR", "GCHE", "LAST")
LastPrice[40] = table.param_value
table = getParamEx("TQBR", "PHST", "LAST")
LastPrice[41] = table.param_value
table = getParamEx("TQBR", "MVID", "LAST")
LastPrice[42] = table.param_value
table = getParamEx("TQBR", "TRMK", "LAST")
LastPrice[43] = table.param_value
table = getParamEx("TQBR", "AFLT", "LAST")
LastPrice[44] = table.param_value
table = getParamEx("TQBR", "AKRN", "LAST")
LastPrice[45] = table.param_value
table = getParamEx("TQBR", "RSTI", "LAST")
LastPrice[46] = table.param_value
table = getParamEx("TQBR", "VSMO", "LAST")
LastPrice[47] = table.param_value
table = getParamEx("TQBR", "MTLR", "LAST")
LastPrice[48] = table.param_value
table = getParamEx("TQBR", "MSTT", "LAST")
LastPrice[49] = table.param_value
table = getParamEx("TQBR", "SVAV", "LAST")
LastPrice[50] = table.param_value

table = getParamEx("CETS", "USD000000TOD", "LAST")
USDRUB = table.param_value


if (start==0) then
   message("USDRUB= " .. USDRUB, 1)
end

i=1
while (i <= 50) do
   MC_n = MC_n + (LastPrice[i]/USDRUB) * C[i] * K_free_float[i] * K_m[i]
   if (start==0) then
      message("LastPrice[" .. i .. "]= " .. LastPrice[i], 1)
   end 
   i = i+1
end

   
--/-----------------------------------------
start=1
return (MC_n/Koef)

end

 
Расчёт индекса РТС
 
Цитата
sam063rus пишет:
а вообще - расчёт самостоятельно индекса ртс - дело неблагодарное, бо как зависит от кучи разных факторов, которые постоянно меняются и не предсказуемы. Сама методичка может измениться, могут быть приняты те или иные решения клиринговой палаты и т. п.
Благодарное или нет - а проверить надо. Все изменения должны быть официально выложены.
Я тут посмотрел методику: http://moex.com/ru/index/RTSI/info/
И не совсем понимаю суть поправочного коэффициента D и почему ни в одной формуле не принимает участие Поправочный коэффициент Z?
Расчёт индекса РТС
 
Чот у меня разный код, разные результаты. Другой вариант кода вывел всё по нулям.
Можно окончательный код, который вот приводит к результатам на картинке?
Расчёт индекса РТС
 
Правда были акции по которым не было ещё ни одной сделки, может по этому терминал в ужасе?
Расчёт индекса РТС
 
Цитата
Danial Novikov пишет:
В качестве курса доллара я взял текущее (последние) значение инструмента USDRUB_TOM с биржи ММВБ.
У меня не открыт на валютной секции счёт, я воткнул фьючерс, просто чтобы увидеть график и что-то вот:
Код
QUIK\LuaIndicators\MY_RTSI.lua:313: attempt to perform arithmetic on field '?' (a nil value)
чтобы это значило?
Расчёт индекса РТС
 
не совсем понятно, откуда берётся курс бакса для расчёта Индекса?
Windows 10 упорно себя предлагает, пробовал кто на совместимость?
 
Собственно вот.
Кто как решил вопрос уведомления о сделках?
 
Ой, да... при дисконнекте нифига не отправится)))
Кто как решил вопрос уведомления о сделках?
 
Цитата
Дмитрий пишет:
http://static.svyaznoy.ru/upload/iblock/544/4096642_1.jpg
есть OnDisconnect() функция обратного вызова.
Понаписали то...
Блин, мне бы и е-мейла хватило, но библиотека забугорная, без русского хелпу. Мне, как непрограммеру долго придётся копаться. Спасибо за примеры!
Кто как решил вопрос уведомления о сделках?
 
Есть какая-нибудь возможность кидать хотя бы е-мейлы через скрипт?
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
Цитата
swerg пишет:
Функция assert() выдает сообщение об ошибке, если значение её первого параметра равно false (то есть nil или false ).
из одного блога , нашёл гуглем за 30 сек. по запросу "Lua assert"

А "зарабобтало" у вас потому, что добавили getScriptPath()
Беда в том, что QUIK из скриптов создаёт файлы в том каталоге, из которого вы последний раз открывали како-либо файл (со скриптом, згружали настройки - и т.п.), либо в каталоге самого квика.

При добавке getScriptPath() файл гарантированно создаётся рядом со скриптом - вот вы его и нашли. До этого он тоже создавался, но где - ответ даст только поиск по диску.
Спасибо! :) А я кинулся на оф. сайт, а там документалка на русском недоступна и про гугл даже не вспомнил.
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
и да, сработало.
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
Цитата
Michael Bulychev пишет:
Добрый день.
Попробуйте так:
Код
 ... 
file = io.open(getScriptPath() .."\\res.txt", "w+t") 
assert(file) 
...
 
в чём идея команды assert? прост не нашёл документацию на русском, а на инглише туманно))))
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
Цитата
Sergey Gorokhov пишет:
Цитата
Николай Бехтерев пишет:
ЧО НЕ ТАК ТО?
Николай,Вам уже объяснили что информация в файле появится только после выполнения close() или flush()
В Вашем коде нету flush() есть только close() который сработает в лучшем случае при остановке скрипта.
Рекомендация остается прежней, добавьте команду file:flush() сразу после file:write
Я понимаю, что после выполнения close()! Поэтому посмотрел, увидел, что набежало пару нужных строк, жму стоп, останавливается скрипт И ТИШИНА. Даже файл не создан. Хотя команды всё выполнены и должен быть файл как минимум с одной строкой...
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
Выручайте, не могу понять почему не создаётся файл. Логику всех if then end проверил, о том что верно мне сообщают message(), но почему не создаётся файл я понять не могу.
В прошлый раз, вынеся команды по файлу за пределы циклы while всё сработало, но теперь чуть более сложная схема и опять всё по нулям:

Код
boom = {}
ttime = {}
is_run = 1
candle = {}
range = 20

function OnStop()
   is_run = 0
end

function OnClose()
   candle.o = 0
   candle.h = 0
   candle.l = 0
   candle.c = 0
end

function OnCleanUp()
   candle.o = 0
   candle.h = 0
   candle.l = 0
   candle.c = 0
end

function main()
   file = io.open("res.txt", "w+t")
   while is_run == 1 do
         candle.o = 0
         candle.h = 0
         candle.l = 0
         candle.c = 0
         g = getNumberOf("all_trades")-1
         for i=0, g do
            boom = getItem("all_trades", i)
            message("New Price get".." - "..tostring(boom.price),3)
            if candle.c == 0 then
               candle.o = boom.price
               candle.h = boom.price
               candle.l = boom.price
               candle.c = boom.price
            elseif boom.price > candle.h then
               message(tostring(candle.l+range).." ".."High test",1)
                  if boom.price >= (candle.l + range) then
                     candle.h = boom.price
                     candle.c = boom.price
                     message("New Candle from new HIGH".." "..tostring(candle.o).." "..tostring(candle.h).." "..tostring(candle.l).." "..tostring(candle.c),2)
                     strin = tostring(candle.o)..","..tostring(candle.h)..","..tostring(candle.l)..","..tostring(candle.c)
                     file:write(strin.."\n")
                     candle.o = 0
                     candle.h = 0
                     candle.l = 0
                     candle.c = 0
                  else
                     message("GET NEW HIGH",3)
                     candle.h = boom.price
                  end
            elseif boom.price < candle.l then
               message(tostring(candle.h-range).." ".."Low Test",1)
                  if boom.price <= (candle.h - range) then
                     candle.l = boom.price
                     candle.c = boom.price
                     message("New Candle from new LOW".." "..tostring(candle.o).." "..tostring(candle.h).." "..tostring(candle.l).." "..tostring(candle.c),2)
                     strin = tostring(candle.o)..","..tostring(candle.h)..","..tostring(candle.l)..","..tostring(candle.c)
                     file:write(strin.."\n")
                     candle.o = 0
                     candle.h = 0
                     candle.l = 0
                     candle.c = 0
                  else
                     message("GET NEW LOW",3)
                     candle.l = boom.price
                  end
            end
            i=i+1
            message("GET OUT FOR THE NEW ROUND",3)
            sleep(100)
         end
      
   end
   file:close()
end
 
ЧО НЕ ТАК ТО?
P.S. идея в том, чтобы получить из потока сделок range барчики, например.
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
Цитата
Дмитрий пишет:
Николай Бехтерев , советую вам оформлять свой код с отступами внутри циклов, а чтобы эти отступы не пропадали при размещении сообщения на форуме - пользоваться кнопочкой "оформление текста в виде кода".
Иначе бывает трудно сходу вникнуть в логику работы вашего алгоритма.
Просто ошибся с кнопкой при составлении вопроса, а редактировать сообщения на этом движке видимо никак.
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
Нет, поторопился, не работает. Пустой файл!
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
как всегда, стоит только начать жаловаться, как всё заработает)))
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
Цитата
boom = {}
ttime = {}
is_run = 1

function OnStop()
   is_run = 0
end

function main()
   while is_run == 1 do
       file = io.open("res.txt", "w+t")
           g = getNumberOf("all_trades")-1
           for i=0, g do
               boom = getItem("all_trades", i)
               message(tostring(boom.price),3)
               file:write(tostring(boom.price).. "\n")
               i = i+1
               sleep(1000)
           end
       file:close()
   end
end
dofile( ) - как дать путь в скрипте, чтобы Quik не ругался на отсутствие файла?
 
Ну, правда выручайте, я явно что-то не знаю :))
Не находит файлы по команде
Код
dofile("position.lua")
Файлы лежат водной папке. Разбить на несколько блоков очень удобно!
Правильно я понимаю, что получить только с getItem позицию по фьючу не получится?, Предварительно нужно будет пройтись по количеству срок в "Позиции по клиентским счетам" с getNumberOf?
 
Цитата
Серж пишет:
Мда...
У вас в функции pos поиск выходит за пределы таблицы. Перепишите код так:
Спасибо за совет, но что выдаст в вашем коде getNumberOf, если табличка пустая, вообще нет позиций? У меня нет сейчас возможности проверить этот код.
dofile( ) - как дать путь в скрипте, чтобы Quik не ругался на отсутствие файла?
 
Собственно сабж
Правильно я понимаю, что получить только с getItem позицию по фьючу не получится?, Предварительно нужно будет пройтись по количеству срок в "Позиции по клиентским счетам" с getNumberOf?
 
не работает код, если таблица "Позиции по Клиентским счетам" совсем пустая, т.е. давно не было сделок и поэтому там в принципе нет строчек.
Код
11: attempt to index local 'futures' (a nil value)
 
как быть?
При попытке отправить транзакцию с "KILL_ALL_STOP_ORDERS" было получено:, "Отправка транзакций данного типа из QPILE-программы не поддерживается."
 
Цитата
Egor Zaytsev пишет:
Цитата
Николай Бехтерев пишет:
правильно ли я понимаю, что снять все стопы махом не получится?
Добрый день.

Да, верно.
Это так и будет или в планах есть реализация?
Ещё вопрос, я выставлял стопы с условием "M" т.е. по рынку, но писал и цену, правильно я понял, что "М" не работает, если указана цена?
При попытке отправить транзакцию с "KILL_ALL_STOP_ORDERS" было получено:, "Отправка транзакций данного типа из QPILE-программы не поддерживается."
 
правильно ли я понимаю, что снять все стопы махом не получится?
При попытке отправить транзакцию с "KILL_ALL_STOP_ORDERS" было получено:, "Отправка транзакций данного типа из QPILE-программы не поддерживается."
 
Это нормально?
Правильно я понимаю, что получить только с getItem позицию по фьючу не получится?, Предварительно нужно будет пройтись по количеству срок в "Позиции по клиентским счетам" с getNumberOf?
 
спасибо, сработало.
Правильно я понимаю, что получить только с getItem позицию по фьючу не получится?, Предварительно нужно будет пройтись по количеству срок в "Позиции по клиентским счетам" с getNumberOf?
 
Мой код:
Код
is_run = 1
fuc = "SiM5"
futures = {
         firmid = '',
         trdaccid = '',
         sec_code = '',
         startbuy = 0,
         startsell = 0,
         startnet = 0,
         todaybuy = 0,
         todaysell = 0,
         totalnet = 0,
         openbuys = 0,
         opensells = 0,
         cbplused = 0,
         cbplplanned = 0,
         varmargin = 0,
         avrposnprice = 0,
         positionvalue = 0,
         real_varmargin = 0,
         total_varmargin = 0
      }

function OnStop()
   is_run = 0
end

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

function main()
   while is_run == 1 do
      j = pos(fuc)
      message(tostring(j),1)
      sleep(1000)
   end
end
Совершаю сделку в таблице "Позиции по клиентским счетам (Фьючерсы)" в колонке "План. чист. поз." горит единичка, код продолжает выкидывать мне в сообщениях "0". Другие цифры, маржу например, показывает правильно.
Правильно я понимаю, что получить только с getItem позицию по фьючу не получится?, Предварительно нужно будет пройтись по количеству срок в "Позиции по клиентским счетам" с getNumberOf?
 
Цитата
Sergey Gorokhov пишет:
Цитата
Николай Бехтерев пишет:
а обращаться к таким таблицам через две точки?
да можно
Код
 T={
T1={test="Hello!"},
T2={}
} 
message(T.T1.test,1) 
подсобите, не работает конструкция такого вида, табличку получаем нужную, это вижу по futures.sec_code
но увидеть чистую позицию по фьючерсам: futures.totalnet не получается:



Код
function pos(stroka)
   local i = 0
      while futures.sec_code ~= stroka do
         futures = getItem("futures_client_holding", i)
         i = i+1
      end
      return futures.totalnet
end
   

function main()
   
   while is_run == 1 do
      j = pos(fuc)
   --   One()
      message(tostring(j),1)
      sleep(1000)
   end
end
Правильно я понимаю, что получить только с getItem позицию по фьючу не получится?, Предварительно нужно будет пройтись по количеству срок в "Позиции по клиентским счетам" с getNumberOf?
 
Цитата
Sergey Gorokhov пишет:
Цитата
Николай Бехтерев пишет:
а можно ли сделать таблицу из таблиц?
да можно
T={
T1={},
T2={}
}
а обращаться к таким таблицам через две точки?
Код
T.futures.sec_code
Правильно я понимаю, что получить только с getItem позицию по фьючу не получится?, Предварительно нужно будет пройтись по количеству срок в "Позиции по клиентским счетам" с getNumberOf?
 
выходит что-то на вроде такого:
Код
function pos()
   local i = 0
      while futures.sec_code ~= "SiM5" do
         futures = getItem("futures_client_holding", i)
         i = i+1
      end
end
а можно ли сделать таблицу из таблиц?
Правильно я понимаю, что получить только с getItem позицию по фьючу не получится?, Предварительно нужно будет пройтись по количеству срок в "Позиции по клиентским счетам" с getNumberOf?
 
Может кто-то уже делал получение позиции по наименованию фьючерса, поделитесь?
:)
Необходим проверка условия времени, Нужно исключить торговлю в последнюю минуту торгов, к примеру.
 
спасибо за ресурс :)
Необходим проверка условия времени, Нужно исключить торговлю в последнюю минуту торгов, к примеру.
 
Цитата
Sergey Gorokhov пишет:
%p
Спасибо за ответ.
В результате мой код выглядит вот так:

Код
function main()
   while is_run == 1 do
   dt = os.date()
   ddt = string.sub(dt, 10, 14)
   if ddt == "20:45" then is_run = 0
   end
   sleep (1000)
   end
end
 
Может кому пригодится.
функция string.sub(dt, 10, 14) вырезает подстроку с 10 по 14 символ в строке, которую выдаёт функция os.date() получая как раз время в виде строки: "HH:MM" её и будем сравнивать с заданным заранее значением.
Страницы: Пред. 1 2 3 След.
Наверх