Избранное трейдера Денис Е.
Settings= { Name = "Zigzag5", -- название индикатора delta=2, -- параметр индикатора deltaY=1, -- параметр индикатора linedeltaY=0.75, -- параметр индикатора line= { { Name = "zigzagline3", Type =TYPE_LINE, Width = 2, Color = RGB(0,255, 0) }, { Name = "upline", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "lowline", Type =TYPE_LINE, Width = 2, Color = RGB(0,0, 255) }, { Name = "declineline", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) }, { Name = "upline2", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) }, { Name = "lowline2", Type =TYPE_LINE, Width = 1, Color = RGB(0,0, 255) }, { Name = "declineline2", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) } } } function getradius(x, y) return math.sqrt(Settings.deltaY*y*y+x*x) end function koef(val) return 1 - 1/(1-1/val) end function Init() vMin = 0 vMax = 0 vMinindex = 0 vMaxindex = 0 voldMinindex = 0 voldMaxindex = 0 upval = 0 lowval = 0 upindex = 1 lowindex = 1 veu = nil vel = nil curfrom = 1 curto = 1 return 7 end function OnCalculate(index) local printz = 0 vsize = Size() ve = nil veu = nil vel = nil curv = nil veu2 = nil vel2 = nil curv2 = nil if index == 1 then vMin = C(index) vMax = C(index) vMinindex = index vMaxindex = index voldMinindex = index voldMaxindex = index ve = C(index) else if voldMaxindex >= voldMinindex then if C(index) > (1 + Settings.delta/100)*vMin then vMin = C(index) vMax = C(index) vMaxindex = index voldMinindex = vMinindex vFrom = voldMaxindex vTo = vMinindex printz = 1 if (C(vMinindex) > C(vsize)) and (upval > koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize)))) then upval = koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize))) upindex = vMinindex end if (C(vMinindex) < C(vsize)) and (lowval > koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize)))) then lowval = koef(getradius(vsize - vMinindex, C(vMinindex) - C(vsize))) lowindex = vMinindex end curfrom = voldMaxindex curto = voldMinindex else if vMin > C(index) then vMin = C(index) vMinindex = index vFrom = voldMaxindex vTo = index printz = 0 curto = index else vFrom = vMinindex vTo = index printz = 0 end curfrom = voldMaxindex end else if voldMaxindex <= voldMinindex then if C(index) < (1 - Settings.delta/100)*vMax then vMax = C(index) vMin = C(index) vMinindex = index voldMaxindex = vMaxindex vFrom = voldMinindex vTo = vMaxindex printz = 1 if (C(vMaxindex) > C(vsize)) and (upval > koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize)))) then upval = koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize))) upindex = vMaxindex end if (C(vMaxindex) < C(vsize)) and (lowval > koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize)))) then lowval = koef(getradius(vsize - vMaxindex, C(vMaxindex) - C(vsize))) lowindex = vMaxindex end curfrom = voldMinindex curto = voldMaxindex else if vMax < C(index) then vMax = C(index) vMaxindex = index vFrom = voldMinindex vTo = index printz = 0 curto = index else vFrom = vMaxindex vTo = index printz = 0 end curfrom = voldMinindex end end end if (printz == 1) or (Size() == index) then for i = vFrom, vTo do k = (C(vTo)- C(vFrom))/(vTo- vFrom) v = i*k + C(vTo) - vTo*k SetValue(i, 1, v) ve = v end if (Size() == index) then ve = C(index) if voldMaxindex >= voldMinindex then vFrom = voldMaxindex vTo = vMinindex end if voldMaxindex <= voldMinindex then vFrom = voldMinindex vTo = vMaxindex end for i = vFrom, vTo do k = (C(vTo)- C(vFrom))/(vTo- vFrom) v = i*k + C(vTo) - vTo*k SetValue(i, 1, v) end -- up level line if upindex ~= nil then if C(upindex) > C(index) then for i = upindex, index do SetValue(i, 2, C(upindex)) SetValue(i, 5, C(upindex)-Settings.linedeltaY*C(vsize)/100) end veu = C(upindex) end end -- low level line if lowindex ~= nil then if C(lowindex) < C(index) then for i = lowindex, index do SetValue(i, 3, C(lowindex)) SetValue(i, 6, C(lowindex)+Settings.linedeltaY*C(vsize)/100) end vel = C(lowindex) end end if voldMaxindex >= voldMinindex then vsign = -1 if curfrom == voldMinindex then vsign = -1 end if curfrom == voldMaxindex then vsign = 1 end -- inclined line if curto- curfrom > 0 then maxcurv = 0 k = (C(curto)- C(curfrom))/(curto- curfrom) for i = curfrom, curto do curv = i*k + C(curto) - curto*k if vsign == -1 then if L(i) < curv then if maxcurv < curv - L(i) then maxcurv = curv - L(i) end end else if H(i) > curv then if maxcurv < H(i) - curv then maxcurv = H(i) - curv end end end end for i = curfrom, index do curv = i*k + C(curto) - curto*k + vsign*maxcurv SetValue(i, 4,curv) curv2 = curv+ vsign*Settings.linedeltaY*C(vsize)/100 SetValue(i, 7,curv2) end end curv = nil end if voldMaxindex <= voldMinindex then vsign = -1 if curfrom == voldMaxindex then vsign = 1 end if curfrom == voldMinindex then vsign = -1 end -- inclined line if curto- curfrom > 0 then maxcurv = 0 k = (C(curto)- C(curfrom))/(curto- curfrom) for i = curfrom, curto do curv = i*k + C(curto) - curto*k if vsign == -1 then if L(i) < curv then if maxcurv < curv - L(i) then maxcurv = curv - L(i) end end else if H(i) > curv then if maxcurv < H(i) - curv then maxcurv = H(i) - curv end end end end for i = curfrom, index do k = (C(curto)- C(curfrom))/(curto- curfrom) curv = i*k + C(curto) - curto*k + vsign*maxcurv SetValue(i, 4,curv) curv2 = curv+ vsign*Settings.linedeltaY*C(vsize)/100 SetValue(i, 7,curv2) end end curv = nil end end end end return ve, veu, vel, curv, veu2, vel2, curv2 end
DTI Algorithmic — финансовый советник на платформе Interactive Brokers (IB). За 10 лет на рынке мы успели поработать со многими российскими и иностранными брокерами, и в 2013 г. осознанно сделали выбор в пользу IB.
#справка Interactive Brokers LLC — американский онлайн—брокер. Материнская компания IB работает с 1978 года, ее номер в Комиссии по ценным бумагам и биржам США (SEC) — 0001381197. Данные о компании:
Главное: гораздо проще и легче выучить раздел Теории вероятностей и прибыльно торговать случайный процесс, чем бесконечно искать неизвестно что и неизвестно где в надежде найти «ВОЛШЕБНУЮ ЗАКОНОМЕРНОСТЬ РЫНКА и всегда зарабатывать».
------------------------------------------------
Вот отрывок из моей дискуссии с одним трейдером:
------------------------------------------------
Многие как бы трейдеры всё пытаются придумать какую-нибудь фишку или хитрую хитрость и обмануть-обыграть рынок и взять приз-бабки.
Ну уже понятно давно, что это не работает.
Оглянитесь вокруг себя — везде, вся техника и все вещи — всё создано и работает на научной основе. Почему то никто не будет строить самолет на основе своих догадок и придумок.
А вот как деньги заработать на бирже многие почему то уверены, что они, не имея научной подготовки и научных знаний, смогут придумать такую фишку, что легко будут стричь бабки на бирже.
Согласитесь, что это просто детская наивность.
Основные мысли —
1)сумма множества случайных величин (процессов) дает неслучайный, практически детерминированный, как бы предопределенный результат.
2) сумма множества случайных величин (процессов) имеет нормальное распределение, что на обычном языке означает «практически неслучайное поведение» случайной величины (процесса), что дает в результате нормальную работу «скользящих средних».
С 18 по 29 марта прошел «Полигон для новичка» №16. Победителем в нем стала ТС «Рассвет» с результатом +9.60%. Но данное видео на другую тему.
Уже четыре «Полигона для новичка» подряд (13, 14, 15 и 16) удачно выступает моя торговая система «B&W». На вышеуказанных Полигонах она заработала +5.53%, +2.37%, +2.36% и +2.47% соответственно.
В данном видео я рассказываю про торговую идею, которую я использовал при создании ТС «B&W».
Что такое «Полезные мелочи» можно посмотреть здесь https://smart-lab.ru/blog/473161.php
Settings={ Name="STATDIVPROF", period=30, showprof=0, line= { { Name="curve", Color=RGB(0,0,255), Type=TYPE_LINE, Width=1 }, { Name="line", Color=RGB(255,0,0), Type=TYPE_LINE, Width=1 } } } function Init() prof=0 bp=0 prevval=0 return 2 end function OnCalculate(index) local sum1=0 local sum2=0 local j=0 local dprof=0 if index < Settings.period then return nil, nil else for i=index-Settings.period+1, index do j = j + 1 if C(i) > O(i) then sum1 = sum1 + (C(i) - O(i))*V(i)*j sum2 = sum2 + (C(i) - O(i))*V(i)*j else sum2 = sum2 + (O(i) - C(i))*V(i)*j end end sum1 = sum1/sum2 end if index > Settings.period+1 then if prevval < 0.5 and sum1 >= 0.5 then bp=C(index) end if prevval > 0.5 and sum1 <= 0.5 then if bp ~= 0 then prof=prof+C(index)-bp bp=0 end end if bp ~= 0 then dprof = C(index) - bp else dprof = 0 end end prevval=sum1 if Settings.showprof == 0 then return sum1, 0.5 end if Settings.showprof == 1 then return prof+dprof, nil end end