Очереди и двойные очереди в луа

Страницы: Пред. 1 ... 21 22 23 24 25 26 След.
RSS
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Glukator, Дело вкуса, конечно. Но у меня и не могла быть такая ситуация, изначально. Если тикер вообще есть, то он отслеживается, а если после его паспорта идут незакрытые сделки, то он есть и в портфеле, причём сразу видно, на каких таймфреймах он торгуется. Ну и ситуаций, когда скрипт матерится и отказывается работать немало. Только не в лог, а в message, с указанием номера строки, которая ему не нравится. Кстати, а нафига вам вообще очереди для этой задачи? Лично у меня нет ни одной. По крайней мере, я не помню.
 
Владимир, да так-то очередь там нахрен не нужна, довольно было бы и стека. Она обслуживает вызовы OnTrade() - весь тот мусор с дублями и прочим. Мне изначально казалось, что надо непременно обрабатывать данные от этих вызовов в порядке поступления. Вот и собрал очередь. Но в итоге получилось, что алгоритму разбора порядок их прихода вообще по барабану. А переделывать уже было лень.
 
Glukator,  У вас частный случай, а в примере из книги можно собрать любой вариант (матрица 2*2).

Про демонстрирован вот этот прием: "Поскольку окружение — это обычная таблица, то вы можете просто индексировать ее нужным ключом (именем переменной).
Похожим образом можно присвоить значение глобальной переменной, чье имя вычисляется динамически, если написать _G[varname] = value."

Плюс модуль, один раз написал и забыл, подключаешь модуль где нужно, собираешь что требуется.
Ну ведь классно, согласитесь!
 
Цитата
VPM написал:
Glukator,  У вас частный случай, а в примере из книги можно собрать любой вариант (матрица 2*2).
Вообще не понял ни слова. Какая еще матрица, какой частный случай, что за вариант?
 
Я про очередь.
 
Цитата
VPM написал:
Цитата
Glukator написал:
Да хрен его знает, этого прохвоссора, о чем он толкует. У вас какое-то конкретное практическое приложение намечено для этих структур?

Да уж куда еще конкретней. Попробую сформировать свою Задачу.

