Избранное трейдера АлексейФ
![Скринер-помощник для скальперов ММВБ | Quik [IMG]](https://i.imgur.com/VVoflo5.png)

После появлении торговых систем, и избыточного количества качественных сигналов по ним, часто сталкиваешься с задачей ведения большого количества позиций по разным системам, с разными вариантами отработки (фьючерсы, опционы, фьючерсные и опционные спреды). При ручной отработке автоматически сгенерированных сигналов и их большом количестве расходуется много времени.
Терминал CQG Q trader позволяет автоматом получать из него данные в Excell в режиме реального времени. Это помогает избавиться от 95% рутины при ведении и анализе позиций и мета-позиции по рынку.

При ведении 10-20 позиций по разным инструментам, особенно на CME, приходится контролировать большое количество рисков и параметров:

Settings=
{
Name = "AT-obl_can", -- название индикатора
delta=2.0, -- параметр индикатора
rep=5,
shif=0,
wt=1,
line=
{
{
Name = "ln1",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255, 0, 0)
},
{
Name = "ln2",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255, 0, 0)
}
}
}
function Init()
vMin = 0
vMax = 0
vMinindex = 0
vMaxindex = 0
voldMinindex = 0
voldMaxindex = 0
return 2
end
function OnCalculate(index)
rep = Settings.rep
shif = Settings.shif
wt = Settings.wt
sz = Size()-shif
if index <= sz then
if index <= 1 then
vMin = C(index)
vMax = C(index)
vMinindex = index
vMaxindex = index
voldMinindex = index
voldMaxindex = index
v = C(index)
else
if voldMaxindex >= voldMinindex then
--if vMin~=nil then
if C(index) > (1 + Settings.delta/100)*vMin then
vMin = C(index)
vMax = C(index)
vMaxindex = index
voldMinindex = vMinindex
vFrom = vMinindex
else
if vMin > C(index) then
vMin = C(index)
vMinindex = index
vFrom = voldMaxindex
else
vFrom = vMinindex
end
end
--end
else
if voldMaxindex <= voldMinindex then
--if vMax~=nil then
if C(index) < (1 - Settings.delta/100)*vMax then
vMax = C(index)
vMin = C(index)
vMinindex = index
voldMaxindex = vMaxindex
vFrom = vMaxindex
else
if vMax < C(index) then
vMax = C(index)
vMaxindex = index
vFrom = voldMinindex
else
vFrom = vMaxindex
end
end
--end
end
end
--if vFrom~=nil then
--[[
for i = vFrom, index do
k = (C(index)- C(vFrom))/(index- vFrom);
v = i*k + C(index) - index*k
SetValue(i, 1, v)
end --]]
--end
if index == sz then
for k = 1, 2 do
vf = 1
vs = 0
if k == 1 then
if vMinindex < vMaxindex then
vf = vMinindex
vs = vMaxindex
up = 0
elseif vMinindex > vMaxindex then
vs = vMinindex
vf = vMaxindex
up = 1
end
elseif k == 2 then
if voldMinindex < voldMaxindex then
vf = voldMinindex
vs = voldMaxindex
up = 0
elseif voldMinindex > voldMaxindex then
vs = voldMinindex
vf = voldMaxindex
up = 1
end
end
n = 0
xy = 0
x = 0
y = 0
xx = 0
m = 0
for i = vf, vs do
m = m +1
n = n + 1*(1+wt*m)
xy = xy + i*C(i)*(1+wt*m)
x = x + i*(1+wt*m)
y = y + C(i)*(1+wt*m)
xx = xx + i*i*(1+wt*m)
end
if (n*xx - x*x) ~= 0 and n ~= 0 then
a = (n*xy - x*y)/(n*xx - x*x)
b = (y - a*x)/n
for j = 1, rep do
n = 0
xy = 0
x = 0
y = 0
xx = 0
m = 0
for i = vf, vs do
v = a*i + b
clc = 0
if up == 1 and C(i) > v then
clc = 1
end
if up == 0 and C(i) < v then
clc = 1
end
if clc == 1 then
m = m + 1
n = n + 1*(1+wt*m)
xy = xy + i*C(i)*(1+wt*m)
x = x + i*(1+wt*m)
y = y + C(i)*(1+wt*m)
xx = xx + i*i*(1+wt*m)
end
end --[[--]]
if (n*xx - x*x) ~= 0 and n ~= 0 and n > 2 then
a = (n*xy - x*y)/(n*xx - x*x)
b = (y - a*x)/n --[[ --]]
end
end
for i = vf, sz do
v = a*i + b
if up == 1 and v >= C(vs) or up == 0 and v <= C(vs) then
SetValue(i, k, v)
end
end
end
end
end
end
end
endИтак, граждане-трейдеры, сбор средств для финансирования создания коннектора между Wealth-Lab 7 и широко известной в узких кругах программой Quik продолжается.
Ранее анонс был сделан здесь:
https://smart-lab.ru/blog/740754.php
Итак, проект стартанул, в смысле не только сбор средств, но и разработка. Проект уже профинансирован на 60К рублей. Узнать детали, подробности, жарки сплетни, слухи, посмотреть короткие видосики где «о, оно уже шевелится!» можно в чате проекта: https://t.me/joinchat/v8SwzUrLLChkMjE6. Коннектор будет включать в себя модуль получения стриминг данных, исторических данных, а так же модуль работы со счетами и заявками. На текущий момент уже работает получение свечей в реальном времени и кое что ещё.
Немного про Wealth-Lab 7 (будем называть его для краткости WL7), зачем он, что он, что он может и чего он не может. Где-то может буду повторять то, что уже говорил, ну ничего.
Про WL7 тезисно:
— WL7 мощный, гибкий. Программа специализируется на бэктестинге, рисёче и в этой области её возможности огромны и постоянно расширяются. Если же вам чего-то не хватает или нужно что-то специфичное, то во-первых программа активно расширяется (например, на их youtube канале можно посмотреть как часто выходят видео про новые обновления и как наполнены они новыми фишками: https://www.youtube.com/c/WealthLabSupport/videos ). Во-вторых, у WL7 открытый API интерфейс (


C 1 января 2022 года на ФНС России возлагаются функции по выпуску квалифицированной электронной подписи для юридических лиц (лиц, имеющих право действовать от имени юридического лица без доверенности), индивидуальных предпринимателей и нотариусов.
Срок действия КЭП, выпущенных коммерческими удостоверяющими центрами, заканчивается 1 января 2022 года. До 1 июля 2021 года им необходимо переаккредитоваться. Чтобы обеспечить «бесшовный» переход от платной к соответствующей безвозмездной государственной услуге по выпуску электронной подписи с 1 июля получить квалифицированную электронную подпись можно будет в Удостоверяющем центре ФНС России.
Сделать это смогут все юридические лица и индивидуальные предприниматели с учетом следующих ограничений:

--[[
AutoTrade target indicator
shows target growth/fall
varsion 3
line gr shows real growth
line tgr_up shows target growth
line tgr_dwn shows target fall
line ln_up shows target growth history
line ln_dwn shows target fall history
--]]
Settings=
{
Name = "AT-target_v3", -- indicator name
per=20, -- period
growth=1.0, -- growth by %
fall=1.0, -- fall by %
xshift=0, -- shifth by x axis
showln=1, -- 1-show lines 0-do not show
line=
{
{
Name = "gr",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0,0) -- black
},
{
Name = "tgr_up",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0,255) -- blue
},
{
Name = "tgr_dwn",
Type =TYPE_LINE,
Width = 1,
Color = RGB(255,0,0) -- red
},
{
Name = "ln_up",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0,255) -- blue
},
{
Name = "ln_dwn",
Type =TYPE_LINE,
Width = 1,
Color = RGB(255,0,0) -- red
}
}
}
function Init()
return 5
end
function OnCalculate(index)
sz = Size()
per = Settings.per
gr = Settings.growth
fl = Settings.growth
sh = Settings.xshift
sl = Settings.showln
if index == sz then
for i = 1, sz do
-- crearing
SetValue(i, 1, nil)
SetValue(i, 2, nil)
SetValue(i, 3, nil)
SetValue(i, 4, nil)
SetValue(i, 5, nil)
end
for i = sz-per-sh, sz-sh do
-- paint line
v = (C(sz-sh) - C(sz-per-sh+1))*(i-(sz-per-sh+1))/per + C(sz-per-sh+1)
v2 = (C(sz-per-sh+1)*(1+gr/100) - C(sz-per-sh+1))*(i-(sz-per-sh+1))/per + C(sz-per-sh+1)
v3 = -(C(sz-per-sh+1)*(1+fl/100) - C(sz-per-sh+1))*(i-(sz-per-sh+1))/per + C(sz-per-sh+1)
SetValue(i, 1, v)
SetValue(i, 2, v2)
SetValue(i, 3, v3)
end
if sl == 1 then
for i = per, sz-sh do
-- paint line
v4 = (C(i-per+1)*(1+gr/100) - C(i-per+1)) + C(i-per+1)
v5 = -(C(i-per+1)*(1+fl/100) - C(i-per+1)) + C(i-per+1)
SetValue(i, 4, v4)
SetValue(i, 5, v5)
end
end
-- last value
if sh == 0 then
return v, v2, v3, v4, v5
end
end
end