-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathBarScope
More file actions
59 lines (46 loc) · 2.74 KB
/
BarScope
File metadata and controls
59 lines (46 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dg_factor [03.09.2023]
// UYARI
// Geliştirme amaçlıdır, doğrudan alım-satım stratejisi yerine ikame edilemez.
// TANIM
// Aşağıdaki komut dosyası farklı bar kombinasyonlarından doğan sinyallerin üretilmesine örnek teşkil eder.
// "Şu kadar bar düşüşten veya yükselişten sonra, şu kadar bar düşüş veya yükseliş olursa" koşulunu derlemek amacıyla hazırlanmıştır.
// HESAPLAMA
// math.sum(kosul ? 1 : 0, x) == x
// Yukarıdaki yapı "herhangi bir koşul son kaç ardışık bardır gerçekleşiyor?" sorusunu cevaplar.
// Koşul her gerçekleştiğinde fonksiyon 1 değeri üretir ve bu değerleri toplar.
// Eğer toplam sonuç x ise koşul son x bardır gerçekleşmiş demektir.
// GELİŞTİRMELER
// İndikatör, iki koşullu kesintisiz yükseliş veya düşüleri kombine eder. Hesaplama mantığı izlenerek koşul sayısı arttırılabilir.
// Üretilen sinyal, giriş veya çıkış koşulu olarak kurgulanabilir.
// Uygun değiştirmeler yapılarak giriş ve çıkış aralığı (koşulun geçerli olduğu bar aralığı) tanımlanabilir.
// Hesaplama doğrudan sinyal olarak ele alınabileceği gibi, sinyal filtreleme için de kullanılabilir.
// NOT
// Kutular, koşulların ardışık gerçekleşmesi halinde iç-içe geçmiş biçimde görünür. Her bir kutu için max uzunluk (n1+n2)'dir.
//@version=5
indicator("BarScope", overlay=true, max_boxes_count=499)
n1 = input.int(title="Bar ", defval=5, minval=0, inline="1")
d1 = input.string(title=" Direction", options=["Up", "Down"], defval="Down", inline="1")
n2 = input.int(title="Bar ", defval=3, minval=0, inline="2")
d2 = input.string(title=" Direction", options=["Up", "Down"], defval="Up", inline="2")
c1 = d1 == "Up" ? close > open : close < open
c2 = d2 == "Up" ? close > open : close < open
sonuc =
d1 == d2 ? math.sum(c1 ? 1 : 0, n1 + n2) == n1 + n2 :
n1 == 0 ? math.sum(c2 ? 1 : 0, n2) == n2 :
n2 == 0 ? math.sum(c1 ? 1 : 0, n1) == n1 :
math.sum(c1 ? 1 : 0, n1 + n2) == n1 and math.sum(c2 ? 1 : 0, n2) == n2
//
plotshape(sonuc, "sonuc", shape.xcross, location.belowbar, color=#00BCD4, size=size.small)
// Table
var t = table.new(position.top_right, 1, 2)
s1 = d1 == "Up" ? "yükseliş" : "düşüş"
s2 = d2 == "Up" ? "yükseliş" : "düşüş"
if barstate.islast
table.cell(t, 0, 0, "")
table.cell(t, 0, 1, str.tostring(n1) + " bar " + s1 + " ardından " + str.tostring(n2) + " bar " + s2, text_color=#00BCD4)
//
// Box
ust = ta.highest(n1 + n2)
alt = ta.lowest(n1 + n2)
gor = sonuc ? box.new(bar_index - n1 - n2 + 1, ust, bar_index, alt, xloc=xloc.bar_index, border_color= na, bgcolor=#00BCD440, border_style=line.style_solid) : na