-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadvisor.lua
149 lines (124 loc) · 4.02 KB
/
advisor.lua
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
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
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
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
dofile (getScriptPath() .. "\\logger.lua")
dofile (getScriptPath() .. "\\markFunctions.lua")
dofile (getScriptPath() .. "\\config.lua")
is_run = true
function main()
local lastSec = 0
while is_run do
date = os.date("*t")
sec = tonumber(date.sec)
drawCenterTrades()
drawMaxQuotes()
if (sec < 1) and (lastSec > 0) then
sales:clear()
buys:clear()
end
lastSec = sec
sleep(400)
end
end
-- Âûÿñíÿåò è ðèñóåò öåíòðû òÿæåñòè ñäåëîê
oldT = {
sales = {
mark = "",
time = "",
markId = 0
},
buys = {
mark = "",
time = "",
markId = 0
}
}
function drawCenterTrades()
local price,quantity = sales:getCenterTrade()
local time = sales:getTime()
local mark = quantity > config.minCenterTrade and math.floor(quantity/config.multiplier)..'' or ""
if ((oldT.sales.mark ~= mark) or ( oldT.sales.time ~= time)) and (mark ~= "") then
if oldT.sales.time == time then
DelLabel( config.chartTag, oldT.sales.markId)
end
oldT.sales.markId = markCenterSellTrade(price, quantity,time)
oldT.sales.mark = mark
oldT.sales.time = time
end
price,quantity = buys:getCenterTrade()
time = buys:getTime()
mark = quantity > config.minCenterTrade and math.floor(quantity/config.multiplier)..'' or ""
if (( oldT.buys.mark ~= mark) or (oldT.buys.time ~= time)) and (mark ~= "") then
if oldT.buys.time == time then
DelLabel( config.chartTag, oldT.buys.markId)
end
oldT.buys.markId = markCenterBuyTrade(price, quantity,time)
oldT.buys.mark = mark
oldT.buys.time = time
end
end
-- Âûÿñíÿåò è ðèñóåò ìàêñèìàëüíûå êîòèðîâêè
oldQ = {
sales = {
mark = "",
time = "",
markId = 0
},
buys = {
mark = "",
time = "",
markId = 0
}
}
function drawMaxQuotes()
local price,quantity = sales:getMaxQuote()
local time = sales:getTime()
local mark = quantity > config.minQuote and math.floor(quantity/config.multiplier)..'' or ""
if ((oldQ.sales.mark ~= mark) or ( oldQ.sales.time ~= time)) and (mark ~= "") then
if oldQ.sales.time == time then
DelLabel( config.chartTag, oldQ.sales.markId)
end
oldQ.sales.markId = markSellQuote(price, quantity,time)
oldQ.sales.mark = mark
oldQ.sales.time = time
end
price,quantity = buys:getMaxQuote()
time = buys:getTime()
mark = quantity > config.minQuote and math.floor(quantity/config.multiplier)..'' or ""
if (( oldQ.buys.mark ~= mark) or (oldQ.buys.time ~= time)) and (mark ~= "") then
if oldQ.buys.time == time then
DelLabel( config.chartTag, oldQ.buys.markId)
end
oldQ.buys.markId = markBuyQuote(price, quantity,time)
oldQ.buys.mark = mark
oldQ.buys.time = time
end
end
function OnQuote(class, sec )
if class == config.class and sec == config.sec then
local quotes = getQuoteLevel2 ( config.class , config.sec)
if quotes.bid ~= nil and quotes.bid ~= "" then
for k, v in pairs(quotes.bid) do
buys:addQuote(v.price,v.quantity)
end
end
if quotes.offer ~= nil and quotes.offer ~= "" then
for k, v in pairs(quotes.offer) do
sales:addQuote(v.price,v.quantity)
end
end
end
end
function OnAllTrade( trade ) -- Ïðèëåòåëà îáåçëè÷åííàÿ ñäåëêà
if trade.class_code == config.class and trade.sec_code == config.sec then
if bit.band( trade.flags, 1) ~= 0 then
sales:addTrade(trade.price, trade.qty)
else
buys:addTrade( trade.price, trade.qty)
end
end
end
function OnInit()
sales = logger:new()
buys = logger:new()
end
function OnStop()
is_run = false
end