Избранное трейдера DvF
Settings={ Name="MNKM", period=200, line= { { Name = "cur1", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) } } } --[[ описание свойств: period - период, за каротрый делается расчет назначение: построение кривой, у которой сумма квадратов расстояний от цен закрытия до нее минимальна таким образом, кривая показвает общую тенденцию движения цены использовался метод: метод наименьших квадратов (аппроксимация линией) --]] function Init() return 1 end function OnCalculate(index) sz = Size() n = Settings.period if index == 1 then a1_0 = 0 a2_0 = 0 a3_0 = 0 a4_0 = 0 a1_1 = 0 a2_1 = 0 a3_1 = 0 a4_1 = 0 end i = index a1_1 = a1_1+i*C(i) a2_1 = a2_1+i a3_1 = a3_1+C(i) a4_1 = a4_1+i*i y = nil if index-n > 0 then i = index-n a1_0 = a1_0+i*C(i) a2_0 = a2_0+i a3_0 = a3_0+C(i) a4_0 = a4_0+i*i a1 = a1_1-a1_0 a2 = a2_1-a2_0 a3 = a3_1-a3_0 a4 = a4_1-a4_0 if((n*a4 - a2*a2) ~= 0) then a = (n*a1 - a2*a3)/(n*a4 - a2*a2) b = (a3 - a*a2)/n y = a*index + b end end return y end
Settings={ Name="MNKAVG", period=200, delta=0, line= { { Name = "cur1", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 0) }, { Name = "cur2", Type =TYPE_LINE, Width = 1, Color = RGB(0,255, 0) }, { Name = "cur3", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) }, { Name = "cur4", Type =TYPE_LINE, Width = 1, Color = RGB(0,255, 0) }, { Name = "cur5", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) } } } --[[ описание свойств: period - период, за каротрый делается расчет delta - смещение назад назначение: построение тенденции использовался: метод наименьших квадратов (аппроксимация линией) --]] function Init() return 5 end function OnCalculate(index) sz = Size() n = Settings.period d = Settings.delta if (index ~= sz) then return nil, nil, nil, nil, nil else y = nil if index-n-d > 0 then a1 = 0 a2 = 0 a3 = 0 a4 = 0 for i=index-n+1-d, index-d do a1 = a1+i*C(i) a2 = a2+i a3 = a3+C(i) a4 = a4+i*i end if((n*a4 - a2*a2) ~= 0) then a = (n*a1 - a2*a3)/(n*a4 - a2*a2) b = (a3 - a*a2)/n c1 = 0 c2 = 0 n1 = 0 n2 = 0 for j=index-n+1-d, index-d do y = a*j + b SetValue(j, 1, y) if C(j) < y then c1 = c1 + (y -C(j)) n1 = n1 + 1 end if C(j) > y then c2 = c2 + (C(j) - y) n2 = n2 + 1 end end if n1 ~= 0 then c1 = c1/n1 end if n2 ~= 0 then c2 = c2/n2 end for j=index-n+1-d, index-d do y = a*j + b SetValue(j, 2, y-c1) SetValue(j, 3, y-2*c1) SetValue(j, 4, y+c2) SetValue(j, 5, y+2*c2) end end end return y end end
Settings={ Name="MNKHL", period=200, delta=0, line= { { Name = "cur1", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 0) }, { Name = "cur2", Type =TYPE_LINE, Width = 1, Color = RGB(0,255, 0) }, { Name = "cur3", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) }, { Name = "cur4", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) }, { Name = "cur5", Type =TYPE_LINE, Width = 1, Color = RGB(0,255, 0) } } } --[[ описание свойств: period - период, за каротрый делается расчет delta - смещение назад назначение: построение тенденции использовался: метод наименьших квадратов (аппроксимация линией) --]] function Init() return 5 end function OnCalculate(index) sz = Size() n = Settings.period d = Settings.delta if (index ~= sz) then return nil, nil, nil, nil, nil else y = nil if index-n-d > 0 then a1 = 0 a2 = 0 a3 = 0 a4 = 0 for i=index-n+1-d, index-d do a1 = a1+i*C(i) a2 = a2+i a3 = a3+C(i) a4 = a4+i*i end if((n*a4 - a2*a2) ~= 0) then a = (n*a1 - a2*a3)/(n*a4 - a2*a2) b = (a3 - a*a2)/n j = index-n+1-d mh1 = H(j) ml1 = L(j) mh2 = H(j) ml2 = L(j) dmh1 = 0 dml1 = 0 dmh2 = 0 dml2 = 0 for j=index-n+1-d, index-d do y = a*j + b SetValue(j, 1, y) if H(j) < y and y - H(j) > dmh1 then mh1 = H(j) dmh1 = y - H(j) end if L(j) < y and y - L(j) > dml1 then ml1 = L(j) dml1 = y - L(j) end if H(j) > y and H(j) - y > dmh2 then mh2 = H(j) dmh2 = H(j) - y end if L(j) > y and L(j) - y > dml2 then ml2 = L(j) dml2 = L(j) - y end end for j=index-n+1-d, index-d do y = a*j + b SetValue(j, 2, y-dmh1) SetValue(j, 3, y-dml1) SetValue(j, 4, y+dmh2) SetValue(j, 5, y+dml2) end end end return y end end
Всем привет!
Сегодня я решил поделиться списком Telegram каналов, на которые я подписан.
Каналы разобью на две группы и отсортирую в порядке убывания количества подписчиков.
Поехали!
Рынок / инвестиции
РынкиДеньгиВласть https://t.me/AK47pfl ~ 57.9 подписчиков
Очень популярный канал, интересные и аргументированные рекомендации (а то часто бывает советуют покупать без четкого обоснования почему)
Чувствуется наличие инсайда. Попадались на fake news (если помните то это была отставка Миллера).
Посты небольшие с аргументами почему покупаем или продает.
Поставлю 5 из 5.
MarketTwits https://t.me/markettwits ~ 34.3 подписчиков
Самый классный рыночный канал с моей точки зрения. Финансовые новости компаний, FX, зарубежных рынков, рынка РФ.
Нравится их тонкий юмор и троллинг).
Посты короткие, рекомендаций покупок / продаж нет.
Ставлю 5 из 5.
ДОХОДЪ https://t.me/dohod ~ 22.3 подписчиков
Добрый день.
Прилагаю некоторые скрины из книги "Малая энциклопедия трейдера"
В книге представлены наиболее сильные, средние и слабые формации, которые могут встречаться на рынке, для примера я поискал их на срочном рынке.
картинка 1 — сильный сигнал, нефть-сигнал на лонг
--[[ параметры: Procent - процент зигзага --]] Settings={ Name="ZIGZAGPROF", Procent=1, line= { { Name = "cur1", Type =TYPE_LINE, Width = 2, Color = RGB(0,0, 0) }, { Name = "cur2", Type =TYPE_LINE, Width = 2, Color = RGB(0,0, 255) } } } function Init() y1 = nil y2 = nil x1 = 1 x2 = 1 return 1 end function OnCalculate(index) de = Settings.Procent delt = 0.01 vl = C(index) if index == 1 then y1 = vl y2 = vl else if C(index) > y1*(1+de/100) and y1 < y2 then x2 = x1 y2 = y1 x1 = index y1 = C(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 x2 = x1 y2 = y1 x1 = index y1 = C(index) end if C(index) < y1 and C(index) < y2 then x1 = index y1 = C(index) 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 --]] lev = nil if x1 ~= x2 then k = (C(x1)- C(x2))/(x1- x2) maxd = 0 for i = x2, x1 do lev = i*k + C(x1) - x1*k if C(x2) > C(x1) and lev <= H(i) then if maxd < H(i) - lev then maxd = H(i) - lev end --maxd = 0.5 end if C(x2) < C(x1) and lev >= L(i) then if maxd > L(i) - lev then maxd = L(i) - lev end --maxd = -0.5 end end lev = nil --[[if x1 < index and ( C(x2) > C(x1) and C(x1) < C(index) or C(x2) < C(x1) and C(x1) > C(index) ) then --]] lev = index*k + C(x1) - x1*k + maxd --end --[[ map = 10 lev = 0 if index-map+1 > 0 then for i = index-map+1, index do lev = lev + C(i) end lev = lev/map ma = lev end map = 30 lev2 = 0 if index-map+1 > 0 then for i = index-map+1, index do lev2 = lev2 + C(i) end lev2 = lev2/map ma2 = lev2 end if C(x2) > C(x1) and C(x1) < C(index) and C(index) > lev and C(index) - C(x1) > C(index)*delt or C(x2) > C(x1) and C(x1) < C(index) and C(index) > lev2 then lev = C(x1)--*(1-delt) prev = lev else if C(x2) < C(x1) and C(x1) > C(index) and C(index) < lev and C(x1) - C(index) > C(index)*delt or C(x2) < C(x1) and C(x1) > C(index) and C(index) < lev2 then lev = C(x1)--*(1+delt) prev = lev else lev = lev2 end end if C(x1) > C(x2) and ( lev < C(index) or prev == C(x2) ) then lev = C(x2)--*(1+delt) prev = lev end if C(x1) < C(x2) and ( lev > C(index) or prev == C(x2) ) then lev = C(x2)--*(1-delt) prev = lev end if C(x1) < C(x2) and ( lev < C(index) or prev == C(x1) ) then lev = C(x1) prev = lev end if C(x1) > C(x2) and ( lev > C(index) or prev == C(x1) ) then lev = C(x1) prev = lev end --]] end return lev end