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

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

Страницы: 1 2 3 4 5 6 7 След.
Перестала работать getQuoteLevel2
 
внезапно заработало само
Перестала работать getQuoteLevel2
 
Да
Код
Subscribe_Level_II_Quotes("SPBFUT", inst)

и потом
Код
sleep (500)
Перестала работать getQuoteLevel2
 
После обновления квика до 8.6.0.97 перестала работать функция
getQuoteLevel2
строка
Код
qt = getQuoteLevel2 ('SPBFUT','SRU0')

на вечерней сессии возвращает


С другим запросом
Код
qt = getQuoteLevel2 ('TQBR','GAZP')

та же картина.
Сейчас идёт вечорка, про другие сессии не знаю пока.
getCandlesByIndex - разница в свечах
 
Почему такая разница в выводимых значениях:
Код
--save IMOEX quotes
t,n,_ = getCandlesByIndex("IMOEX",0,0,getNumCandles ('IMOEX'))
mm (#t) =>3008
mm (getNumCandles ('IMOEX')) =>3009
mm (n) =>3009
Большие иконки
 
Я удалил все .dat файлы. В итоге сильно изменился внешний вид иконок. Они стали очень большими.
Как регулировать их размер?
Версия квика 8.3.2.4
Обращение к элементу большой таблицы
 
У меня огромная таблица big_base с миллионом свечей.
в течение итерации происходит обращение к отдельным её элементам:
Код
перебор candle, начало итерации:
big_base[candle][1]
потом снова
big_base[candle][1]
потом
big_base[candle][2]
является ли это обращение долгим?
Возможно, лучше написать:
Код
перебор candle, начало итерации:
current_candle = big_base[candle]
а потом писать
current_candle[1]
current_candle[1]
current_candle[2]
Ускорит ли это работу скрипта, или Луа настолько хорош, что обращение к индексу многомиллионной таблицы идёт быстро?
Получить путь к python.exe
 
Спасибо, Антон.
Код
os.execute("python.exe C:\\script.py")
работает и без указания полного пути к Питону. Я не знал, что так можно!
Это решает мою проблему, я задал этот вопрос, так как думал, что нужен полный путь к python.exe
Получить путь к python.exe
 
Цитата
Anton написал:
Кстати говоря, переменная называется PYTHONPATH без андерскора, может в этом дело?
Антон, спасибо за вашу помощь, вот дополнительная информация
Строчка
Код
message (os.getenv('PATH'),1)
выдаёт


То есть среди этих путей есть нужный!
Но строка
Код
message (os.getenv('PYTHONPATH') or 'type_nil',1)

по прежнему выдаёт нил.
Получить путь к python.exe
 
Цитата
Anton написал:
Сразу в пути использовать переменную? Типа
Код
   os.execute ( "%WINDIR%\\notepad.exe" )
  
Надо чтобы работало у любого желающего, кто захочет это запустить. Не только у меня. Надо универсальный метод.
Получить путь к python.exe
 
Пытаюсь получить путь к файлу python.exe
Строка на Луа
Код
os.getenv("PYTHON_PATH") 
выдаёт nil
Питон свежей версии установлен в необычную папку: C:\InstallPython\python.exe
Подскажите, как средствами Луа получить путь к python.exe
не является приложением Win32
 
Я в этом плохо соображаю. Надо просто перекомпилировать в Visual Studio?
не является приложением Win32
 
Робот на Луа использует dll на С++
В версии КВИКа 7 всё работает как надо, в версии квика 8 выдаёт ошибку:

error loading module 'socket.core' from file 'C:\Program Files (x86)\Lua\5.1\clibs\socket\core.dll': не является приложением Win32.

Как с этим бороться?
Заполнение пропусков на графике
 
Но мне нужен именно мелкий таймфрейм. Эти искажения влияют на работу луа-индикатора.
Я сразу понял, что брокер не прав, говоря, что это проблема у меня в КВИКе.
Значит, это они транслируют эти уродливые графики.
Как это исправить?
Заполнение пропусков на графике
 
Да код класса FEN. Это касается всех инструментов из него.
Как видно на графике, эта проблема была всегда, а не только после указанной вам даты.
Я уже неоднократно перезаказывал архив графиков, чистил .dat файлы, в которых они хранятся. Эти пустые свечки не пропадают с графика. Брокер ведёт себя так, словно это проблема у меня на КВИКе, но мой знакомый заходил под моей учёткой в новый скачанный квик на другом конце земного шара, и это проблема выглядела так же. Это брокер транслирует в КВИК эту ерунду, но почему-то ведёт себя странно и не признаёт этого.
Заполнение пропусков на графике
 
Добрый день.
Подписан у брокера Открытие на трансляцию мировых рынков.
График по иностранным инструментам выглядит так:

Искусственно заполняются неторговые часы.
Брокер говорит, что эта проблема есть только у меня. По просьбе брокера я удалил все .dat файлы отовсюду, даже на всякий случай удалил info.wnd.
Проблема осталась. Более того, она также воспроизводится на других экземплярах КВИКА. А у брокера (со слов менеджера) её нет. Верится с трудом.
Теперь брокер просит выслать им архив КВИКа. Я не против, но прошу всё же ответа от компетентного специалиста-разработчика.
Для сравнения, то же самое на других акциях - NVIDIA (ранее я их НЕ скачивал, этот график прилетел ко мне в терминал впервые)
Вопрос про OnAllTrade
 
А как это лучше сделать? Ведь при первом запуске скрипта в, скажем 13 часов, КВИК сначала загружает историю сегодняшних сделок, и они выглядят как свежие, хотя они старые
Вопрос про OnAllTrade
 
Я подписываюсь на новые сделки через INTERVAL_TICK и обрабатываю их в OnAllTrade
Хочу анализировать только новые сделки. Старые сделки, уже прошедшие за сегодня, обрабатывать не хочу.
Есть ли риски, что в OnAllTrade прилетит старая сделка из сегодняшних?
Ну например при первом старте КВИКа в 13 часов в КВИК начнут сыпаться ранее прошедшие сделки. Они мне не нужны. И только потом начнут поступать новые.  
Имитировать continue
 
В последующих версиях Lua есть функция continue, но КВИК работает на древней версии Луа, где такой опции нет.
можно ли как то силами Lua написать свою функцию continue и легко вставлять её в нужные куски кода, например:
Код
function continue ()
--бла-бла-бла

end

for i=1, 10 do

   if i==5 then continue() end
--бла-бла

end
Отправка транзакций из OnParam
 
Вот рабочий вариант, внедрённый в робота. Увы, приходится объявлять переменную paper как глобальную, потому что sec внутри fn не видна.
Код
function fn(t)

    if stop_search then return nil end --stop_search - это флаг. Изначально равен nil

    if t.sec_code == paper and t.client_code==client_code and t.limit_kind==2 then
      stop_search=true      
        return true
    else
        return false
    end

end

function get_position (sec)
   paper=sec
   stop_search=nil --убиваем флаг, выставленный на прежних запусках функции.
   tbl_indxs=SearchItems('depo_limits', 0, getNumberOf("depo_limits")-1, fn)   
   if tbl_indxs then
      limit = getItem("depo_limits", tbl_indxs[1]) --найден 1 индекс, его и берём.
      local lot=lot[sec]--lot[sec] ранее определена
      return limit.currentbal/lot,limit.locked_buy/lot, limit.locked_sell/lot, limit.awg_position_price
   else
      return 0,0,0,0
   end
end
Отправка транзакций из OnParam
 
Nikolay Pavlov,
посмотрите пожалуйста, это оно?
Код
function fn(t)
   if stop_search then return nil end --stop_search - это флаг. Изначально равен nil
    if t.sec_code == sec and t.client_code==client_code and t.limit_kind==2 then
      stop_search=true
        return true
    else
        return false
    end
end


function get_position (sec)
   stop_search=nil --убиваем флаг, выставленный на прежних запусках функции.
   tbl_indxs=SearchItems('depo_limits', 0, getNumberOf("depo_limits")-1, fn)
   limit = getItem("depo_limits", tbl_indxs[1]) --найден 1 индекс, его и берём.
   local lot=lot[sec]--lot[sec] ранее определена
   return limit.currentbal/lot,limit.locked_buy/lot, limit.locked_sell/lot, limit.awg_position_price
end
Отправка транзакций из OnParam
 
Nikolay Pavlov,
спрошу про другой случай.
Я знаю, что в нужной мне таблице только один элемент с нужным параметром. Например, я ищу в depo_limits текущий остаток по SBER. Как мне в SearchItems оборвать поиск сразу после того как SBER был найден?

Я делаю что-то в таком духе:
Код
function fn(t)
    if t.sec_code == sec and t.client_code==client_code and t.limit_kind==2 then 
        return true
    else
        return false
    end
end

tbl_indxs=SearchItems('depo_limits', 0, getNumberOf("depo_limits")-1, fn)

и второй вопрос, как мне в функцию fn передать переменную sec?
Отправка транзакций из OnParam
 
Nikolay Pavlov,
спасибо за совет!
вопрос по SearchItems. Никогда с ней не работал.

Хочу получить мои сделки за сегодня по BANEP
Код
function fn (t)
   if t.sec_code=='BANEP' then
      return true
   end
end

tbl=SearchItems('trades', 0, getNumberOf("trades")-1, fn, "qty,class_code, sec_code")
в результате таблица tbl выглядит так:
Цитата
1=0;2=1;3=2;4=3;5=4;6=5;7=6;8=7;9=8;10=9;11=10;12=11;13=12;14=13;15=14;16=15;17=16;18=17;19=18;20=19;21=20;22=21;23=22;24=23;25=24;26=25;27=26;28=27;29=28;30=29;31=30;32=31;33=32;34=33;35=34;36=35;37=36;38=37;39=38;40=39;41=40;42=41;43=42;44=43;45=44;46=45;47=46;48=47;49=48;50=49;51=50;52=51;53=52;54=53;55=54;56=55;57=56;58=57;59=58;60=59;61=60;62=61;63=62;64=63;65=64;66=65;67=66;68=67;69=68;70=69;71=70;72=71;73=72;74=73;75=74;76=75;77=76;78=77;79=78;80=79;81=80;82=81;83=82;84=83;85=84;86=85;87=86;88=87;89=88;90=89;
у меня за день и правда 90 сделок, но не понятно в чём толк этой функции?
----------------

Если написать чуть-чуть иначе:
Код
function fn (t)
   if t.sec_code=='BANEP' then
      return t
   end
end

tbl=SearchItems('trades', 0, getNumberOf("trades")-1, fn)

то он пишет такое:
Цитата
1=18;2=20;3=21;
19,21,22 - это номера моих сделок с Башнефтью. С учётом сдвига всё верно. Но как получить все поля по этим сделкам?
Отправка транзакций из OnParam
 
Nikolay Pavlov,
переменная ticker_list из моего примера:
Код
1=SBER;2=GAZP;3=GMKN;4=LKOH;................
Ключ - число, значение - тикер.
Ваш совет:
Код
function tableContains(table, key)    
return table[key] ~= nil
end
не подойдёт в чистом виде.
Разве что переделать тикер лист в
Код
'SBER'=1; 'GAZP' = 2; 'GMKN' = 3;
тогда ваша функция сработает. Но и в этом случае она где-то там невидимо для меня будет перебирать всю таблицу в поисках ключа.
Спасибо за помощь!
Отправка транзакций из OnParam
 
Nikolay Pavlov,
посмотрел описание функции SearchItems. Почему вы её рекламируете по сравнению с
Код
for i=0,getNumberOf("orders")-1,1 do
В ней тоже задаётся список строчек  с какой по какую искать. Если у меня за день 10 000 заявок, скрипт будет пробегать по всем. Разве не так?
Отправка транзакций из OnParam
 
функция для снятия всех заявок.
в неё передаётся таблица с тикерами.
Код
function CleanActive (ticker_list) --переписать её, чтобы искать с конца.
   local row={}
   for i=0,getNumberOf("orders")-1,1 do
      row=getItem("orders",i)   
      local sec=row.sec_code
      if table_contains(ticker_list, sec) and orderflags2table(row.flags).active then
         res,ms=killOrder(tostring(row.order_num),sec,row.class_code)
      end
   end
end
Код
function table_contains(table, element)   
   for _, value in pairs(table) do
      if value == element then return true end
   end
   return nil
end   
Я запускаю CleanActive из OnStop и из самого начала функции main. Это очень часто вешает квик, приходится его убивать через окно с процессами.
Отправка транзакций из OnParam
 
Заметил, что отправка транзакций - выставление и снятие заявок - трудоёмкая операция.
Торгую 50-ю акциями. Если у меня висит 50 заявок, то при их массовом одновременном снятии квик подвисает на несколько секунд. При быстром выставлении такого же числа заявок он тоже зависает.
Поэтому вопросы.
1. Наблюдения верны? Отправка транзакций - ресурсоёмкая процедура?
2. Хочу отправлять транзакции из OnParam. Это плохая идея? С точки зрения логики работы программы это было бы очень удобно. Сейчас у меня отправка заявок идёт в функции main, там в бесконечном цикле перебираются одна за другой 50 акций на соблюдение условия выставления/снятия. Хочу перенести этот блок в OnParam.
Заявок ставится много, они всё время перевыставляются. В день отправляется до 10 тысяч заявок, то есть с учётом снятия это 20 000 транзакций.  
Критерий исполнения заявки OnTrade
 
Вопрос, связанные с троекратным приходом сделки.
Если у меня заключается много сделок, в том числе почти одновременно, возможно ли, что три колбека перемежаются колбеками от соседних сделок.
Ну например прилетает первый колбек по Сберу, потом один по Газпрому, а потом долетают ещё по два колбека от Газпрома и Сбера?
Или они приходят строго очередями? Сначала три по одной бумаге, потом три по другой?
---
Ну и раз вам эта проблема знакома, то какой лучший способ с нею бороться?
Критерий исполнения заявки OnTrade
 
И ещё вопрос. Можно ли факт заключения сделки отслеживать через OnTransReply или он только для отправки ордеров?
Критерий исполнения заявки OnTrade
 
Мне мерещится, или колбек OnTrade срабатывает три раза на каждую сделку?
Один за другим приходят три отчёта о совершении одной сделки.
Выставить кодировку
 
Пишу код в Notepad++
Стоит эта кодировка:


Строка
Код
send_msg ("Снята: "..k)
, где k - тикер, в  квике выглядит так:


Как с этим бороться?
Локальность переменной
 
Я не знаю быстрый или не быстрый. Просто читал что локальные переменные работают быстро.
Ваше сообщение означает, что скорости не прибавится?
Критерий исполнения заявки OnTrade
 
Как с помощью колбека OnTrade понять, что заявка с известным номером исполнилась полностью или частично?
Как то же самое узнать с помощью колбека OnOrder?
Локальность переменной
 
Я хочу, чтобы таблица (или любая переменная) была локальной ради скорости её обработки

local row={}
for i=0,getNumberOf("orders")-1,1 do
row=getItem("orders",i)
end

является ли в этом примере row локальной?
Строка row=getItem("orders",i) не превращает ли её в глобальную? Ведь здесь идёт повторное объявление.
No such file
 
Получаю ошибку


Скрипт организован вот так:

То есть он не видит файл в той же папке где лежит запускаемый скрипт.
Но стоит запускамый скрипт Unitas 3.0.lua удалить а потом добавить, как всё начинает работать:


Запустил КВИК, нажал кнопку Запустить - не работает.
Удалил скрипт из списка, добавил снова, запустил - работает.
биржа или брокер?
 

биржа штрафует за ошибочные транзакции.
хочу уточнить - если я вижу такое сообщение, значит моя транзакция не долетела до биржи и отбита сервером брокера?
Индикатор фрактал
 
Пытаюсь переписать на Питоне индикатор Фрактал (код ниже). Но не могу понять что в этом коде происходит. Помогите пожалуйста написать на питоне индикатор фрактал для самого простого случая - список цен:
Например, как найти верхний фрактал (для пиков)?
price=[186.99,190.99,191.24,197,196.75,196.8,196.8,198,201.26,203.32,208.44,207.17,207.95,210.4,212.2,212,209.7,213.61,213.14,217.9,216.29,215.5,217.85,216.59,211.01,210.43,214,219.1,213.9,204.43,208,204.19,202.08,206.89,203.41,205.25,205.86,205.8,205.4,207.8,206.54,205.5,202.92,205,203.95,205.25,205.1,206,203.66,203.55,205.9,207.7,209.8,210.61,207.7,214,218,214.1,215.07,214.42,217.7,218.23,219.05,221.8,227.5,232.3,238,243.68,238.86,239.5,237.8,233.24,234.3,232.79,232.6,235.41,235.67,236,227.8,223.18,228.8,225.17,229.1,232.52,232.8,231.49,230,227,224.22,227.88,228.69,228.19,226.94,226]

Код
Settings = {
Name = "*FRACTALS (Fractals)", 
Period = 5,
line = {{
      Name = "Horizontal line",
      Type = TYPE_LINE, 
      Color = RGB(140, 140, 140)
      },
      {
      Name = "FRACTALS - Up", 
      Type = TYPE_TRIANGLE_UP, 
      Color = RGB(0, 206, 0)
      },
      {
      Name = "FRACTALS - Down", 
      Type = TYPE_TRIANGLE_DOWN, 
      Color = RGB(221, 44, 44)
      }
      },
Round = "off",
Multiply = 1,
Horizontal_line="off"
}
         
function Init()
   func = FRACTALS()
   return #Settings.line
end

function OnCalculate(Index)
local Out1,Out2 = func(Index, Settings)
   SetValue(Out1, 2, ConvertValue(Settings,H(Out1)))
   SetValue(Out2, 3, ConvertValue(Settings,L(Out2)))
   return tonumber(Settings.Horizontal_line),nil,nil
end

function FRACTALS() --Fractals ("FRACTALS")
   local H_tmp={}
   local L_tmp={}
   local it = {[1]=0, l=0}
return function (I, Fsettings, ds)
local Fsettings=(Fsettings or {})
local P = (Fsettings.Period or 5)
if (P>0) then
   if I == 1 then
      H_tmp={}
      L_tmp={}
      it = {[1]=0, l=0}
   end
   if CandleExist(I,ds) then
      if I~=it[Squeeze(it.l,P)] then
         it.l = it.l + 1
         it[Squeeze(it.l,P)] = I
      end
      local Ip,Ipppp = Squeeze(it.l,P),Squeeze(it.l,P-1)+1
      local nP = math.floor(P/2)*2+1
      H_tmp[Ipppp] = GetValue(it[Ip],HIGH,ds)
      L_tmp[Ipppp] = GetValue(it[Ip],LOW,ds)
      if it.l >= nP then
         local S = it[Squeeze(it.l-nP+1+math.floor(nP/2),P)]
         local val_h=math.max(unpack(H_tmp))
         local val_l=math.min(unpack(L_tmp))
         local L = GetValue(S,LOW,ds)
         local H = GetValue(S,HIGH,ds)
         if (val_h == H) and (val_h >0) 
            and (val_l == L) and (val_l > 0) then
               return S,S
         else
            if (val_h == H) and (val_h > 0) then
               return S,nil
            end
            if (val_l == L) and (val_l > 0) then
               return nil,S
            end
         end
      end
   end
end
return nil,nil
end
end


SMA,MMA,EMA,WMA,SMMA,VMA = "SMA","MMA","EMA","WMA","SMMA","VMA"
OPEN,HIGH,LOW,CLOSE,VOLUME,MEDIAN,TYPICAL,WEIGHTED,DIFFERENCE,ANY = "O","H","L","C","V","M","T","W","D","A"

function CandleExist(I,ds)
return (type(C)=="function" and C(I)~=nil) or
   (type(ds)=="table" and (ds[I]~=nil or (type(ds.Size)=="function" and (I>0) and (I<=ds:Size()))))
end

function Squeeze(I,P)
   return math.fmod(I-1,P+1)
end

function ConvertValue(T,...)
local function r(V, R) 
   if R and string.upper(R)== "ON" then R=0 end
   if V and tonumber(R) then
      if V >= 0 then return math.floor(V * 10^R + 0.5) / 10^R
      else return math.ceil(V * 10^R - 0.5) / 10^R end
   else return V end
end
   if arg.n > 0 then
      for i = 1, arg.n do
         arg[i]=arg[i] and r(arg[i] * ((T and T.Multiply) or 1), (T and T.Round) or "off")
      end
      return unpack(arg)
   else return nil end
end

function GetValue(I,VT,ds) 
VT=(VT and string.upper(string.sub(VT,1,1))) or ANY
   if VT == OPEN then         --Open
      return (O and O(I)) or (ds and ds:O(I))
   elseif VT == HIGH then       --High
      return (H and H(I)) or (ds and ds:H(I))
   elseif VT == LOW then      --Low
      return (L and L(I)) or (ds and ds:L(I))
   elseif VT == CLOSE then      --Close
      return (C and C(I)) or (ds and ds:C(I))
   elseif VT == VOLUME then      --Volume
      return (V and V(I)) or (ds and ds:V(I)) 
   elseif VT == MEDIAN then      --Median
      return ((GetValue(I,HIGH,ds) + GetValue(I,LOW,ds)) / 2)
   elseif VT == TYPICAL then   --Typical
      return ((GetValue(I,MEDIAN,ds) * 2 + GetValue(I,CLOSE,ds))/3)
   elseif VT == WEIGHTED then   --Weighted
      return ((GetValue(I,TYPICAL,ds) * 3 + GetValue(I,OPEN,ds))/4) 
   elseif VT == DIFFERENCE then   --Difference
      return (GetValue(I,HIGH,ds) - GetValue(I,LOW,ds))
   else                     --Any
      return (ds and ds[I])
   end
return nil
end
Стакан или Текущая таблица
 
ds_bid=CreateDataSource ("TQBR","SBER", INTERVAL_TICK,'bid')
ds_bid:Size() возвращает 0.

ds_bid=CreateDataSource ("TQBR","SBER", INTERVAL_M5,'bid')
ds_bid:Size() возвращает 544

Мне нужна непрерывная запись изменяющегося лучшего бида. Объясните пожалуйста, как мне его получить с помощью CreateDataSource.
Или всё-таки придётся писать онлайн лог изменения текущей таблицы?
Стакан или Текущая таблица
 
Майк, получилось
ds=CreateDataSource ("TQBR","SBER", INTERVAL_M5,'bid')
Стакан или Текущая таблица
 
И ещё вопрос разработчикам. Это как? Надо в функцию кидать Number, а в качестве параметра указана строка INTERVAL_M5
Стакан или Текущая таблица
 
Цитата
s_mike@rambler.ru написал:
Цитата
Let_it_go написал:
Записываю лучшие биды и аски по акциям средней ликвидности, например Распадская RASP.
Что лучше выбрать: OnParam или OnQuote?
Сомнения связаны с тем, что текущая таблица транслируется срезами раз в 50 миллисекунда, то есть будут пропущенные данные.
А стакан? Он транслируется срезами или безостановочно?
получать историю параметра 'лучший бид' через createdatasource
Майк, спасибо за ответ. Не первый раз выручаете. Но я не понимаю как это сделать. Документация не раскрывает подробности:
Стакан или Текущая таблица
 
Записываю лучшие биды и аски по акциям средней ликвидности, например Распадская RASP.
Что лучше выбрать: OnParam или OnQuote?
Сомнения связаны с тем, что текущая таблица транслируется срезами раз в 50 миллисекунда, то есть будут пропущенные данные.
А стакан? Он транслируется срезами или безостановочно?
attempt to concatenate field '?' (a nil value)
 
Строка
Код
" sd="..(t_big[candle][6] or "nil")

выдаёт ошибку attempt to concatenate field '?' (a nil value)
6-поле действительно нил. Как правильно написать эту фразу?
Шаг вперёд в цикле
 
Цитата
Sergey Gorokhov написал:
for i=start_year,cur_year,1 do
--если размер таблицы НЕ нулевой то работаем
--иначе ничего не делаем
end
Если размер таблицы первый раз НЕ нулевой, то тоже НЕ работаем.
Работаем только если она второй раз не нулевой.
Шаг вперёд в цикле
 
Есть цикл, внутри которого качаются котировки с финама по многим инструментам.
for i=start_year,cur_year,1 do

end
В начале почти по всем акциям прилетают пустые годы (котировок ещё нет)
Первый НЕпустой год я брать не хочу, потому что котировки ещё не адекватные.
Я хочу брать второй не пустой год.
То есть цикл должен быть таким
Код
for i=start_year,cur_year,1 do
  --если размер таблицы нулевой, шагаем на 2 шага
  --после этого всегда шагаем 1 шагом
end
как это написать?
доступ к большим таблицам
 
Цитата
sergei написал:
data mining вряд ли целесообразно на lua делать, особенно в таких масштабах
производительность должна быть в разы (если не на порядки) ниже более целесообразного варианта

при сбое в электропитании даже промежуточных результатов не будет, да?
У меня виртуалка, там такого не бывает.
доступ к большим таблицам
 
новичок, там на одном из параметров шаг изучения мелкий, поэтому много итераций.
доступ к большим таблицам
 
Есть две огромных таблицы, которые описывают одни и те же свечки
Код
t_big[candle] --хранит цены: {1=open,2=high,3=low,4=close}
sd[candle]--хранит стандартные отклонения для этих свечек: sd[candle]=4.6432234444
Брут форс многкратно обращается к этим полям в поисках наилучших параметров. Крутит цикл, внутри него ещё цикл, а потом ещё цикл. На просчёт пятиминуток за 12 лет по 21 акции у меня ушла неделя.
Объединение этих таблиц в одну приведёт ли к ускорению доступа к их полям? Хотя бы небольшому. Или это нейтрально?
Код
t_big[candle] --хранит цены: {1=open,2=high,3=low,4=close, 5=sd}
Загрузить одну функцию
 
Цитата
Сергей написал:
Интересно вы роботов пишете! Ни одной тривиальной проблема :)

Что там с темным окошком и питоном было? Хоть о финалах этих битв сообщайте! Жуть, как интересно )
Поставил sleep(100) между записью в файл и запуском этого файла в питоне. Пока проблема не повторялась. Возможно раньше, на момент когда питон обращался к этому файлу, с ним ещё что то происходило.  
Загрузить одну функцию
 
Хочу загрузить из большой библиотеки "QL.lua" только одну функцию
Пытаюсь сделать так:
Код
local f = package.loadlib("C:/Program Files (x86)/Lua/5.1/lua/QL.lua", "math_round")
появляется странное окошко:

подскажите, что делать.
Данная идея возникла по прочтении Иерусалимскиса здесь:

Чёрное окошко (Питон, Луа)
 
Цитата
Сергей написал:
Файл tmp.txt может быть залочен или что-то подобное?
В lua ошибку искать просто негде. Отдельно питоновский скрипт всегда работает?
Не знаю, как идет процесс отладки питонов под виндой, но можно тупо добавить там print после каждой строки. Может, он у вас до седьмой строки часто не доходит, не только до 14.
Спасибо. попробую поставить принт везде.
Страницы: 1 2 3 4 5 6 7 След.
Наверх