Избранное трейдера Балабанов Александр 💎
Недавно снова спросили «а зачем продавать рабочие торговые системы?». Вопрос из разряда вечных, спрашивать такое будут всегда. Я уже отвечал в прошлом году, с небольшими вариациями — повторюсь. Сорри за повтор, но нет особого смысла писать то же самое иными словами…
Да, иногда вопрос задают как явный троллинг, мол, мы-то знаем ответ, рабочие системы не продают, ну что, инфоцыган, съел? На такое не отвечают, любой вопрос с хамской интонацией — перечеркивает саму возможность ответа. Но сам-то по себе вопрос нормальный, у нормальных людей тоже возникает.
Система системе — рознь. Действительно, есть те, которые ограничены по ликвидности. Если времени на вход пять секунд или даже пять минут, то да, новые пользователи будут мешать старым, и в первую очередь — мне. Но если окно для входа и выхода в районе часа как минимум, работа идет на гиперликвидах с оборотом десятки миллиардов в день (скажем, фьючерсы на доллар или юань), то все ок.
Ну всё… Прокуратура США в течении пары недель или месяцев заведёт уголовные дела против Binance. https://smart-lab.ru/blog/862396.php
В том числе из-за того что Binance не соблюдает санкции против РФ.
Сейчас – риск блокировки счетов для РФ пользователей, на Binance очень высок. Один из самых больших за всё время с начала введения санкций. Ибо выбирая между горсткой российских пользователей и Европейцами, Японцами и Американцами – выбор экономический очевиден. Binance могут прогнуть.
Что происходит?
Есть шанс блокировки счёта на Binance для пользователей привязавших свои аккаунты к РФ.
Деньги вывести дадут, но торговать точно не выйдет больше. И возможно – из блокировки потом выводить будет мучительно больно и тяжело. Если совсем не невозможно.
Я – очень долгое время топил и топлю за то что надо там торговать не смотря ни на что. Загнал на Binance несколько сотен человек после начала СВО.
Мне за Вас всех страшно. И вы должны мне помочь.


1 Пользую 7 лет выделенный сервак в датацентре. Но тслаб отожрался до 20 гиг, требует 2ух моторного серебряного ксеона о 24ех ядрах и 48ми потоках. А стоит такое чудо ажно 250к в год ну и сам тслаб 40к в год. Т.е 10 за лет сервак прожирает новый авто. И сбоит этот сервак стабильно раз год.
2 На грудь прыгнула здоровенная жаба — платить такие деньжища. И решил попробовать смастерить подходящую замену серверу из говна и палок.
3 Мысль была в том, чтоб взять два компа. Поставить их в разных городах, чтоб исключить проблемы с электричеством, интернетом и техникой. Т.е оба компа сразу не сдохнут, электричество одновременно не отключится и интернет одновременно не пропадет. На обоих компах поставить тслаб, соеденить их через облако, и как только один компов дает сбой — отключать его, включать второй комп и поднимать резервную копию с облаков.