Эта тема лежит в начале обсуждения (пост #1) на этой веточки. Но куда то подевались программисты? Все "понты" по отлетали. Лучше месяцами "толочь воду в ступе" про OnInit и тому подобное.
Это делается организацией циклическим массивом.
Например, в индикаторах используем не более 32 отсчетом .
это тест в нем внешний цикл это поступающие отсчеты
А внутренний цикла печатает какие отсчеты сейчас внутри массива
Код
local M=1000000
local tnk=newV(32);
 for i=1, M do push(tnk,i);
local t1={}
for i=1,32 do t1[i]=get(tnk,i); end
print(table.concat(t1,","));
end
и вот результат: Массив содержит всегда последние 32 элемента . Сборщик мусора отдыхает.
Могу показать как работает стек с фиксированной длинной и очередь с циклическим массивом.
А ту очередь, которую Вам гуру по прогаммированию написалчто Вам раноше
Код
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21
0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33
3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34
4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35
5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36
6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37
7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38
8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41
11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42
12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43
13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44
14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45
15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47
17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48
18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49
19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50
20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52
22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53
23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54
24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55
25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56
26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57
27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58
28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59
29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60
30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61
31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63
33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65
35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66
36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67
37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68
38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70
40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71
41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72
42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73
43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74
44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75
45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76
46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77
47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79
49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81
51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82
52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83
53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84
54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85
55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86
56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87
57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88
58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89
59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90
60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91
61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92
62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93
63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95
65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96
66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97
67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98
68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99
69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101
71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102
72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103
73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104
74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105
75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106
76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107
77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108
78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109
79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111
81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112
82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113
83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114
84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115
85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116
86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117
87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118
88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119
89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120
90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121
91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122
92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123
93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124
94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125
95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126
96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127
97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128
98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129
99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130
100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131
101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132
102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133
103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134
104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135
105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136
106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137
107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138
108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139
109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140
110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141
111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143
113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144
114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145
115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146
116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147
117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148
118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149
119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150
66,167,168,169,170
 
nikolz,  А теперь человеческим языком?
 
Выложенный скрипт  очереди Владимира - это просто ужас какой-то.
Сборщик мусора сойдет с ума.
Берем такой  два варианта :
Код
--сравнительный тест размер массива
local M=1000000
local list=List.new()
local tnk=nkcc.new(32);
nklib.startA();  for i=1, M do push(tnk,i); end  tim1=nklib.stopA();
print("замер массива после"..M.." циклов push="..#tnk)
nklib.startA();  for i=1, M do local x=pop(tnk); end  tim2=nklib.stopA();
print("замер массива после"..M.." циклов pop="..#tnk)
nklib.startA();  for i=1, M do local x=get(tnk,i); end  tim3=nklib.stopA();
print("замер массива после"..M.." циклов pop="..#tnk)
print(tim0,tim01,tim1,tim2,tim3,tim0/tim1,tim01/tim2,tim01/tim3);

а это результат:
Код
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "Test_List.lua" 
замер массива после1000000 циклов push=999999
замер массива после1000000 циклов pop=0
739889   798541
замер массива после1000000 циклов push=33
замер массива после1000000 циклов pop=33
замер массива после1000000 циклов pop=33
739889   798541   668524   665355   742990   1.1067500942375   1.2001728400628   1.0747668205494
 
а теперь хвалюсь. На сегодня 5.98%. Подробности на картинке.

 
nikolz, Не понятно что за функции вы используете, а то что ФИФО держит размер массива постоянным и так понятно.

Если для Вас это просто, покажите 4 возможных варианта собранных функциями из книги.
 
Цитата
nikolz написал:
а теперь хвалюсь. На сегодня 5.98%. Подробности на картинке.
Торгую руками 3 тикера  промежуточный результат 5,6 % к текущему капиталу. А у Вас нейросеть.
Не видно даже цены на графике, уберите индикаторы они кроме Вас ни кому не нужны и добавьте сделки (стрелочки на цену)  так будет более информативно.
Да на результаты выведите подписи линий, тогда достаточно одного взгляда, чтоб понять что хотели сказать графиком.
 
nikolz,  Если я Вас правильно понимаю то Вы для себя написали нечто такое
Цитата
Nikolay написал:
Нужен простой массив или кольцевой буфер (что тоже массив).

и сравниваете его по производительности с модулем List?
 
nikolz, А что за "выложенный скрипт  очереди Владимира" - самому Владимиру можно узнать?

VPM, Никакое ФИФО не "держит размер массива постоянным".
 
Цитата
Владимир написал:
Никакое ФИФО не "держит размер массива постоянным".
"Кольцевой буфер, или циклический буфер (англ. ring-buffer) — это структура данных, использующая единственный буфер фиксированного размера таким образом,
как будто бы после последнего элемента сразу же снова идет первый.
Такая структура легко предоставляет возможность буферизации потоков данных".

"Кольцевой буфер находит очень широкое применение в том числе при программировании микроконтроллеров.
Данные структуры часто используют для организации различных очередей сообщений и буферов приёма-передачи различных коммуникационных интерфейсов.
Популярность КБ обусловлена тем, что это один из самых простых и эффективных способов организовать FIFO (англ. first in — first out, «первым пришёл — первым вышел») без использования динамической памяти. Существует множество разновидностей КБ."
https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D1%8C%D1%86%D0%B5%D0%B2%D0%BE%D0­%B9_%D0%B1%D1%83%D1....
 
VPM, Да что Вы мне Вики цитируете? Во-первых, я знал всё о стеках и очередях за много лет до того, как Вики вообще появилась. Во-вторых, там написан Бред Сивой Кобылы. Вернее, это во-первых.
 
"Кольцевой буфер" - круг, окружность, коло, понятие замкнутости. Определили технологический запас, и его поддерживаем, если полочка пустая (в нашем случае nil), не означает изменения структуры (количество полочек прежнее) или не так?
Цитата
Владимир написал:
Во-первых, я знал всё о стеках и очередях за много лет до того, как Вики вообще появилась.
Возможно подзабыли? :smile:  
 
VPM, "Кольцевой буфер" - это НЕ круг и НЕ окружность, это область памяти, точно такая же, как и под стек или под классическую очередь, без каких-либо "понятий замкнутости", "технологических запасов", "пустых полочек", "nil" и прочей бредятины. Там всё слишком просто, чтобы что-то "подзабывать".  
 
Цитата
VPM написал:
Я про очередь.
Это и ежу понятно. А вот что конкретно вы имели в виду, говоря о какой-то "матрице" и прочем, понятнее не стало.
 
Цитата
Glukator написал:
Цитата
VPM написал:
Я про очередь.
Это и ежу понятно. А вот что конкретно вы имели в виду, говоря о какой-то "матрице" и прочем, понятнее не стало.
Алгоритм хранит 2 переменных, начало и конец, 2 функции на добавление элемента, 2 функции на удаление элемента, т.е. всего можно собрать 4 варианта.
   1;    0
  ---------
1 | 11; 10
0 | 01; 00
 
цитата из книги: "можете просто индексировать ее нужным ключом (именем переменной)"  
Вот этот прием:
Код
local first = list.first - 1
list.first = first
list[first] = value
Это две разные переменные 1 - хранит размер; 2 значение.
 
Цитата
VPM написал:
Алгоритм хранит 2 переменных, начало и конец, 2 функции на добавление элемента, 2 функции на удаление элемента, т.е. всего можно собрать 4 варианта.
   1;    0
  ---------
1 | 11; 10
0 | 01; 00
Это просто звиздец. Вы не можете сформулировать утверждение "в алгоритме не хватает функций извлечения элемента с конца очереди и добавления в начало" иначе, как через матрицы?! Вот неудивительно, что тут 23 страницы уже нафлудили, а тема яйца выеденного не стоит.
Цитата
VPM написал:
Это две разные переменные 1 - хранит размер; 2 значение.
Бред. Какой еще размер? В коде вашего примера точно так же хранятся индексы начального и конечного элементов. Разница в том, что в вашем примере эти индексы хранятся в именованных переменных first и last, а у меня в элементе с индексом [0]. И в моем случае нельзя добавлять элементы в начало очереди, т. к. при этом рано или поздно нулевой элемент окажется похерен. Только вот классическая очередь, которая мне была нужна, добавления в начало и не подразумевает.
 
Цитата
Glukator написал:
Какой еще размер? В коде вашего примера точно так же хранятся индексы начального и конечного элементов.
Ну конечно индексы. А разница в универсальности, да и вариантов больше чем 4.
 
Цитата
Glukator написал:
Только вот классическая очередь, которая мне была нужна, добавления в начало и не подразумевает.
Используйте одну функцию добавление в конец, и получаете свой вариант. Это модуль
Цитата
VPM написал:
Плюс модуль, один раз написал и забыл, подключаешь модуль где нужно, собираешь что требуется.
 
VPM, вы так говорите "модуль", как будто это какая-то волшебная таблетка. А это не более чем куча функций, вынесенная в отдельный файл.
 
Glukator,  Вы напишите не большой пример и попробуйте, это будет более понятно и все встанет на свои места.

Вот мой небольшой
Код
local list=List.new()

local ds={10,20,30}; local value=40;
for i=1, #ds do

List.pushlast(list, value)
print( 'Вставил в конец',list.last, list[first] )
if i>1 then
print( 'Удалил первого', List.popfirst (list) , type(list), #list)
end
end

print(list[first],list[last]) 
 
VPM, что именно мне станет понятно? Базовые вещи вроде стеков и очередей? =) Так я их с закрытыми глазами напишу на любом языке, а извращаться в lua, прикручивая "объектно-ориентированность" туда, где можно обойтись тремя функциями, точно не стану. Вам нравится - на здоровье.
 
Цитата
Glukator написал:
вы так говорите "модуль", как будто это какая-то волшебная таблетка. А это не более чем куча функций, вынесенная в отдельный файл.
Это прежде всего таблица. В которой в одном месте можно хранить функции, значения, строки .... Это просто удобно.
А я говорю что еще можно представить как конструктор, такое хранилище элементов конструктор.

Из нашего примера:
Можно записать так   List.pushlast(list, value)   List.popfirst (list)
А можно другой function List.poplast (list) удалить последний List.pushlast (list, value) добавить последний
 
Glukator,  Так что же Вы мне тут, целый час голову морочите, это я у Вас  должен спрашивать. Мне кажется я Вам уже отвечал что я пишу про возможности, а как Вам делать, что Вам делать разберитесь сами!
 
Цитата
VPM написал:
Glukator,  Так что же Вы мне тут, целый час голову морочите, это я у Вас  должен спрашивать. Мне кажется я Вам уже отвечал что я пишу про возможности, а как Вам делать, что Вам делать разберитесь сами!
Если у меня и есть вопросы, как и что делать, так они точно не из области базовых структур данных. А голову вы себе сами заморочили. Обсуждать какие-то "возможности" в отрыве от приложения их к _конкретным_ задачам - изначально бессмысленное занятие. И вам уже не меньше трех человек об этом говорили в разной форме.
 
Glukator,  У нас с Вами и с другими кто нас читает, абсолютно разные программы, и все что мы можем обсуждать это возможности решения каких то узких задач. Об этом я и говорю нравится это кому то или нет. На Ваши Вопросы я с полна как умею ответил, я уже не понимаю что Вам не понятно в данном примере. Что он универсальней Вашего?
 
VPM, Не понимаю, как можно настолько запутать простейшие вещи. Очередь лишь самую малость сложнее стека, к тому же, она здесь и не нужна. Никаких "функций извлечения и добавления элементов" у меня ваапще нет - код копеечный даже для циклической очереди и ещё проще для всего остального. А, ну да - "я их с закрытыми глазами напишу на любом языке", а "объектно-ориентированность" не прикручиваю даже в моём любимом С. Давняя моя фраза: указатель на структуру покрывает все "классовые" потуги Страуструпа как бык овцу.  
 
VPM, я вам пытаюсь донести то, что "универсальность" нахрен не нужна. Нужна эффективность на _конкретных_ задачах, а она чаще достигается через отказ от универсальности. Это вообще зачастую две противоположности.  
 
Цитата
Glukator написал:
VPM, я вам пытаюсь донести то, что "универсальность" нахрен не нужна. Нужна эффективность на _конкретных_ задачах, а она чаще достигается через отказ от универсальности. Это вообще зачастую две противоположности.  
Вы упускаете важную вещь, Вы владеете несколькими языками программирования, закрытыми глазами пишите примеры , а у нас 2 класса образования и те не полные, для меня и думаю 90% процентов здесь таких, важней будет универсальность.
Да с  эффективность нужно еще посмотреть?

Владимир,  Это кого я запутал?
 
Цитата
VPM написал: , а у нас 2 класса образования и те не полные, для меня и думаю 90% процентов здесь таких,
Ну вот это не надо прибедняться. Самоуничижение - одна из форм гордыни.
 
Glukator,  Я не имею ни какого отношения к программированию, кроме данного проекта.
 
Эта "универсальность" не только нахрен не нужна, но и вредна. Прерывания OnTrade приходят "крест-накрест собаьим шагом", а потому АБСОЛЮТНО по барабану, в какой последовательности их обрабатывать - тем более, события уже произошли. Соответственно, берём самое простое - обычный стек. Чтобы поставить новый элемент на вершину стека или взять его оттуда, никаких фунций не требуется - обычное присвоение. Со стеком заявок чуть сложнее - некторые из них у меня подаются "вне очереди". И со стеком активных заявок тоже: какая из них исполнится, а какая снимется - одному Богу известно. Наконец, поддерживать постоянный размер очереди или стека есть просто идиотизм: страшно переполнение, а не рост. А переполнить Lua-таблицу - это надо ОЧЕНЬ постараться! У меня и при тысяче тикеров размеры стеков будут исчисляться десятками элементов -плюнуть и растереть.
 
Цитата
Владимир написал:
Со стеком заявок чуть сложнее - некторые из них у меня подаются "вне очереди".
А у меня паспорта активных заявок складываются просто в глобальную lua-таблицу Orders, где индексы - trans_id заявок. И доступ быстрый и удобный, т. к. trans_id всегда известен.
 
Цитата
Владимир написал:
Эта "универсальность" не только нахрен не нужна, но и вредна. Прерывания OnTrade приходят "крест-накрест собаьим шагом", а потому АБСОЛЮТНО по барабану, в какой последовательности их обрабатывать - тем более, события уже произошли. Соответственно, берём самое простое - обычный стек. Чтобы поставить новый элемент на вершину стека или взять его оттуда, никаких фунций не требуется - обычное присвоение. Со стеком заявок чуть сложнее - некторые из них у меня подаются "вне очереди". И со стеком активных заявок тоже: какая из них исполнится, а какая снимется - одному Богу известно. Наконец, поддерживать постоянный размер очереди или стека есть просто идиотизм: страшно переполнение, а не рост. А переполнить Lua-таблицу - это надо ОЧЕНЬ постараться! У меня и при тысяче тикеров размеры стеков будут исчисляться десятками элементов -плюнуть и растереть.
Владимир,  Вы сами кого хотите запутаете, то что Вы описали я пользуюсь, веду таблицу ордеров, сделок, позиции, результатов, оценок ... Сделал с Вашего примера опубликованного на этом форуме, за что Вам все скажем, спасибо!

Но здесь речь шла абсолютно о другом, сделать очередь ФИФО, для управления, передачи и обработки заданного количества элементов, а про универсальность пусть каждый сам решает, тем более примеры есть разные, на любой вкус!
 
Цитата
VPM написал:
сделать очередь ФИФО, для управления, передачи и обработки заданного количества элементов
Берете обычную очередь, и если добавление в нее очередного элемента должно привести к превышению заданной длины, то после добавления (или перед ним - как нравится) выбрасываете первый элемент.  
 
Цитата
Glukator написал:
Цитата
VPM написал:
сделать очередь ФИФО, для управления, передачи и обработки заданного количества элементов
Берете обычную очередь, и если добавление в нее очередного элемента должно привести к превышению заданной длины, то после добавления (или перед ним - как нравится) выбрасываете первый элемент.  
Да но были и другие варианты!
 
VPM, а вам-таки шашечки или ехать? "Не измышляйте истин сверх необходимого" - Уильям Оккамский.  
 
Glukator,  "Да мне шашечки и вряд а уж выберу на чем ехать!"  - VPM :smile:  
 
Glukator, Нет уж, спасибочки! Во-первых, в trans_id, как мы помним, попадаются и нули, и я вовсе не уверен, что там не бывает других, менее явных ошибок. Я сравниваю по комплексу признаков: и айдишки какие надо, и тикер тот же, и направление, и цена близкая, и объём не выше остатка. Во-вторых, заявки могут и не исполниться или исполниться частично, а от снятых заявок стек тоже нужно очищать. Такшта я лучше пробегусь по стеку - это недорого.

VPM, Так и пользуйтесь тем, что я описал, а не поддержанием размера очереди. И без всякого ФИФО!
 
Владимир, :) пока проблем не было. При разборе очереди сделок сначала оттуда извлекаю запись trade = qpop(Trades), и сразу же проверяю на trans_id == 0. Если это так, с извлеченной записью ничего не делается, просто извлекается и обрабатывается следующая. Если trans_id не 0, то ищу нужную заявку в одно действие: order =  Orders[trade.trans_id]. Если результат nil, значит, сделка была по левой заявке. По комплексу признаков оно, вероятно, надежнее. Но, повторюсь, пока проблем не было ни разу, ни одна заявка и ни одна сделка не потерялись. Ну а очистка при снятии или после исполнения - это само собой, зачем лишний мусор хранить? Отработали - забыли :)
 
Glukator, У меня было слишком много проблем буквально во всём, и я предпочитаю страховаться по максимуму - четверь моего кода была написана специально для компенсацию глюков системного софта - они лезут отовсюду как тараканы. И я вовсе не уверен, что в случае, скажем, trans_id == 1 или какое-то более правдолодобное число, Вам удастся трюк с "order =  Orders[trade.trans_id]".  Я вот подозреваю, что скрипт просто вылетит с ошибкой типа "попытка индексации по nil" (что-то подобное у меня когда-то случалось). Кстати, это нетрудно проверить: подать заявку вручную, в обход скритпа - OnTrade ему всё равно прилетит, а trans_id гарантированно будет левым. Но даже если это и проскочит, у меня код надёжнее.
 
Цитата
Владимир написал:
Так и пользуйтесь тем, что я описал, а не поддержанием размера очереди. И без всякого ФИФО!
Спасибо что разрешили, ни у кого нет у меня есть разрешение, почти официальное. Вырежу в рамочку  под стекло! :lol:  
 
VPM, На здоровье. Я дважды предлагал совместно вылизать все "технические" утилиты для торговли, вплоть до открытых кодов, и дважды это заканчивалось поросячьим визгом. Востребованы лишь такие ветки как эта - чуть ли не рекордсмен и по числу постов и по числу просмотров за всё время существования форума, и тема просто "ни о чём", пустой трёп.
 
Владимир,  Лично для меня ветка полезна, а если бы отдельные члены дискуссии не занимались манипуляциями, а прямо отвечали на поставленные вопросы, то пустых постов было бы поменьше.
Хочется напомнить, что знак вопроса (?) в конце предложения означает, что задан вопрос, на который требуется ответ, иначе дурной тон. Но хамство это похоже какая - то профессиональная черта.
 
VPM,  ЧЕМ "лично для Вас ветка полезна"? Вы ХОТЬ ЧТО-НИБУДЬ сделали в своём коде полезного по материалам этой ветки? Если собрать в кучу всё полезное, что было высказано в этой тысяче с лишним постов, наберётся ли материала хотя бы на один? Здесь ВСЕ ДО ЕДИНОГО "отдельные члены дискуссии", буквально вся ветка есть один пустой трёп, включая вопросы. Для чего написан, скажем, вот этот последний Ваш коммент? Ну или посчитайте количество "знаков вопроса в конце предложения" в этом моём.
 
Цитата
Владимир написал:
ЧЕМ "лично для Вас ветка полезна"?
Ответ: Обсуждаю вопросы для меня не очень понятные. А есть которые самоутверждаются.
Цитата
Владимир написал:
Вы ХОТЬ ЧТО-НИБУДЬ сделали в своём коде полезного по материалам этой ветки?
Ответ: Да.
Цитата
Владимир написал:
Если собрать в кучу всё полезное, что было высказано в этой тысяче с лишним постов, наберётся ли материала хотя бы на один?
Ответ: Я бы сильно не доверял статистике на сайте, цена ей три копейки. А считать Вы сами умеете, да и вопрос из области полезности, а она индивидуальна.
Цитата
Владимир написал:
Для чего написан, скажем, вот этот последний Ваш коммент?
Ответ: Пытаюсь объяснить, что "наделав кучу на голове у оппонента,  сидеть на ней, как на горе Эверест, со значимым видом" затея так себе.

PS: Манипуляция - это такой прием, "Перевод с больной головы на здоровую"
Страницы: Пред. 1 ... 21 22 23 24 25 26 След.
Читают тему
Наверх