kar alları yapılabilir....
Printable View
https://tr.tradingview.com/scripts/editors-picks/ bu ediyörlerin seçtiklerinden...
çoğunda lisans gerekiyor....
o yüzden çoğu kod...free kullananlar için....
https://tr.tradingview.com/script/fq...cles-Analysis/
bu döngü analizi kodu... çok güzel.....
çünkü yazan kişi...
döngüleri hem fiyatın hareketi.... range...hem de saniyesine kadar zamanlaması hesplatmış....
bir hisse bu kodla incelendiğinde...ortalama 182 gün hesaplaınca...
6 ay...iki bilanço gibi düşünün...
böylece bilanço önceleri...döngüleri de görmüş olursunuz....
her döngünün ortalamasını da görmüş olursunuz...
yatırımcı olanlar için kullanılabilir...
endeks https://www.tradingview.com/x/9kvkvkTP/
6300 kırılırsa 6150 destek...yeşil alan ...
kırmızı alan tepesi ise 6500 ler...direnç yani....
akkız
saatlik kanal https://www.tradingview.com/x/6nDGQuNx/
günlük trend https://www.tradingview.com/x/Qx3NDeqK/
24 üzeri gibi....
https://www.tradingview.com/x/LdDHxwu8/ yeşil alandan tepki gelebilir
https://www.tradingview.com/x/Xs3kvwR0/
pgsuss.. iş yatırım portföye ekledi...
düşeni kırarsa...yeni zirve tazeleme ihtimali var...
holdinlerde..
https://www.tradingview.com/x/D5tkpe6s/
bir adım önde olacak gibi...
https://www.tradingview.com/x/bFxdBbrf/ h4 görüntü...
bu takibe alındı....
https://www.tradingview.com/x/NFMUgW8e/
https://www.tradingview.com/x/lMEAmI4c/
https://www.tradingview.com/x/ZZwKUSwo/
açılışta yine tavana kitlediler...sanırım hedefleri 2 hane...
https://www.tradingview.com/x/eV5HXM33/
bugün çift hane denemesi olabilir mi
Esat dostumun Matriks'te yazdığı Dip Tepe Bulucu İndikatörün tradingview versiyonu
https://i.hizliresim.com/2pcwybb.pngPHP Code:
[B]matriks versiyonunu [/B]
X:=(CMO(H,7));
Y:=MOST(X,5,1);
HHV:=LastValue(HHV(X,100));
LLV:=LastValue(LLV(X,100));
((HHV-LLV)*0 + LLV);
((HHV-LLV)*0.236 + LLV);
((HHV-LLV)*0.382 + LLV);
((HHV-LLV)*0.5 +LLV);
((HHV-LLV)*0.618 +LLV);
((HHV-LLV)*0.786 +LLV);
((HHV-LLV)*1 +LLV);Y;X
kodu Pine Editör'e yapıştırın.
//@version=4
study("BugRA_DipTepeBulucu_@FAHO", overlay=false)
cmo6 = cmo(close, 6)
plot(cmo6, color=color.blue)
most_cmo6_5_1 = sma(cmo6, 5)
plot(most_cmo6_5_1, color=color.red)
hhv_cmo6_100 = highest(cmo6, 100)
llv_cmo6_100 = lowest(cmo6, 100)
plot(hhv_cmo6_100*0.5 + llv_cmo6_100, color=color.green)
plot(hhv_cmo6_100*0.236 + llv_cmo6_100, color=color.orange)
plot(hhv_cmo6_100*0.618 + llv_cmo6_100, color=color.purple)
plot(hhv_cmo6_100*0.786 + llv_cmo6_100, color=color.yellow)
plot(hhv_cmo6_100*0.382 + llv_cmo6_100, color=color.maroon)
plot(hhv_cmo6_100*1 + llv_cmo6_100, color=color.gray)
plot(hhv_cmo6_100*0 + llv_cmo6_100, color=color.black)
https://i.hizliresim.com/k6fvubc.png
hastanede olunca....
pek fırsatım olmuyor hocam....
ancak akşamları....fırsat bulursam....rahatlamak için yazıyorum....
kodun yazarı.... luxalgo....
https://tr.tradingview.com/script/lI...anges-LuxAlgo/ kod bu....
200 uzunluk kullanan range hesaplaması.....
her periyotta işe yarıyor....
https://www.tradingview.com/x/Hutlusou/
çizgileri gizleyip...alanı biraz belirgenleştirince güzel oluyor....
eline sağlık...
bu da... versiyon 5 ....
eklemek isteyenler için.....
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © carefulCode53358
//@version=5
indicator('BugRA_DipTepeBulucu_@FAHO', overlay=false)
cmo6 = ta.cmo(close, 6)
plot(cmo6, color=color.new(color.blue, 0))
most_cmo6_5_1 = ta.sma(cmo6, 5)
plot(most_cmo6_5_1, color=color.new(color.red, 0))
hhv_cmo6_100 = ta.highest(cmo6, 100)
llv_cmo6_100 = ta.lowest(cmo6, 100)
plot(hhv_cmo6_100 * 0.5 + llv_cmo6_100, color=color.new(color.green, 0))
plot(hhv_cmo6_100 * 0.236 + llv_cmo6_100, color=color.new(color.orange, 0))
plot(hhv_cmo6_100 * 0.618 + llv_cmo6_100, color=color.new(color.purple, 0))
plot(hhv_cmo6_100 * 0.786 + llv_cmo6_100, color=color.new(color.yellow, 0))
plot(hhv_cmo6_100 * 0.382 + llv_cmo6_100, color=color.new(color.maroon, 0))
plot(hhv_cmo6_100 * 1 + llv_cmo6_100, color=color.new(color.gray, 0))
plot(hhv_cmo6_100 * 0 + llv_cmo6_100, color=color.new(color.black, 0))
https://www.tradingview.com/x/046BvMDU/
https://tr.tradingview.com/u/LuxAlgo/#published-scripts
bu yazarın kodlarını inceleyelim.... 100 tane kod paylaşmış...kimisi kapalı....
293334 takipçisi var...
bizim twitter üstadları....bunun yanında.... küccük üstad....
kodlarla kombine derleme...sistemler tasarlayalım...
ancak...
kural free kullanım... olacağı için...
bazı kodların hesaplamaları.... üyelik gerektireceği için...
onları kullanmayacağım....
ayrıca...hesaplaması zor olanlar ile...aynı noktaya çıkanları ayırmalı....
tasarımda...
zemin renklendirme...
bar renklendirme...
strateji....
birkaç çizgi ile sade tasarımlar.....
önce rosense abinin beğendiği...
range kodu ile başlayalım...
https://www.tradingview.com/x/huTVv0g4/PHP Code:
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © LuxAlgo
//@version=5
indicator("Predictive Ranges [LuxAlgo]", "*", overlay = true)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length = input.int(200, 'Length', minval = 2)
mult = input.float(6., 'Factor', minval = 0, step = .5)
tf = input.timeframe('', 'Timeframe')
src = input(close, 'Source')
//-----------------------------------------------------------------------------}
//Function
//-----------------------------------------------------------------------------{
pred_ranges(length, mult)=>
var avg = src
var hold_atr = 0.
atr = nz(ta.atr(length)) * mult
avg := src - avg > atr ? avg + atr :
avg - src > atr ? avg - atr :
avg
hold_atr := avg != avg[1] ? atr / 2 : hold_atr
[avg + hold_atr * 2, avg + hold_atr, avg, avg - hold_atr, avg - hold_atr * 2]
//-----------------------------------------------------------------------------}
//Calculation
//-----------------------------------------------------------------------------{
[prR2
, prR1
, avg
, prS1
, prS2] = request.security(syminfo.tickerid, tf, pred_ranges(length, mult))
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot_pru2 = plot(prR2, 'Direnç2', avg != avg[1] ? na : #f2364600)
plot_pru1 = plot(prR1, 'Direnç1', avg != avg[1] ? na : #f2364600)
plot_pravg = plot(avg , 'Ortalama', avg != avg[1] ? na : #f1ce0b)
plot_prl1 = plot(prS1, 'Destek1', avg != avg[1] ? na : #08998100)
plot_prl2 = plot(prS2, 'Destek2', avg != avg[1] ? na : #08998100)
//Fills
fill(plot_pru2, plot_pru1, avg != avg[1] ? na : color.new(#f23645, 85))
fill(plot_prl1, plot_prl2, avg != avg[1] ? na : color.new(#089981, 85))
//-----------------------------------------------------------------------------}
şimdi ne eklemek isterdiniz....
bence alta farklı bir yazardan şu kodu ekleyelim....
tasarımı yaparken....agresif olmak için....
https://tr.tradingview.com/v/VwmUNNwp/
https://www.tradingview.com/x/31Fc2TBj/
https://tr.tradingview.com/v/34t0EaMk/ bu da trend kanalı gibi olsun....
https://www.tradingview.com/x/96Na54rS/
https://tr.tradingview.com/script/rc...Daily-LuxAlgo/
https://www.tradingview.com/x/iIFiXILj/
range kodu destek direnç gibi olacak...
bu kod ise kanal gibi olacak....
kanal kırılımı gibi...
çünkü kodun diğer periyotlarda ilişkisi....kırılımlı kanallar gibi....
aslında dikkat edildiğinde....kanalın zamanınıda hesaplıyor gibi....
yani alıp bekleme yok.... kanal kırılımı olunca işleme girip...range göre vurkaç
demek istediğim bu...
https://i.hizliresim.com/6kxrmbe.png
https://tr.tradingview.com/script/qT...gnals-LuxAlgo/
https://www.tradingview.com/x/3U5Xbkc8/
bu kod çok güzel ama...
kullanımı ....anlama sadeliğini bozuyor.... iptal edelim
https://tr.tradingview.com/script/Qk...idity-LuxAlgo/
https://www.tradingview.com/x/ObwOAsgx/
aynı işlev..hesaplamalar yakın...iptal...
https://tr.tradingview.com/script/5F...ation-LuxAlgo/
https://www.tradingview.com/x/KXcvFhP8/
tasarımın sadeliğini bozdu bence...
hesaplamalar yaklaşık aynı...
https://tr.tradingview.com/script/ec...ences-LuxAlgo/
bu kod kullanılabilir...
hesaplaması güzel..pivot mantığı ile birleştirme yapcak...
ama 2 şey göreceli...
örneğin ahgazda işlem yaparken endeksi hesaba katabilirsin ama....
bayrk işlem yaparken endeksle bağlantı kurulmaz....
tsarıma ya kombine etmemek lazım
ya da endeksi etmek lazım....
bi köşede dursun...
https://tr.tradingview.com/script/5U...ofile-LuxAlgo/
bu kodda iki range arası fiyat hareketi takip ediyor gibi....
hesaplamasında intrabar 1 dakkalık kullanılıyor...
https://www.tradingview.com/x/jDaqc4Ur/ görüntü bu...
zemin rengi istemeyenler için çizgili gibi olur...
hesaplamalar farklı ama
sonuçlar benzer... bi kösede dursun...
https://tr.tradingview.com/script/c4...-Stop-LuxAlgo/
bu stop kodunu da bakınca....
range ortalamasına yakın hareketini görünce...
kodu kombine etmek yerine....
range ortalamasını stop kabul etmek daha mantıklı....
sadeliği bozmayalım....
https://www.tradingview.com/x/E978rpFe/
https://tr.tradingview.com/script/Kv...-Wave-LuxAlgo/
bu eliot sayımı başlı başına ayrı bir dünya...
bunu ancak eliot kullanan biri kombine etmeli...
ben eliot anlamam....
https://www.tradingview.com/x/JRmkqxrL/
https://tr.tradingview.com/script/L1...erage-LuxAlgo/
bu kodu kullanırken uzunluğu hesaplamasındaki 50 gibi değil 20 almalıyız....
https://www.tradingview.com/x/FsjY0Qyl/
görüldüğü gibi...fill iptal eder.. çizgi kullanırsak...
range alanında işlem kolaylaşır gibi...
https://www.tradingview.com/x/pUWz2EKW/
bu arada yeni range oluştu...
üç kodun kombine edilmiş hali...PHP Code:
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © LuxAlgo
//@version=5
indicator("Predictive Ranges [LuxAlgo]", "*", overlay = true,max_boxes_count = 500, max_lines_count = 500, max_bars_back = 500)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length = input.int(200, 'Length', minval = 2)
mult = input.float(6., 'Factor', minval = 0, step = .5)
tf = input.timeframe('', 'Timeframe')
src = input(close, 'Source')
//-----------------------------------------------------------------------------}
//Function
//-----------------------------------------------------------------------------{
pred_ranges(length, mult)=>
var avg = src
var hold_atr = 0.
atr = nz(ta.atr(length)) * mult
avg := src - avg > atr ? avg + atr :
avg - src > atr ? avg - atr :
avg
hold_atr := avg != avg[1] ? atr / 2 : hold_atr
[avg + hold_atr * 2, avg + hold_atr, avg, avg - hold_atr, avg - hold_atr * 2]
//-----------------------------------------------------------------------------}
//Calculation
//-----------------------------------------------------------------------------{
[prR2
, prR1
, avg
, prS1
, prS2] = request.security(syminfo.tickerid, tf, pred_ranges(length, mult))
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot_pru2 = plot(prR2, 'Direnç2', avg != avg[1] ? na : #f2364600)
plot_pru1 = plot(prR1, 'Direnç1', avg != avg[1] ? na : #f2364600)
plot_pravg = plot(avg , 'Ortalama', avg != avg[1] ? na : #f1ce0b)
plot_prl1 = plot(prS1, 'Destek1', avg != avg[1] ? na : #08998100)
plot_prl2 = plot(prS2, 'Destek2', avg != avg[1] ? na : #08998100)
//Fills
fill(plot_pru2, plot_pru1, avg != avg[1] ? na : color.new(#f23645, 65))
fill(plot_prl1, plot_prl2, avg != avg[1] ? na : color.new(#089981, 65))
//-----------------------------------------------------------------------------}
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length11 = input(20)
src11 = input(close)
//------------------------------------------------------------------------------
//Signal moving average
//-----------------------------------------------------------------------------{
var ma = 0.
var os = 0.
target = ta.sma(src11, length11)
abs_diff = math.abs(target - target[1])
r2 = math.pow(ta.correlation(close, bar_index, length11), 2)
os := r2 > 0.5 ? math.sign(src11[1] - target[1]) : os
ma := r2 > 0.5 ? r2 * target + (1 - r2) * nz(ma[1], target)
: ma[1] - abs_diff * os
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot0 = plot(src11, display = display.none, editable = false)
css = os == 1 ? #0cb51a : #ff1100
plot1 = plot(ma, 'Signal MA'
, css)
fill_css = src > ma ? color.new(#0cb51a, 80) : color.new(#ff1100, 80)
//fill(plot0, plot1, fill_css, 'Fill')
//-----------------------------------------------------------------------------}
//Settings
//-----------------------------------------------------------------------------{
per = input.float(10., 'Threshold %', minval = 0, maxval = 100)
div = input.int(50, 'Resolution' , minval = 2, maxval = 500)
//tf = input.timeframe('', 'Intrabar TF')
//Colors
showSupply = input(true ,'Supply********', inline = 'supply', group = 'Style')
supplyCss = input(#2157f3, '' , inline = 'supply', group = 'Style')
supplyArea = input(false ,'Area' , inline = 'supply', group = 'Style')
supplyAvg = input(false ,'Average' , inline = 'supply', group = 'Style')
supplyWavg = input(true ,'Weighted' , inline = 'supply', group = 'Style')
showEqui = input(true ,'Equilibrium' , inline = 'equi' , group = 'Style')
equiCss = input(color.gray, '' , inline = 'equi' , group = 'Style')
equiAvg = input(false ,'Average' , inline = 'equi' , group = 'Style')
equiWavg = input(true ,'Weighted' , inline = 'equi' , group = 'Style')
showDemand = input(true ,'Demand****' , inline = 'demand', group = 'Style')
demandCss = input(#ff5d00, '' , inline = 'demand', group = 'Style')
demandArea = input(false ,'Area' , inline = 'demand', group = 'Style')
demandAvg = input(false ,'Average' , inline = 'demand', group = 'Style')
demandWavg = input(true ,'Weighted' , inline = 'demand', group = 'Style')
//-----------------------------------------------------------------------------}
//UDT's
//-----------------------------------------------------------------------------{
type bin
float lvl
float prev
float sum
float prev_sum
float csum
float avg
bool isreached
type area
box bx
line avg
line wavg
//-----------------------------------------------------------------------------}
//Functions
//-----------------------------------------------------------------------------{
n = bar_index
get_hlv()=> [high, low, volume]
method set_area(area id, x1, top, btm, avg, wavg, showArea, showAvg, showWavg)=>
if showArea
id.bx.set_lefttop(x1, top)
id.bx.set_rightbottom(n, btm)
if showAvg
id.avg.set_xy1(x1, avg)
id.avg.set_xy2(n, avg)
if showWavg
id.wavg.set_xy1(x1, wavg)
id.wavg.set_xy2(n, wavg)
//-----------------------------------------------------------------------------}
//Main variables
//-----------------------------------------------------------------------------{
var max = 0.
var min = 0.
var x1 = 0
var csum = 0.
var area supply_area = na
var area demand_area = na
//Intrabar data
[h, l, v] = request.security_lower_tf(syminfo.tickerid, tf, get_hlv())
//Accumulate
max := math.max(high[1], max)
min := math.min(low[1], min)
csum += volume[1]
//-----------------------------------------------------------------------------}
//Set zones
//-----------------------------------------------------------------------------{
var float supply_wavg = na
var float demand_wavg = na
if dayofmonth != dayofmonth[1]
r = (max - min) / div
supply = bin.new(max, max, 0, 0, 0, 0, false)
demand = bin.new(min, min, 0, 0, 0, 0, false)
//Loop trough intervals
for i = 0 to div-1
supply.lvl -= r
demand.lvl += r
//Loop trough bars
for j = 1 to (n - x1)-1
//Loop trough intrabars
for k = 0 to (v[j]).size()-1
//Accumulate if within upper internal
supply.sum += (h[j]).get(k) > supply.lvl and (h[j]).get(k) < supply.prev ? (v[j]).get(k) : 0
supply.avg += supply.lvl * (supply.sum - supply.prev_sum)
supply.csum += supply.sum - supply.prev_sum
supply.prev_sum := supply.sum
//Accumulate if within lower interval
demand.sum += (l[j]).get(k) < demand.lvl and (l[j]).get(k) > demand.prev ? (v[j]).get(k) : 0
demand.avg += demand.lvl * (demand.sum - demand.prev_sum)
demand.csum += demand.sum - demand.prev_sum
demand.prev_sum := demand.sum
//Test if supply accumulated volume exceed threshold and set box
if supply.sum / csum * 100 > per and not supply.isreached
avg = math.avg(max, supply.lvl)
supply_wavg := supply.avg / supply.csum
//Set Box/Level coordinates
if showSupply
supply_area := area.new(
box.new(na, na, na, na, na, bgcolor = color.new(supplyCss, 80))
, line.new(na, na, na, na, color = supplyCss)
, line.new(na, na, na, na, color = supplyCss, style = line.style_dashed))
supply_area.set_area(x1, max, supply.lvl, avg, supply_wavg, supplyArea, supplyAvg, supplyWavg)
supply.isreached := true
//Test if demand accumulated volume exceed threshold and set box
if demand.sum / csum * 100 > per and not demand.isreached and showDemand
avg = math.avg(min, demand.lvl)
demand_wavg := demand.avg / demand.csum
//Set Box/Level coordinates
if showDemand
demand_area := area.new(
box.new(na, na, na, na, na, bgcolor = color.new(demandCss, 80))
, line.new(na, na, na, na, color = demandCss)
, line.new(na, na, na, na, color = demandCss, style = line.style_dashed))
demand_area.set_area(x1, demand.lvl, min, avg, demand_wavg, demandArea, demandAvg, demandWavg)
demand.isreached := true
if supply.isreached and demand.isreached
break
supply.prev := supply.lvl
demand.prev := demand.lvl
max := high
min := low
csum := volume
x1 := n
if barstate.islast
if showSupply
supply_area.bx.set_right(n)
supply_area.avg.set_x2(n)
supply_area.wavg.set_x2(n)
if showDemand
demand_area.bx.set_right(n)
demand_area.avg.set_x2(n)
demand_area.wavg.set_x2(n)
//-----------------------------------------------------------------------------}
mtf kapatıldı...
kanal için kullandığımız sadece çizgi oldu...
sinyalde çizgi oldu....
burdan diğerlerine incelemeye devam....
https://tr.tradingview.com/script/Wt...ssion-LuxAlgo/
polinom kodu...mtfli...1 dakkalık agresif sistem tasarımı yapılınca...mtf gün değil saat olmalı bence...
https://www.tradingview.com/x/rgyMp3k6/
https://www.tradingview.com/x/RVuSo0hy/
mtf içerdiği için ayrı bir sistem olarak çalışacağız....
https://tr.tradingview.com/script/sr...rging-LuxAlgo/
polinoma filtre gibi oldu...
https://www.tradingview.com/x/gNhZmA0L/
https://www.tradingview.com/x/Gf9wqtN9/ tasarım bu hali aldı....
eklenmiş hali...
PHP Code:
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © LuxAlgo
//@version=5
indicator("Predictive Ranges [LuxAlgo]", "*", overlay = true,max_boxes_count = 500, max_lines_count = 500, max_bars_back = 500)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length = input.int(200, 'Length', minval = 2)
mult = input.float(6., 'Factor', minval = 0, step = .5)
tf = input.timeframe('', 'Timeframe')
src = input(close, 'Source')
//-----------------------------------------------------------------------------}
//Function
//-----------------------------------------------------------------------------{
pred_ranges(length, mult)=>
var avg = src
var hold_atr = 0.
atr = nz(ta.atr(length)) * mult
avg := src - avg > atr ? avg + atr :
avg - src > atr ? avg - atr :
avg
hold_atr := avg != avg[1] ? atr / 2 : hold_atr
[avg + hold_atr * 2, avg + hold_atr, avg, avg - hold_atr, avg - hold_atr * 2]
//-----------------------------------------------------------------------------}
//Calculation
//-----------------------------------------------------------------------------{
[prR2
, prR1
, avg
, prS1
, prS2] = request.security(syminfo.tickerid, tf, pred_ranges(length, mult))
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot_pru2 = plot(prR2, 'Direnç2', avg != avg[1] ? na : #f2364600)
plot_pru1 = plot(prR1, 'Direnç1', avg != avg[1] ? na : #f2364600)
plot_pravg = plot(avg , 'Ortalama', avg != avg[1] ? na : #f1ce0b)
plot_prl1 = plot(prS1, 'Destek1', avg != avg[1] ? na : #08998100)
plot_prl2 = plot(prS2, 'Destek2', avg != avg[1] ? na : #08998100)
//Fills
fill(plot_pru2, plot_pru1, avg != avg[1] ? na : color.new(#f23645, 65))
fill(plot_prl1, plot_prl2, avg != avg[1] ? na : color.new(#089981, 65))
//-----------------------------------------------------------------------------}
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length11 = input(20)
src11 = input(close)
//------------------------------------------------------------------------------
//Signal moving average
//-----------------------------------------------------------------------------{
var ma = 0.
var os = 0.
target = ta.sma(src11, length11)
abs_diff = math.abs(target - target[1])
r2 = math.pow(ta.correlation(close, bar_index, length11), 2)
os := r2 > 0.5 ? math.sign(src11[1] - target[1]) : os
ma := r2 > 0.5 ? r2 * target + (1 - r2) * nz(ma[1], target)
: ma[1] - abs_diff * os
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot0 = plot(src11, display = display.none, editable = false)
css = os == 1 ? #0cb51a : #ff1100
plot1 = plot(ma, 'Signal MA'
, css)
fill_css = src > ma ? color.new(#0cb51a, 80) : color.new(#ff1100, 80)
//fill(plot0, plot1, fill_css, 'Fill')
//-----------------------------------------------------------------------------}
//Settings
//-----------------------------------------------------------------------------{
per = input.float(10., 'Threshold %', minval = 0, maxval = 100)
div = input.int(50, 'Resolution' , minval = 2, maxval = 500)
//tf = input.timeframe('', 'Intrabar TF')
//Colors
showSupply = input(true ,'Supply********', inline = 'supply', group = 'Style')
supplyCss = input(#2157f3, '' , inline = 'supply', group = 'Style')
supplyArea = input(false ,'Area' , inline = 'supply', group = 'Style')
supplyAvg = input(false ,'Average' , inline = 'supply', group = 'Style')
supplyWavg = input(true ,'Weighted' , inline = 'supply', group = 'Style')
showEqui = input(true ,'Equilibrium' , inline = 'equi' , group = 'Style')
equiCss = input(color.gray, '' , inline = 'equi' , group = 'Style')
equiAvg = input(false ,'Average' , inline = 'equi' , group = 'Style')
equiWavg = input(true ,'Weighted' , inline = 'equi' , group = 'Style')
showDemand = input(true ,'Demand****' , inline = 'demand', group = 'Style')
demandCss = input(#ff5d00, '' , inline = 'demand', group = 'Style')
demandArea = input(false ,'Area' , inline = 'demand', group = 'Style')
demandAvg = input(false ,'Average' , inline = 'demand', group = 'Style')
demandWavg = input(true ,'Weighted' , inline = 'demand', group = 'Style')
//-----------------------------------------------------------------------------}
//UDT's
//-----------------------------------------------------------------------------{
type bin
float lvl
float prev
float sum
float prev_sum
float csum
float avg
bool isreached
type area
box bx
line avg
line wavg
//-----------------------------------------------------------------------------}
//Functions
//-----------------------------------------------------------------------------{
n = bar_index
get_hlv()=> [high, low, volume]
method set_area(area id, x1, top, btm, avg, wavg, showArea, showAvg, showWavg)=>
if showArea
id.bx.set_lefttop(x1, top)
id.bx.set_rightbottom(n, btm)
if showAvg
id.avg.set_xy1(x1, avg)
id.avg.set_xy2(n, avg)
if showWavg
id.wavg.set_xy1(x1, wavg)
id.wavg.set_xy2(n, wavg)
//-----------------------------------------------------------------------------}
//Main variables
//-----------------------------------------------------------------------------{
var max = 0.
var min = 0.
var x1 = 0
var csum = 0.
var area supply_area = na
var area demand_area = na
//Intrabar data
[h, l, v] = request.security_lower_tf(syminfo.tickerid, tf, get_hlv())
//Accumulate
max := math.max(high[1], max)
min := math.min(low[1], min)
csum += volume[1]
//-----------------------------------------------------------------------------}
//Set zones
//-----------------------------------------------------------------------------{
var float supply_wavg = na
var float demand_wavg = na
if dayofmonth != dayofmonth[1]
r = (max - min) / div
supply = bin.new(max, max, 0, 0, 0, 0, false)
demand = bin.new(min, min, 0, 0, 0, 0, false)
//Loop trough intervals
for i = 0 to div-1
supply.lvl -= r
demand.lvl += r
//Loop trough bars
for j = 1 to (n - x1)-1
//Loop trough intrabars
for k = 0 to (v[j]).size()-1
//Accumulate if within upper internal
supply.sum += (h[j]).get(k) > supply.lvl and (h[j]).get(k) < supply.prev ? (v[j]).get(k) : 0
supply.avg += supply.lvl * (supply.sum - supply.prev_sum)
supply.csum += supply.sum - supply.prev_sum
supply.prev_sum := supply.sum
//Accumulate if within lower interval
demand.sum += (l[j]).get(k) < demand.lvl and (l[j]).get(k) > demand.prev ? (v[j]).get(k) : 0
demand.avg += demand.lvl * (demand.sum - demand.prev_sum)
demand.csum += demand.sum - demand.prev_sum
demand.prev_sum := demand.sum
//Test if supply accumulated volume exceed threshold and set box
if supply.sum / csum * 100 > per and not supply.isreached
avg = math.avg(max, supply.lvl)
supply_wavg := supply.avg / supply.csum
//Set Box/Level coordinates
if showSupply
supply_area := area.new(
box.new(na, na, na, na, na, bgcolor = color.new(supplyCss, 80))
, line.new(na, na, na, na, color = supplyCss)
, line.new(na, na, na, na, color = supplyCss, style = line.style_dashed))
supply_area.set_area(x1, max, supply.lvl, avg, supply_wavg, supplyArea, supplyAvg, supplyWavg)
supply.isreached := true
//Test if demand accumulated volume exceed threshold and set box
if demand.sum / csum * 100 > per and not demand.isreached and showDemand
avg = math.avg(min, demand.lvl)
demand_wavg := demand.avg / demand.csum
//Set Box/Level coordinates
if showDemand
demand_area := area.new(
box.new(na, na, na, na, na, bgcolor = color.new(demandCss, 80))
, line.new(na, na, na, na, color = demandCss)
, line.new(na, na, na, na, color = demandCss, style = line.style_dashed))
demand_area.set_area(x1, demand.lvl, min, avg, demand_wavg, demandArea, demandAvg, demandWavg)
demand.isreached := true
if supply.isreached and demand.isreached
break
supply.prev := supply.lvl
demand.prev := demand.lvl
max := high
min := low
csum := volume
x1 := n
if barstate.islast
if showSupply
supply_area.bx.set_right(n)
supply_area.avg.set_x2(n)
supply_area.wavg.set_x2(n)
if showDemand
demand_area.bx.set_right(n)
demand_area.avg.set_x2(n)
demand_area.wavg.set_x2(n)
//-----------------------------------------------------------------------------}
//Settings
//-----------------------------------------------------------------------------{
length22 = input(100)
incr = input(10, "Increment")
fast = input(10)
src22 = input(close)
//-----------------------------------------------------------------------------}
//Calculations
//-----------------------------------------------------------------------------{
var ma22 = 0.
var fma = 0.
var alpha = 0.
var k = 1 / incr
upper = ta.highest(length22)
lower = ta.lowest(length22)
init_ma = ta.sma(src22, length22)
cross = ta.cross(src22,ma22)
alpha := cross ? 2 / (length + 1)
: src22 > ma22 and upper > upper[1] ? alpha + k
: src22 < ma22 and lower < lower[1] ? alpha + k
: alpha
ma22 := nz(ma22[1] + alpha[1] * (src22 - ma22[1]), init_ma)
fma := nz(cross ? math.avg(src22, fma[1])
: src22 > ma22 ? math.max(src22, fma[1]) + (src22 - fma[1]) / fast
: math.min(src22, fma[1]) + (src22 - fma[1]) / fast,src22)
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
css22 = fma > ma22 ? color.rgb(46, 245, 6) : color.red
plot122 = plot(ma22, "Converging MA"
, color = css22)
//-----------------------------------------------------------------------------}
https://tr.tradingview.com/script/zA...ation-LuxAlgo/
bu polinom ise saatlik mtf polinom ile kıyaslanınca...
https://www.tradingview.com/x/8pyz3WWf/ görüldüğü gibi uzunluk 70 olunca ayarlandı...
geri kalan 30 luk olasışık gibi oldu....
tasarıma ekleyince...belli olsun diye kalınlık arttı...olasılık kısmı fusya oldu...saatlik tasarlanmış gibi oldu...
https://i.hizliresim.com/wf5p6x5.png
PHP Code:
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © LuxAlgo
//@version=5
indicator("Predictive Ranges [LuxAlgo]", "*", overlay = true,max_boxes_count = 500, max_lines_count = 500, max_bars_back = 500)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length = input.int(200, 'Length', minval = 2)
mult = input.float(6., 'Factor', minval = 0, step = .5)
tf = input.timeframe('', 'Timeframe')
src = input(close, 'Source')
//-----------------------------------------------------------------------------}
//Function
//-----------------------------------------------------------------------------{
pred_ranges(length, mult)=>
var avg = src
var hold_atr = 0.
atr = nz(ta.atr(length)) * mult
avg := src - avg > atr ? avg + atr :
avg - src > atr ? avg - atr :
avg
hold_atr := avg != avg[1] ? atr / 2 : hold_atr
[avg + hold_atr * 2, avg + hold_atr, avg, avg - hold_atr, avg - hold_atr * 2]
//-----------------------------------------------------------------------------}
//Calculation
//-----------------------------------------------------------------------------{
[prR2
, prR1
, avg
, prS1
, prS2] = request.security(syminfo.tickerid, tf, pred_ranges(length, mult))
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot_pru2 = plot(prR2, 'Direnç2', avg != avg[1] ? na : #f2364600)
plot_pru1 = plot(prR1, 'Direnç1', avg != avg[1] ? na : #f2364600)
plot_pravg = plot(avg , 'Ortalama', avg != avg[1] ? na : #f1ce0b)
plot_prl1 = plot(prS1, 'Destek1', avg != avg[1] ? na : #08998100)
plot_prl2 = plot(prS2, 'Destek2', avg != avg[1] ? na : #08998100)
//Fills
fill(plot_pru2, plot_pru1, avg != avg[1] ? na : color.new(#f23645, 65))
fill(plot_prl1, plot_prl2, avg != avg[1] ? na : color.new(#089981, 65))
//-----------------------------------------------------------------------------}
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length11 = input(20)
src11 = input(close)
//------------------------------------------------------------------------------
//Signal moving average
//-----------------------------------------------------------------------------{
var ma = 0.
var os = 0.
target = ta.sma(src11, length11)
abs_diff = math.abs(target - target[1])
r2 = math.pow(ta.correlation(close, bar_index, length11), 2)
os := r2 > 0.5 ? math.sign(src11[1] - target[1]) : os
ma := r2 > 0.5 ? r2 * target + (1 - r2) * nz(ma[1], target)
: ma[1] - abs_diff * os
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot0 = plot(src11, display = display.none, editable = false)
css = os == 1 ? #0cb51a : #ff1100
plot1 = plot(ma, 'Signal MA'
, css)
fill_css = src > ma ? color.new(#0cb51a, 80) : color.new(#ff1100, 80)
//fill(plot0, plot1, fill_css, 'Fill')
//-----------------------------------------------------------------------------}
//Settings
//-----------------------------------------------------------------------------{
per = input.float(10., 'Threshold %', minval = 0, maxval = 100)
div = input.int(50, 'Resolution' , minval = 2, maxval = 500)
//tf = input.timeframe('', 'Intrabar TF')
//Colors
showSupply = input(true ,'Supply********', inline = 'supply', group = 'Style')
supplyCss = input(#2157f3, '' , inline = 'supply', group = 'Style')
supplyArea = input(false ,'Area' , inline = 'supply', group = 'Style')
supplyAvg = input(false ,'Average' , inline = 'supply', group = 'Style')
supplyWavg = input(true ,'Weighted' , inline = 'supply', group = 'Style')
showEqui = input(true ,'Equilibrium' , inline = 'equi' , group = 'Style')
equiCss = input(color.gray, '' , inline = 'equi' , group = 'Style')
equiAvg = input(false ,'Average' , inline = 'equi' , group = 'Style')
equiWavg = input(true ,'Weighted' , inline = 'equi' , group = 'Style')
showDemand = input(true ,'Demand****' , inline = 'demand', group = 'Style')
demandCss = input(#ff5d00, '' , inline = 'demand', group = 'Style')
demandArea = input(false ,'Area' , inline = 'demand', group = 'Style')
demandAvg = input(false ,'Average' , inline = 'demand', group = 'Style')
demandWavg = input(true ,'Weighted' , inline = 'demand', group = 'Style')
//-----------------------------------------------------------------------------}
//UDT's
//-----------------------------------------------------------------------------{
type bin
float lvl
float prev
float sum
float prev_sum
float csum
float avg
bool isreached
type area
box bx
line avg
line wavg
//-----------------------------------------------------------------------------}
//Functions
//-----------------------------------------------------------------------------{
n = bar_index
get_hlv()=> [high, low, volume]
method set_area(area id, x1, top, btm, avg, wavg, showArea, showAvg, showWavg)=>
if showArea
id.bx.set_lefttop(x1, top)
id.bx.set_rightbottom(n, btm)
if showAvg
id.avg.set_xy1(x1, avg)
id.avg.set_xy2(n, avg)
if showWavg
id.wavg.set_xy1(x1, wavg)
id.wavg.set_xy2(n, wavg)
//-----------------------------------------------------------------------------}
//Main variables
//-----------------------------------------------------------------------------{
var max = 0.
var min = 0.
var x1 = 0
var csum = 0.
var area supply_area = na
var area demand_area = na
//Intrabar data
[h, l, v] = request.security_lower_tf(syminfo.tickerid, tf, get_hlv())
//Accumulate
max := math.max(high[1], max)
min := math.min(low[1], min)
csum += volume[1]
//-----------------------------------------------------------------------------}
//Set zones
//-----------------------------------------------------------------------------{
var float supply_wavg = na
var float demand_wavg = na
if dayofmonth != dayofmonth[1]
r = (max - min) / div
supply = bin.new(max, max, 0, 0, 0, 0, false)
demand = bin.new(min, min, 0, 0, 0, 0, false)
//Loop trough intervals
for i = 0 to div-1
supply.lvl -= r
demand.lvl += r
//Loop trough bars
for j = 1 to (n - x1)-1
//Loop trough intrabars
for k = 0 to (v[j]).size()-1
//Accumulate if within upper internal
supply.sum += (h[j]).get(k) > supply.lvl and (h[j]).get(k) < supply.prev ? (v[j]).get(k) : 0
supply.avg += supply.lvl * (supply.sum - supply.prev_sum)
supply.csum += supply.sum - supply.prev_sum
supply.prev_sum := supply.sum
//Accumulate if within lower interval
demand.sum += (l[j]).get(k) < demand.lvl and (l[j]).get(k) > demand.prev ? (v[j]).get(k) : 0
demand.avg += demand.lvl * (demand.sum - demand.prev_sum)
demand.csum += demand.sum - demand.prev_sum
demand.prev_sum := demand.sum
//Test if supply accumulated volume exceed threshold and set box
if supply.sum / csum * 100 > per and not supply.isreached
avg = math.avg(max, supply.lvl)
supply_wavg := supply.avg / supply.csum
//Set Box/Level coordinates
if showSupply
supply_area := area.new(
box.new(na, na, na, na, na, bgcolor = color.new(supplyCss, 80))
, line.new(na, na, na, na, color = supplyCss)
, line.new(na, na, na, na, color = supplyCss, style = line.style_dashed))
supply_area.set_area(x1, max, supply.lvl, avg, supply_wavg, supplyArea, supplyAvg, supplyWavg)
supply.isreached := true
//Test if demand accumulated volume exceed threshold and set box
if demand.sum / csum * 100 > per and not demand.isreached and showDemand
avg = math.avg(min, demand.lvl)
demand_wavg := demand.avg / demand.csum
//Set Box/Level coordinates
if showDemand
demand_area := area.new(
box.new(na, na, na, na, na, bgcolor = color.new(demandCss, 80))
, line.new(na, na, na, na, color = demandCss)
, line.new(na, na, na, na, color = demandCss, style = line.style_dashed))
demand_area.set_area(x1, demand.lvl, min, avg, demand_wavg, demandArea, demandAvg, demandWavg)
demand.isreached := true
if supply.isreached and demand.isreached
break
supply.prev := supply.lvl
demand.prev := demand.lvl
max := high
min := low
csum := volume
x1 := n
if barstate.islast
if showSupply
supply_area.bx.set_right(n)
supply_area.avg.set_x2(n)
supply_area.wavg.set_x2(n)
if showDemand
demand_area.bx.set_right(n)
demand_area.avg.set_x2(n)
demand_area.wavg.set_x2(n)
//-----------------------------------------------------------------------------}
//Settings
//-----------------------------------------------------------------------------{
length22 = input(100)
incr = input(10, "Increment")
fast = input(10)
src22 = input(close)
//-----------------------------------------------------------------------------}
//Calculations
//-----------------------------------------------------------------------------{
var ma22 = 0.
var fma = 0.
var alpha = 0.
var k = 1 / incr
upper = ta.highest(length22)
lower = ta.lowest(length22)
init_ma = ta.sma(src22, length22)
cross = ta.cross(src22,ma22)
alpha := cross ? 2 / (length + 1)
: src22 > ma22 and upper > upper[1] ? alpha + k
: src22 < ma22 and lower < lower[1] ? alpha + k
: alpha
ma22 := nz(ma22[1] + alpha[1] * (src22 - ma22[1]), init_ma)
fma := nz(cross ? math.avg(src22, fma[1])
: src22 > ma22 ? math.max(src22, fma[1]) + (src22 - fma[1]) / fast
: math.min(src22, fma[1]) + (src22 - fma[1]) / fast,src22)
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
css22 = fma > ma22 ? color.rgb(46, 245, 6) : color.red
plot122 = plot(ma22, "Converging MA"
, color = css22)
//-----------------------------------------------------------------------------}
//Settings
//-----------------------------------------------------------------------------{
length33 = input.int(70
, minval = 0)
extrapolate = input.int(10
, minval = 0)
degree = input.int(3, 'Polynomial Degree'
, minval = 0
, maxval = 8)
src33 = input(close)
lock = input(false, 'Lock Forecast')
//Style
up_css = input.color(#0cb51a, 'Upward Color'
, group = 'Style')
dn_css = input.color(#ff1100, 'Downward Color'
, group = 'Style')
ex_css = input.color(#ea00ff, 'Extrapolation Color'
, group = 'Style')
width = input(3, 'Width'
, group = 'Style')
//-----------------------------------------------------------------------------}
//Fill lines array
//-----------------------------------------------------------------------------{
var lines = array.new_line(0)
if barstate.isfirst
for i = -extrapolate to length33-1
array.push(lines, line.new(na, na, na, na))
//-----------------------------------------------------------------------------}
//Get design matrix & partially solve system
//-----------------------------------------------------------------------------{
n33 = bar_index
var design = matrix.new<float>(0, 0)
var response = matrix.new<float>(0, 0)
if barstate.isfirst
for i = 0 to degree
column = array.new_float(0)
for j = 0 to length33-1
array.push(column, math.pow(j,i))
matrix.add_col(design, i, column)
var a = matrix.inv(matrix.mult(matrix.transpose(design), design))
var b = matrix.mult(a, matrix.transpose(design))
//-----------------------------------------------------------------------------}
//Get response matrix and compute roling polynomial regression
//-----------------------------------------------------------------------------{
var pass = 1
var matrix<float> coefficients = na
var x = -extrapolate
var float forecast = na
if barstate.islast
if pass
prices = array.new_float(0)
for i = 0 to length33-1
array.push(prices, src33[i])
matrix.add_col(response, 0, prices)
coefficients := matrix.mult(b, response)
float y1 = na
idx = 0
for i = -extrapolate to length33-1
y2 = 0.
for j = 0 to degree
y2 += math.pow(i, j)*matrix.get(coefficients, j, 0)
if idx == 0
forecast := y2
//------------------------------------------------------------------
//Set lines
//------------------------------------------------------------------
css33 = y2 < y1 ? up_css : dn_css
get_line = array.get(lines, idx)
line.set_xy1(get_line, n - i + 1, y1)
line.set_xy2(get_line, n - i, y2)
line.set_color(get_line, i <= 0 ? ex_css : css33)
line.set_width(get_line, width)
y1 := y2
idx += 1
if lock
pass := 0
else
y2 = 0.
x -= 1
for j = 0 to degree
y2 += math.pow(x, j)*matrix.get(coefficients, j, 0)
forecast := y2
plot(pass == 0 ? forecast : na, 'Extrapolation'
, color = ex_css
, offset = extrapolate
, linewidth = width)
//-----------------------------------------------------------------------------}
https://tr.tradingview.com/script/xy...reaks-LuxAlgo/
hesaplaması range yaklaşık sonuçlar verdi...
https://tr.tradingview.com/script/BE...inima-LuxAlgo/
baya beğenilmiş ama
https://www.tradingview.com/x/HSJ9hpex/
bitmiş olanı resmediyor...
yani bir önceki yerden al veya sat mantığı kullanılmış olur...
bizde derler...kedi her zaman ciğer yemez...
dinamik tasarım daha mantıklı...
https://tr.tradingview.com/script/Ik...elope-LuxAlgo/
bu kod...
geçen canlı iken çalışmadı....
https://tr.tradingview.com/script/Ik...elope-LuxAlgo/
bu da geleceği gösteren kod diye...yoube anlatımı vardı...
https://tr.tradingview.com/script/Mk...ities-LuxAlgo/
bu kodun range ile uyumu güzel....
https://www.tradingview.com/x/ThXZfrei/
stilden istediğinizi gizleyin...PHP Code:
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © LuxAlgo
//@version=5
indicator("Predictive Ranges [LuxAlgo]", "*", overlay = true,max_boxes_count = 500, max_lines_count = 500, max_bars_back = 500)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length = input.int(200, 'Length', minval = 2)
mult55 = input.float(6., 'Factor', minval = 0, step = .5)
tf = input.timeframe('', 'Timeframe')
src = input(close, 'Source')
//-----------------------------------------------------------------------------}
//Function
//-----------------------------------------------------------------------------{
pred_ranges(length, mult55)=>
var avg = src
var hold_atr = 0.
atr = nz(ta.atr(length)) * mult55
avg := src - avg > atr ? avg + atr :
avg - src > atr ? avg - atr :
avg
hold_atr := avg != avg[1] ? atr / 2 : hold_atr
[avg + hold_atr * 2, avg + hold_atr, avg, avg - hold_atr, avg - hold_atr * 2]
//-----------------------------------------------------------------------------}
//Calculation
//-----------------------------------------------------------------------------{
[prR2
, prR1
, avg
, prS1
, prS2] = request.security(syminfo.tickerid, tf, pred_ranges(length, mult55))
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot_pru2 = plot(prR2, 'Direnç2', avg != avg[1] ? na : #f2364600)
plot_pru1 = plot(prR1, 'Direnç1', avg != avg[1] ? na : #f2364600)
plot_pravg = plot(avg , 'Ortalama', avg != avg[1] ? na : #f1ce0b)
plot_prl1 = plot(prS1, 'Destek1', avg != avg[1] ? na : #08998100)
plot_prl2 = plot(prS2, 'Destek2', avg != avg[1] ? na : #08998100)
//Fills
fill(plot_pru2, plot_pru1, avg != avg[1] ? na : color.new(#f23645, 65))
fill(plot_prl1, plot_prl2, avg != avg[1] ? na : color.new(#089981, 65))
//-----------------------------------------------------------------------------}
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length11 = input(20)
src11 = input(close)
//------------------------------------------------------------------------------
//Signal moving average
//-----------------------------------------------------------------------------{
var ma = 0.
var os = 0.
target = ta.sma(src11, length11)
abs_diff = math.abs(target - target[1])
r2 = math.pow(ta.correlation(close, bar_index, length11), 2)
os := r2 > 0.5 ? math.sign(src11[1] - target[1]) : os
ma := r2 > 0.5 ? r2 * target + (1 - r2) * nz(ma[1], target)
: ma[1] - abs_diff * os
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot0 = plot(src11, display = display.none, editable = false)
css = os == 1 ? #0cb51a : #ff1100
plot1 = plot(ma, 'Signal MA'
, css)
fill_css = src > ma ? color.new(#0cb51a, 80) : color.new(#ff1100, 80)
//fill(plot0, plot1, fill_css, 'Fill')
//-----------------------------------------------------------------------------}
//Settings
//-----------------------------------------------------------------------------{
per = input.float(10., 'Threshold %', minval = 0, maxval = 100)
div = input.int(50, 'Resolution' , minval = 2, maxval = 500)
//tf = input.timeframe('', 'Intrabar TF')
//Colors
showSupply = input(true ,'Supply********', inline = 'supply', group = 'Style')
supplyCss = input(#2157f3, '' , inline = 'supply', group = 'Style')
supplyArea = input(false ,'Area' , inline = 'supply', group = 'Style')
supplyAvg = input(false ,'Average' , inline = 'supply', group = 'Style')
supplyWavg = input(true ,'Weighted' , inline = 'supply', group = 'Style')
showEqui = input(true ,'Equilibrium' , inline = 'equi' , group = 'Style')
equiCss = input(color.gray, '' , inline = 'equi' , group = 'Style')
equiAvg = input(false ,'Average' , inline = 'equi' , group = 'Style')
equiWavg = input(true ,'Weighted' , inline = 'equi' , group = 'Style')
showDemand = input(true ,'Demand****' , inline = 'demand', group = 'Style')
demandCss = input(#ff5d00, '' , inline = 'demand', group = 'Style')
demandArea = input(false ,'Area' , inline = 'demand', group = 'Style')
demandAvg = input(false ,'Average' , inline = 'demand', group = 'Style')
demandWavg = input(false ,'Weighted' , inline = 'demand', group = 'Style')
//-----------------------------------------------------------------------------}
//UDT's
//-----------------------------------------------------------------------------{
type bin
float lvl
float prev
float sum
float prev_sum
float csum
float avg
bool isreached
type area
box bx
line avg
line wavg
//-----------------------------------------------------------------------------}
//Functions
//-----------------------------------------------------------------------------{
n = bar_index
get_hlv()=> [high, low, volume]
method set_area(area id, x1, top, btm, avg, wavg, showArea, showAvg, showWavg)=>
if showArea
id.bx.set_lefttop(x1, top)
id.bx.set_rightbottom(n, btm)
if showAvg
id.avg.set_xy1(x1, avg)
id.avg.set_xy2(n, avg)
if showWavg
id.wavg.set_xy1(x1, wavg)
id.wavg.set_xy2(n, wavg)
//-----------------------------------------------------------------------------}
//Main variables
//-----------------------------------------------------------------------------{
var max = 0.
var min = 0.
var x1 = 0
var csum = 0.
var area supply_area = na
var area demand_area = na
//Intrabar data
[h, l, v] = request.security_lower_tf(syminfo.tickerid, tf, get_hlv())
//Accumulate
max := math.max(high[1], max)
min := math.min(low[1], min)
csum += volume[1]
//-----------------------------------------------------------------------------}
//Set zones
//-----------------------------------------------------------------------------{
var float supply_wavg = na
var float demand_wavg = na
if dayofmonth != dayofmonth[1]
r = (max - min) / div
supply = bin.new(max, max, 0, 0, 0, 0, false)
demand = bin.new(min, min, 0, 0, 0, 0, false)
//Loop trough intervals
for i = 0 to div-1
supply.lvl -= r
demand.lvl += r
//Loop trough bars
for j = 1 to (n - x1)-1
//Loop trough intrabars
for k = 0 to (v[j]).size()-1
//Accumulate if within upper internal
supply.sum += (h[j]).get(k) > supply.lvl and (h[j]).get(k) < supply.prev ? (v[j]).get(k) : 0
supply.avg += supply.lvl * (supply.sum - supply.prev_sum)
supply.csum += supply.sum - supply.prev_sum
supply.prev_sum := supply.sum
//Accumulate if within lower interval
demand.sum += (l[j]).get(k) < demand.lvl and (l[j]).get(k) > demand.prev ? (v[j]).get(k) : 0
demand.avg += demand.lvl * (demand.sum - demand.prev_sum)
demand.csum += demand.sum - demand.prev_sum
demand.prev_sum := demand.sum
//Test if supply accumulated volume exceed threshold and set box
if supply.sum / csum * 100 > per and not supply.isreached
avg = math.avg(max, supply.lvl)
supply_wavg := supply.avg / supply.csum
//Set Box/Level coordinates
if showSupply
supply_area := area.new(
box.new(na, na, na, na, na, bgcolor = color.new(supplyCss, 80))
, line.new(na, na, na, na, color = supplyCss)
, line.new(na, na, na, na, color = supplyCss, style = line.style_dashed))
supply_area.set_area(x1, max, supply.lvl, avg, supply_wavg, supplyArea, supplyAvg, supplyWavg)
supply.isreached := true
//Test if demand accumulated volume exceed threshold and set box
if demand.sum / csum * 100 > per and not demand.isreached and showDemand
avg = math.avg(min, demand.lvl)
demand_wavg := demand.avg / demand.csum
//Set Box/Level coordinates
if showDemand
demand_area := area.new(
box.new(na, na, na, na, na, bgcolor = color.new(demandCss, 80))
, line.new(na, na, na, na, color = demandCss)
, line.new(na, na, na, na, color = demandCss, style = line.style_dashed))
demand_area.set_area(x1, demand.lvl, min, avg, demand_wavg, demandArea, demandAvg, demandWavg)
demand.isreached := true
if supply.isreached and demand.isreached
break
supply.prev := supply.lvl
demand.prev := demand.lvl
max := high
min := low
csum := volume
x1 := n
if barstate.islast
if showSupply
supply_area.bx.set_right(n)
supply_area.avg.set_x2(n)
supply_area.wavg.set_x2(n)
if showDemand
demand_area.bx.set_right(n)
demand_area.avg.set_x2(n)
demand_area.wavg.set_x2(n)
//-----------------------------------------------------------------------------}
//Settings
//-----------------------------------------------------------------------------{
length22 = input(100)
incr = input(10, "Increment")
fast = input(10)
src22 = input(close)
//-----------------------------------------------------------------------------}
//Calculations
//-----------------------------------------------------------------------------{
var ma22 = 0.
var fma = 0.
var alpha = 0.
var k = 1 / incr
upper = ta.highest(length22)
lower = ta.lowest(length22)
init_ma = ta.sma(src22, length22)
cross = ta.cross(src22,ma22)
alpha := cross ? 2 / (length + 1)
: src22 > ma22 and upper > upper[1] ? alpha + k
: src22 < ma22 and lower < lower[1] ? alpha + k
: alpha
ma22 := nz(ma22[1] + alpha[1] * (src22 - ma22[1]), init_ma)
fma := nz(cross ? math.avg(src22, fma[1])
: src22 > ma22 ? math.max(src22, fma[1]) + (src22 - fma[1]) / fast
: math.min(src22, fma[1]) + (src22 - fma[1]) / fast,src22)
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
css22 = fma > ma22 ? color.rgb(46, 245, 6) : color.red
plot122 = plot(ma22, "Converging MA"
, color = css22)
//-----------------------------------------------------------------------------}
//Settings
//-----------------------------------------------------------------------------{
length33 = input.int(70
, minval = 0)
extrapolate = input.int(10
, minval = 0)
degree = input.int(3, 'Polynomial Degree'
, minval = 0
, maxval = 8)
src33 = input(close)
lock = input(false, 'Lock Forecast')
//Style
up_css = input.color(#0cb51a, 'Upward Color'
, group = 'Style')
dn_css = input.color(#ff1100, 'Downward Color'
, group = 'Style')
ex_css = input.color(#ea00ff, 'Extrapolation Color'
, group = 'Style')
width = input(3, 'Width'
, group = 'Style')
//-----------------------------------------------------------------------------}
//Fill lines array
//-----------------------------------------------------------------------------{
var lines = array.new_line(0)
if barstate.isfirst
for i = -extrapolate to length33-1
array.push(lines, line.new(na, na, na, na))
//-----------------------------------------------------------------------------}
//Get design matrix & partially solve system
//-----------------------------------------------------------------------------{
n33 = bar_index
var design = matrix.new<float>(0, 0)
var response = matrix.new<float>(0, 0)
if barstate.isfirst
for i = 0 to degree
column = array.new_float(0)
for j = 0 to length33-1
array.push(column, math.pow(j,i))
matrix.add_col(design, i, column)
var a = matrix.inv(matrix.mult(matrix.transpose(design), design))
var b = matrix.mult(a, matrix.transpose(design))
//-----------------------------------------------------------------------------}
//Get response matrix and compute roling polynomial regression
//-----------------------------------------------------------------------------{
var pass = 1
var matrix<float> coefficients = na
var x = -extrapolate
var float forecast = na
if barstate.islast
if pass
prices = array.new_float(0)
for i = 0 to length33-1
array.push(prices, src33[i])
matrix.add_col(response, 0, prices)
coefficients := matrix.mult(b, response)
float y1 = na
idx = 0
for i = -extrapolate to length33-1
y2 = 0.
for j = 0 to degree
y2 += math.pow(i, j)*matrix.get(coefficients, j, 0)
if idx == 0
forecast := y2
//------------------------------------------------------------------
//Set lines
//------------------------------------------------------------------
css33 = y2 < y1 ? up_css : dn_css
get_line = array.get(lines, idx)
line.set_xy1(get_line, n - i + 1, y1)
line.set_xy2(get_line, n - i, y2)
line.set_color(get_line, i <= 0 ? ex_css : css33)
line.set_width(get_line, width)
y1 := y2
idx += 1
if lock
pass := 0
else
y2 = 0.
x -= 1
for j = 0 to degree
y2 += math.pow(x, j)*matrix.get(coefficients, j, 0)
forecast := y2
plot(pass == 0 ? forecast : na, 'Extrapolation'
, color = ex_css
, offset = extrapolate
, linewidth = width)
//-----------------------------------------------------------------------------}
length55 = input.int(50, minval=2)
mult556 = input.float(2., minval=1)
show = input(false, 'As Smoothed Candles')
show_ext = input(true, 'Show Alternating Extremities')
alpha55 = input.float(1., 'Lag', minval=0, step=.1, tooltip='Control the lag of the moving average (higher = more lag)', group='Kernel Parameters')
beta55 = input.float(.5, 'Overshoot', minval=0, step=.1, tooltip='Control the overshoot amplitude of the moving average (higher = overshoots with an higher amplitude)', group='Kernel Parameters')
//----
src55 = close
var os55 = 0
var b55 = array.new_float(0)
var css55 = array.new_color(na)
if barstate.isfirst
for i = 0 to length55 - 1 by 1
x = i / (length55 - 1)
w = math.sin(2 * 3.14159 * math.pow(x, alpha55)) * (1 - math.pow(x, beta55))
array.push(b55, w)
array.push(css55, #FF1100)
array.push(css55, #FF1200)
array.push(css55, #FF1400)
array.push(css55, #FF1500)
array.push(css55, #FF1700)
array.push(css55, #FF1800)
array.push(css55, #FF1A00)
array.push(css55, #FF1B00)
array.push(css55, #FF1D00)
array.push(css55, #FF1F00)
array.push(css55, #FF2000)
array.push(css55, #FF2200)
array.push(css55, #FF2300)
array.push(css55, #FF2500)
array.push(css55, #FF2600)
array.push(css55, #FF2800)
array.push(css55, #FF2900)
array.push(css55, #FF2B00)
array.push(css55, #FF2D00)
array.push(css55, #FF2E00)
array.push(css55, #FF3000)
array.push(css55, #FF3100)
array.push(css55, #FF3300)
array.push(css55, #FF3400)
array.push(css55, #FF3600)
array.push(css55, #FF3700)
array.push(css55, #FF3900)
array.push(css55, #FF3B00)
array.push(css55, #FF3C00)
array.push(css55, #FF3E00)
array.push(css55, #FF3F00)
array.push(css55, #FF4100)
array.push(css55, #FF4200)
array.push(css55, #FF4400)
array.push(css55, #FF4500)
array.push(css55, #FF4700)
array.push(css55, #FF4900)
array.push(css55, #FF4A00)
array.push(css55, #FF4C00)
array.push(css55, #FF4D00)
array.push(css55, #FF4F00)
array.push(css55, #FF5000)
array.push(css55, #FF5200)
array.push(css55, #FF5300)
array.push(css55, #FF5500)
array.push(css55, #FF5700)
array.push(css55, #FF5800)
array.push(css55, #FF5A00)
array.push(css55, #FF5B00)
array.push(css55, #FF5D00)
array.push(css55, #FF5E00)
array.push(css55, #FF6000)
array.push(css55, #FF6200)
array.push(css55, #FF6300)
array.push(css55, #FF6500)
array.push(css55, #FF6600)
array.push(css55, #FF6800)
array.push(css55, #FF6900)
array.push(css55, #FF6B00)
array.push(css55, #FF6C00)
array.push(css55, #FF6E00)
array.push(css55, #FF7000)
array.push(css55, #FF7100)
array.push(css55, #FF7300)
array.push(css55, #FF7400)
array.push(css55, #FF7600)
array.push(css55, #FF7700)
array.push(css55, #FF7900)
array.push(css55, #FF7A00)
array.push(css55, #FF7C00)
array.push(css55, #FF7E00)
array.push(css55, #FF7F00)
array.push(css55, #FF8100)
array.push(css55, #FF8200)
array.push(css55, #FF8400)
array.push(css55, #FF8500)
array.push(css55, #FF8700)
array.push(css55, #FF8800)
array.push(css55, #FF8A00)
array.push(css55, #FF8C00)
array.push(css55, #FF8D00)
array.push(css55, #FF8F00)
array.push(css55, #FF9000)
array.push(css55, #FF9200)
array.push(css55, #FF9300)
array.push(css55, #FF9500)
array.push(css55, #FF9600)
array.push(css55, #FF9800)
array.push(css55, #FF9A00)
array.push(css55, #FF9B00)
array.push(css55, #FF9D00)
array.push(css55, #FF9E00)
array.push(css55, #FFA000)
array.push(css55, #FFA100)
array.push(css55, #FFA300)
array.push(css55, #FFA400)
array.push(css55, #FFA600)
array.push(css55, #FFA800)
array.push(css55, #FFA900)
array.push(css55, #FFAB00)
array.push(css55, #FDAC00)
array.push(css55, #FBAD02)
array.push(css55, #F9AE03)
array.push(css55, #F7AE04)
array.push(css55, #F5AF06)
array.push(css55, #F3B007)
array.push(css55, #F1B108)
array.push(css55, #EFB20A)
array.push(css55, #EDB30B)
array.push(css55, #EBB30C)
array.push(css55, #E9B40E)
array.push(css55, #E7B50F)
array.push(css55, #E4B610)
array.push(css55, #E2B712)
array.push(css55, #E0B813)
array.push(css55, #DEB814)
array.push(css55, #DCB916)
array.push(css55, #DABA17)
array.push(css55, #D8BB18)
array.push(css55, #D6BC1A)
array.push(css55, #D4BD1B)
array.push(css55, #D2BD1C)
array.push(css55, #D0BE1E)
array.push(css55, #CEBF1F)
array.push(css55, #CCC020)
array.push(css55, #C9C122)
array.push(css55, #C7C223)
array.push(css55, #C5C224)
array.push(css55, #C3C326)
array.push(css55, #C1C427)
array.push(css55, #BFC528)
array.push(css55, #BDC62A)
array.push(css55, #BBC72B)
array.push(css55, #B9C72C)
array.push(css55, #B7C82E)
array.push(css55, #B5C92F)
array.push(css55, #B3CA30)
array.push(css55, #B0CB32)
array.push(css55, #AECC33)
array.push(css55, #ACCC34)
array.push(css55, #AACD36)
array.push(css55, #A8CE37)
array.push(css55, #A6CF38)
array.push(css55, #A4D03A)
array.push(css55, #A2D13B)
array.push(css55, #A0D13C)
array.push(css55, #9ED23E)
array.push(css55, #9CD33F)
array.push(css55, #9AD440)
array.push(css55, #98D542)
array.push(css55, #95D643)
array.push(css55, #93D644)
array.push(css55, #91D746)
array.push(css55, #8FD847)
array.push(css55, #8DD948)
array.push(css55, #8BDA4A)
array.push(css55, #89DB4B)
array.push(css55, #87DB4C)
array.push(css55, #85DC4E)
array.push(css55, #83DD4F)
array.push(css55, #81DE50)
array.push(css55, #7FDF52)
array.push(css55, #7CE053)
array.push(css55, #7AE054)
array.push(css55, #78E156)
array.push(css55, #76E257)
array.push(css55, #74E358)
array.push(css55, #72E45A)
array.push(css55, #70E55B)
array.push(css55, #6EE55C)
array.push(css55, #6CE65E)
array.push(css55, #6AE75F)
array.push(css55, #68E860)
array.push(css55, #66E962)
array.push(css55, #64EA63)
array.push(css55, #61EA64)
array.push(css55, #5FEB66)
array.push(css55, #5DEC67)
array.push(css55, #5BED68)
array.push(css55, #59EE6A)
array.push(css55, #57EF6B)
array.push(css55, #55EF6C)
array.push(css55, #53F06E)
array.push(css55, #51F16F)
array.push(css55, #4FF270)
array.push(css55, #4DF372)
array.push(css55, #4BF473)
array.push(css55, #48F474)
array.push(css55, #46F576)
array.push(css55, #44F677)
array.push(css55, #42F778)
array.push(css55, #40F87A)
array.push(css55, #3EF97B)
array.push(css55, #3CF97C)
array.push(css55, #3AFA7E)
array.push(css55, #38FB7F)
array.push(css55, #36FC80)
array.push(css55, #34FD82)
array.push(css55, #32FE83)
array.push(css55, #30FF85)
//----
filt(x) =>
sum = 0.
for i = 0 to length55 - 1 by 1
sum += x[i] * array.get(b55, i)
sum
sum / array.sum(b55)
//----
src55_filt = filt(src55)
dev = ta.sma(math.abs(src55 - src55_filt), length55) * mult556
upper55 = src55_filt + dev
lower55 = src55_filt - dev
//----
crosshigh = ta.cross(high, upper55)
crosslow = ta.cross(low, lower55)
os55 := crosshigh ? 1 : crosslow ? 0 : os55[1]
ext = os55 * upper55 + (1 - os55) * lower55
//----
os_css55 = ta.rsi(src55_filt, length55) / 100
ext_css55 = os55 == 1 ? #30FF85 : #ff1100
plot(src55_filt, 'MA', show ? na : array.get(css55, math.round(os_css55 * 199)), 2, editable=false)
plot(show_ext ? ext : na, 'Extremities', ta.change(os55) ? na : ext_css55, 2, editable=false)
//----
var float h55 = na
var float l55 = na
var float c55 = na
if show
h55 := filt(high)
l55 := filt(low)
c55 := filt(src55)
c55
ohlc_os = ta.rsi(c55, length55) / 100
ohlc_css55 = array.get(css55, math.round(ohlc_os * 199))
plotcandle(math.avg(c55[1], c55[2]), h55, l55, c55, 'Smooth Candles', show ? ohlc_css55 : na, show ? #434651 : na, bordercolor=na, editable=false)
PHP Code:
//@version=5
indicator('Multi Range Pivots', overlay=true)
ref_res = input.timeframe(title='Reference Resolution', defval='D')
//rth_ses = input(title="RTH Session", defval="0700-1600")
rth_ses = '0000-0000'
source_main = input(close)
bb_type = input.string('VWAP', title='Mean Type', options=['SMA', 'EMA', 'VWMA', 'DEMA', 'TEMA', 'TRIMA', 'KAMA', 'MAMA', 'T3', 'H/L AVG', 'Donchian', 'VWAP'])
bb_length = input.int(50, minval=1, title='length')
sp = input(true, title='Show Pivots?')
sr = input(true, title='Show H/L Range')
sa = input(false, title='Show Signals')
open_bar(ses) =>
t = time(ref_res, ses)
na(t[1]) and not na(t) or t[1] < t
is_open(ses) =>
not na(time(timeframe.period, ses))
rth_open_bar = open_bar(rth_ses)
rth_is_open = is_open(rth_ses)
daily_low = float(na)
daily_low := rth_is_open ? rth_open_bar ? low : math.min(daily_low[1], low) : daily_low[1]
daily_high = float(na)
daily_high := rth_is_open ? rth_open_bar ? high : math.max(daily_high[1], high) : daily_high[1]
rth_plot_low = plot(sr ? daily_low : na, title='RTH Low', color=color.new(#cc0066, 0), linewidth=2)
rth_plot_high = plot(sr ? daily_high : na, title='RTH High', color=color.new(color.lime, 0), linewidth=2)
////////////////////////////////////////////////////////////////////////////////DONCHIAN
lower = ta.lowest(bb_length)
upper = ta.highest(bb_length)
kama(src, len) =>
xvnoise = math.abs(src - src[1])
nfastend = 0.666
nslowend = 0.0645
nsignal = math.abs(src - src[len])
nnoise = math.sum(xvnoise, len)
nefratio = nnoise != 0 ? nsignal / nnoise : 0
nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2)
nAMA = 0.0
nAMA := nz(nAMA[1]) + nsmooth * (src - nz(nAMA[1]))
nAMA
mama(src, len) =>
fl = 0.5
sl = 0.05
pi = 3.1415926
sp = (4 * src + 3 * src[1] + 2 * src[2] + src[3]) / 10.0
p = 0.0
i2 = 0.0
q2 = 0.0
dt = (.0962 * sp + .5769 * nz(sp[2]) - .5769 * nz(sp[4]) - .0962 * nz(sp[6])) * (.075 * nz(p[1]) + .54)
q1 = (.0962 * dt + .5769 * nz(dt[2]) - .5769 * nz(dt[4]) - .0962 * nz(dt[6])) * (.075 * nz(p[1]) + .54)
i1 = nz(dt[3])
jI = (.0962 * i1 + .5769 * nz(i1[2]) - .5769 * nz(i1[4]) - .0962 * nz(i1[6])) * (.075 * nz(p[1]) + .54)
jq = (.0962 * q1 + .5769 * nz(q1[2]) - .5769 * nz(q1[4]) - .0962 * nz(q1[6])) * (.075 * nz(p[1]) + .54)
i2_ = i1 - jq
q2_ = q1 + jI
i2 := .2 * i2_ + .8 * nz(i2[1])
q2 := .2 * q2_ + .8 * nz(q2[1])
re_ = i2 * nz(i2[1]) + q2 * nz(q2[1])
im_ = i2 * nz(q2[1]) - q2 * nz(i2[1])
re = 0.0
im = 0.0
re := .2 * re_ + .8 * nz(re[1])
im := .2 * im_ + .8 * nz(im[1])
p1 = im != 0 and re != 0 ? 2 * pi / math.atan(im / re) : nz(p[1])
iff_1 = p1 < 0.67 * nz(p1[1]) ? 0.67 * nz(p1[1]) : p1
p2 = p1 > 1.5 * nz(p1[1]) ? 1.5 * nz(p1[1]) : iff_1
iff_2 = p2 > 50 ? 50 : p2
p3 = p2 < 6 ? 6 : iff_2
p := .2 * p3 + .8 * nz(p3[1])
spp = 0.0
spp := .33 * p + .67 * nz(spp[1])
phase = 180 / pi * math.atan(q1 / i1)
dphase_ = nz(phase[1]) - phase
dphase = dphase_ < 1 ? 1 : dphase_
alpha_ = fl / dphase
iff_3 = alpha_ > fl ? fl : alpha_
alpha = alpha_ < sl ? sl : iff_3
mama = 0.0
mama := alpha * src + (1 - alpha) * nz(mama[1])
mama
t3(src, len) =>
xe1_1 = ta.ema(src, len)
xe2_1 = ta.ema(xe1_1, len)
xe3_1 = ta.ema(xe2_1, len)
xe4_1 = ta.ema(xe3_1, len)
xe5_1 = ta.ema(xe4_1, len)
xe6_1 = ta.ema(xe5_1, len)
b_1 = 0.7
c1_1 = -b_1 * b_1 * b_1
c2_1 = 3 * b_1 * b_1 + 3 * b_1 * b_1 * b_1
c3_1 = -6 * b_1 * b_1 - 3 * b_1 - 3 * b_1 * b_1 * b_1
c4_1 = 1 + 3 * b_1 + b_1 * b_1 * b_1 + 3 * b_1 * b_1
nT3Average_1 = c1_1 * xe6_1 + c2_1 * xe5_1 + c3_1 * xe4_1 + c4_1 * xe3_1
nT3Average_1
////////////////////////////////////////////////////////////////////////////////VWAP
src2 = source_main
start2 = daily_high < daily_high[1] or daily_low > daily_low[1]
sumSrc2 = src2 * volume
sumVol2 = volume
sumSrc2 := start2 ? sumSrc2 : sumSrc2 + sumSrc2[1]
sumVol2 := start2 ? sumVol2 : sumVol2 + sumVol2[1]
variant(type, src, len) =>
v1 = ta.sma(src, len) // Simple
v2 = ta.ema(src, len) // Exponential
v3 = 2 * v2 - ta.ema(v2, len) // Double Exponential
v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len) // Triple Exponential
v5 = ta.wma(src, len) // Weighted
v6 = ta.sma(ta.sma(src, math.ceil(len / 2)), math.floor(len / 2) + 1) // TRIMA
v7 = kama(src, len) // KAMA
v8 = mama(src, len) // MAMA
v9 = t3(src, len) // T3
v10 = math.avg(daily_high, daily_low) //FIB
v12 = sumSrc2 / sumVol2 //VWAP
v11 = math.avg(upper, lower) //DONCHIAN
type == 'EMA' ? v2 : type == 'DEMA' ? v3 : type == 'TEMA' ? v4 : type == 'VWMA' ? v5 : type == 'TRIMA' ? v6 : type == 'KAMA' ? v7 : type == 'MAMA' ? v8 : type == 'T3' ? v9 : type == 'H/L AVG' ? v10 : type == 'Donchian' ? v11 : type == 'VWAP' ? v12 : v1
/////////////////////////////////////////////////////////////////////////////////DON BASIS AND PLOT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ba = variant(bb_type, source_main, bb_length)
plot(ba, title='Basis', color=color.new(color.white, 20))
////////////////////////////////////////////////////////////////////////////////DON AVGs
dnha1 = math.avg(ba, daily_high)
dnla1 = math.avg(ba, daily_low)
dnha2 = math.avg(dnha1, daily_high)
dnla2 = math.avg(dnla1, daily_low)
dnha3 = math.avg(ba, dnha1)
dnla3 = math.avg(ba, dnla1)
////////////////////////////////////////////////////////////////////////////////DON AVG PLOTS
plot(sp ? dnha3 : na, title='High avg 1', color=color.new(color.lime, 45))
plot(sp ? dnla3 : na, title='Low avg 1', color=color.new(#cc0066, 20))
plot(sp ? dnha1 : na, title='High avg 2', color=color.new(color.lime, 45))
plot(sp ? dnla1 : na, title='Low avg 2', color=color.new(#cc0066, 20))
plot(sp ? dnha2 : na, title='High avg 3', color=color.new(color.lime, 45))
plot(sp ? dnla2 : na, title='Low avg 3', color=color.new(#cc0066, 20))
////////////////////////////////////////////////////////////////////////////////VWAP PLOT
//vwp=plot(sb ? VWAP : na, title = "VWAP", color=white, transp=20)
////////////////////////////////////////////////////////////////////////////////WVAP AVGs
//vwha1=avg(VWAP, daily_high)
//vwla1=avg(VWAP, daily_low)
//vwha2=avg(vwha1, daily_high)
//vwla2=avg(vwla1, daily_low)
//vwha3=avg(VWAP, vwha1)
//vwla3=avg(VWAP, vwla1)
////////////////////////////////////////////////////////////////////////////////VWAP AVG PLOTS
//plot(sb ? vwha3 : na, title = "High avg 1", color=lime, transp=45)
//plot(sb ? vwla3 : na, title = "Low avg 1", color=#cc0066, transp=20)
//plot(sb ? vwha1 : na, title = "High avg 2", color=lime, transp=45)
//plot(sb ? vwla1 : na, title = "Low avg 2", color=#cc0066, transp=20)
//plot(sb ? vwha2 : na, title = "High avg 3", color=lime, transp=45)
//plot(sb ? vwla2 : na, title = "Low avg 3", color=#cc0066, transp=20)
////////////////////////////////////////////////////////////////////////////////EMA
//ec=close
//em2=ema(ec,elen)
//plot(se ? em2 : na, title = "EMA", color=white, transp=20)
////////////////////////////////////////////////////////////////////////////////EMA AVGs
//em2ha1=avg(em2, daily_high)
//em2la1=avg(em2, daily_low)
//em2ha2=avg(em2ha1, daily_high)
//em2la2=avg(em2la1, daily_low)
//em2ha3=avg(em2, em2ha1)
//em2la3=avg(em2, em2la1)
////////////////////////////////////////////////////////////////////////////////EMA AVG PLOTS
//plot(se ? em2ha3 : na, title = "High avg 1", color=lime, transp=45)
//plot(se ? em2la3 : na, title = "Low avg 1", color=#cc0066, transp=20)
//plot(se ? em2ha1 : na, title = "High avg 2", color=lime, transp=45)
//plot(se ? em2la1 : na, title = "Low avg 2", color=#cc0066, transp=20)
//plot(se ? em2ha2 : na, title = "High avg 3", color=lime, transp=45)
//plot(se ? em2la2 : na, title = "Low avg 3", color=#cc0066, transp=20)
////////////////////////////////////////////////////////////////////////////////EMA Signal
pr = close < ba ? low : high
srce = pr
em = ta.ema(pr, 1)
/////////////////////////////////////////////////////////////////////////////////crosses
cru = ta.crossunder(em, dnha2)
crl = ta.crossover(em, dnla2)
plotshape(sa ? cru : na, style=shape.triangledown, color=color.new(color.red, 0), size=size.tiny)
plotshape(sa ? crl : na, style=shape.triangleup, color=color.new(color.lime, 0), size=size.tiny, location=location.belowbar)