--[[
индикатор торговой системы QUIK:
канал на последнем зигзаге
индикатор строит канал по зигзагу, показывает слом тренда при выходе цены за границы канала
параметры:
Procent - величина зигзага в %
k - коэффизиент ширины канала
Ext - =0-канал стоится по средним =1-канал стоится по экстремуму
Как им пользоваться:
в папке QUIK\LuaIndicators создаем текстовый файл с содержимым кода индикатора
добавляем индикатор на график
задаем параметр чувствиельности инлдикатора — Процент
индикатор показывает уровни, в которых находится тренд
если тренд еще не сформировался, то границы канала могут расширяться по мере движения цены
если в канале уже есть локальные вершины, то при следующем походе индикатора к границе канал возмен разворот тренда или коррекции в рамках данного канала
--]]
Settings=
{
Name = "Zigzag_channel_fast", -- название индикатора
Procent=5.0, -- величина зигзага в %
k=2, -- коэффизиент ширины канала
Ext=1, -- =0-канал стоится по средним =1-канал стоится по экстремуму
shif=0,
line=
{
{
Name = "zigzagline",
Type =TYPE_LINE,
Width = 1,
Color = RGB(120,90, 140)
},
{
Name = "cur1",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0, 0)
},
{
Name = "cur2",
Type =TYPE_LINE,
Width = 2,
Color = RGB(0,200, 200)
},
{
Name = "cur3",
Type =TYPE_LINE,
Width = 2,
Color = RGB(200,200, 0)
},
{
Name = "cur4",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0, 0)
},
{
Name = "cur5",
Type =TYPE_LINE,
Width = 2,
Color = RGB(0,0, 255)
},
{
Name = "cur6",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255,0, 0)
},
{
Name = "cur7",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255,0, 0)
},
{
Name = "cur8",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255,0, 0)
},
{
Name = "cur9",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255,0, 0)
},
{
Name = "cur10",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255,0, 0)
},
{
Name = "cur11",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255,0, 0)
}
}
}
function Init()
y1 = nil
y2 = nil
y3 = nil
x1 = 1
x2 = 1
x3 = 1
oldindex = 1
a_01 = 0
b_01 = 0
a_02 = 0
b_02 = 0
vminus_01 = 0
vplus_01 = 0
vminus_02 = 0
vplus_02 = 0
vFrom_01 = 1
vTo_01 = 1
vFrom_02 = 1
vTo_02 = 1
vminus = 0
vplus = 0
vminus_n = 0
vplus_n = 0
ret = 0
last_ind = 1
v1=nil
v2=nil
v3=nil
v4=nil
v5=nil
v6=nil
v7=nil
v8=nil
v9=nil
v10=nil
return 10
end
function recalcline(num, index, rec)
if index == Size()-sh and rec == 0 then
for i = 1, index do
if m == 1 then
SetValue(i, 3, nil)
SetValue(i, 4, nil)
end
if m == 2 then
SetValue(i, 6, nil)
SetValue(i, 7, nil)
end
end
end
if index == Size()-sh or rec == 1 then
if num == 1 then
vFrom = 0 --[[ --]]
vTo = 0
if x3 < x2 then
vFrom = x3
vTo = x2
else
vFrom = x2
vTo = x3
end
end
if num == 2 then
vFrom = 0
vTo = 0
if x1 < x2 then
vFrom = x1
vTo = x2
else
vFrom = x2
vTo = x1
end
end
if vFrom < 1 then
vFrom = 1
end
a1 = 0
a2 = 0
a3 = 0
a4 = 0
n = 0
a = 0
b = 0
for i = vFrom, vTo do
n=n+1
a1 = a1+i*C(i)
a2 = a2+i
a3 = a3+C(i)
a4 = a4+i*i
end
if((n*a4 - a2*a2) ~= 0) then
-- if oldindex ~= Size() then
a = (n*a1 - a2*a3)/(n*a4 - a2*a2)
b = (a3 - a*a2)/n
vminus = 0
vplus = 0
vminus_n = 0
vplus_n = 0
for i = vFrom, index do
y = a*i + b
if i>0 then
if C(i) < y and i <= vTo then
if ex == 0 then
vminus = vminus + y - C(i)
vminus_n = vminus_n + 1
else
if i == vFrom then
vminus = 0
end
if y-C(i) > vminus then
vminus = y-C(i)
end
end
end
end
if i>0 then
if C(i) > y and i <= vTo then
if ex == 0 then
vplus = vplus + C(i) - y
vplus_n = vplus_n + 1
else
if i == vFrom then
vplus = 0
end
if C(i)-y > vplus then
vplus = C(i)-y
end
end
end
end
m = 0
if C(vTo) > C(vFrom) and y < C(vTo)+0.1*(C(vTo)-C(vFrom)) and y > C(vFrom)-0.1*(C(vTo)-C(vFrom)) then
m = 1
end
if C(vTo) < C(vFrom) and y < C(vFrom)+0.1*(C(vFrom)-C(vTo)) and y > C(vTo)-0.1*(C(vFrom)-C(vTo)) then
m = 1
end
if m == 1 then
--SetValue(i, 2, y)
end
end
--end
if ex == 0 then
if vminus_n ~= 0 then
vminus = kk*vminus/vminus_n
end
if vplus_n ~= 0 then
vplus = kk*vplus/vplus_n
end
end
end
if num == 1 then
a_01 = a
b_01 = b
vminus_01 = vminus
vplus_01 = vplus
vFrom_01 = vFrom
vTo_01 = vTo
end
if num == 2 then
a_02 = a
b_02 = b
vminus_02 = vminus
vplus_02 = vplus
vFrom_02 = vFrom
vTo_02 = vTo
end
return 1
end
return 0
end
function levels(x, y, num, index)
if y ~= nil and x ~= 1 then
for i = 1, index do
if i > x then
SetValue(i, num, y)
else
SetValue(i, num, nil)
end
end
end
end
function OnCalculate(index)
de = Settings.Procent
kk = Settings.k
ex = Settings.Ext
sh = Settings.shif
v1=nil
v2=nil
v3=nil
v4=nil
v5=nil
v6=nil
v7=nil
v8=nil
v9=nil
v10=nil
if index > Size()-sh then
--return nil, nil, nil, nil, nil, nil, nil
return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10
end
vl = C(index)
if vl~=nil then
if index == 1 then
y1 = vl
y2 = vl
else
if C(index) > y1*(1+de/100) and y1 < y2 then
x3 = x2
x2 = x1
y3 = y2
y2 = y1
x1 = index
y1 = C(index)
ret = recalcline(1, index, 0)
ret = recalcline(2, index, 0)
levels(x1, y1, 8, index)
levels(x2, y2, 9, index)
levels(x3, y3, 10, index)
end
if C(index) > y1 and C(index) > y2 then
x1 = index
y1 = C(index)
end
if C(index) < y1*(1-de/100) and y1 > y2 then
x3 = x2
x2 = x1
y3 = y2
y2 = y1
x1 = index
y1 = C(index)
ret = recalcline(1, index, 0)
ret = recalcline(2, index, 0)
levels(x1, y1, 8, index)
levels(x2, y2, 9, index)
levels(x3, y3, 10, index)
end
if C(index) < y1 and C(index) < y2 then
x1 = index
y1 = C(index)
end
end
end
--[[
if x1 ~= index then
curfrom = x1
curto = index
else
curfrom = x2
curto = x1
end
if curto ~= curfrom and curfrom ~= nil and curto ~= nil then
if C(curto) ~= nil and C(curfrom) ~= nil then
k = (C(curto)- C(curfrom))/(curto- curfrom)
for i = curfrom, index do
curv = i*k + C(curto) - curto*k
SetValue(i, 1, curv)
end
end
end
--]]
if index == Size()-sh and ret == 0 then
lpr = C(Size()-sh)
ret = recalcline(1, index, 1)
ret = recalcline(2, index, 1)
if y1 ~= nil then
if y1 > lpr*0.9 and y1 < lpr*1.1 then
levels(x1, y1, 8, index)
end
end
if y2 ~= nil then
if y2 > lpr*0.9 and y2 < lpr*1.1 then
levels(x2, y2, 9, index)
end
end
if y3 ~= nil then
if y3 > lpr*0.9 and y3 < lpr*1.1 then
levels(x3, y3, 10, index)
end
end
end
if index == Size()-sh then --- and index ~= last_ind
if vTo_01 - vFrom_01 > 500 then
vFrom_01 = vTo_01-500
end
for i = 1, index do
SetValue(i, 3, nil)
SetValue(i, 4, nil)
SetValue(i, 6, nil)
SetValue(i, 7, nil)
-- SetValue(i, 8, nil)
-- SetValue(i, 9, nil)
-- SetValue(i, 10, nil)
end
for i = vFrom_01, index do
y = a_01*i + b_01 + vplus_01
m = 0
if C(vTo_01) > C(vFrom_01) and y < C(vTo_01)+0.3*(C(vTo_01)-C(vFrom_01)) and y > C(vFrom_01)-0.3*(C(vTo_01)-C(vFrom_01)) then
m = 1
end
if C(vTo_01) < C(vFrom_01) and y < C(vFrom_01)+0.3*(C(vFrom_01)-C(vTo_01)) and y > C(vTo_01)-0.3*(C(vFrom_01)-C(vTo_01)) then
m = 1
end
if m == 1 then
SetValue(i, 3, y)
if i == index then
v3 = y
end
end
y = a_01*i + b_01 - vminus_01
m = 0
if C(vTo_01) > C(vFrom_01) and y < C(vTo_01)+0.3*(C(vTo_01)-C(vFrom_01)) and y > C(vFrom_01)-0.3*(C(vTo_01)-C(vFrom_01)) then
m = 1
end
if C(vTo_01) < C(vFrom_01) and y < C(vFrom_01)+0.3*(C(vFrom_01)-C(vTo_01)) and y > C(vTo_01)-0.3*(C(vFrom_01)-C(vTo_01)) then
m = 1
end
if m == 1 then
SetValue(i, 4, y)
if i == index then
v4 = y
end
end
end
if vTo_02 - vFrom_02 > 500 then
vFrom_02 = vTo_02-500
end
for i = vFrom_02, index do
y = a_02*i + b_02 + vplus_02
m = 0
if C(vTo_02) > C(vFrom_02) and y < C(vTo_02)+0.1*(C(vTo_02)-C(vFrom_02)) and y > C(vFrom_02)-0.1*(C(vTo_02)-C(vFrom_02)) then
m = 1
end
if C(vTo_02) < C(vFrom_02) and y < C(vFrom_02)+0.1*(C(vFrom_02)-C(vTo_02)) and y > C(vTo_02)-0.1*(C(vFrom_02)-C(vTo_02)) then
m = 1
end
if m == 1 then
SetValue(i, 6, y)
if i == index then
v6 = y
end
end
y = a_02*i + b_02 - vminus_02
m = 0
if C(vTo_02) > C(vFrom_02) and y < C(vTo_02)+0.1*(C(vTo_02)-C(vFrom_02)) and y > C(vFrom_02)-0.1*(C(vTo_02)-C(vFrom_02)) then
m = 1
end
if C(vTo_02) < C(vFrom_02) and y < C(vFrom_02)+0.1*(C(vFrom_02)-C(vTo_02)) and y > C(vTo_02)-0.1*(C(vFrom_02)-C(vTo_02)) then
m = 1
end
if m == 1 then
SetValue(i, 7, y)
if i == index then
v7 = y
end
end
end
last_ind = index
end
return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10
endКак поймать вершину пузыря? — Почитайте этот мой пост прошлогодний «Календарь Nasdaq» smart-lab.ru/blog/644648.php
Но есть у меня еще одна примета.
Это ^SOX — индекс полупроводников.

Посмотрите на момент пузыря доткомов 1999 — Полупроводники накачивали самыми последними, они были финалистами пузыря, и собственно именно поэтому я предлагаю им уделять самое пристальное внимание сейчас!
Посмотрите на эту растущую финальную волну 2000. Видите, есть только два дня которые особенно выделяются:
14 Января 2000 Рост внутри дня на 9,12 %
29 февраля 2000 Рост внутри дня на 10,1 %
Я их называю суперударными днями полупроводников! — они предшествовали финалу.
В течении последних 2-х лет ударные дни полупроводников не превышали отметку роста внутри дня на 3,5 %, так что аномальные суперударные дни достигающие 10-ти процентов роста за день будут для меня сигналом.
Стараюсь всегда кратко, спасибо.
P.S. Пузырь есть. Вы же все это знаете

Случилось со мной несчастье. Я выводил крупную сумму с брокерского счета на счет в Совкомбанк для последующего погашения текущей ипотеки.
Замечательный банк списал с этой крупной суммы 20% комиссию в соответствии с тарифами банка.
Когда я это увидел, в глазах потемнело, и я стал походить на главного героя из фильма «Карты деньги два ствола», который проиграл в карты все что у него было и отцовский бар.
Действительно, у них есть такой пункт 4.7 в тарифах: https://sovcombank.ru/document?id=6373
ЭТО ВООБЩЕ ЗАКОННО ИМЕТЬ ТАКИЕ КОМИССИИ???
Если перевод с юр лица, то комиссия для суммы свыше 400 000 руб. 20% (!!!!!!!!!!)
Об этом пункте я не знал, но деньги, действительно, шли через юр лицо, потому что брокер по-другому не умеет выводить средства безналом.
Я сразу же связался с банком и мне сообщили, что если я предоставлю пакет документов, подтверждающий, что деньги мои (или честно заработанные, они к слову так и не смогли сформулировать четко, что доказывать), то банк возможно вернет мне комиссию.