-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathKoşul Uygulamaları
More file actions
103 lines (79 loc) · 6.17 KB
/
Koşul Uygulamaları
File metadata and controls
103 lines (79 loc) · 6.17 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// author & developer : © dg_factor [07.05.2023, Istanbul]
// UYARI
// Geliştirme amaçlıdır, doğrudan alım-satım stratejisi yerine ikame edilemez.
// AÇIKLAMALAR
// Aşağıdaki komut, basit koşullu yapıların inşasına örnek olarak hazırlandı.
// Birkaç yerleşik fonksiyonun tanımı da var.
// Mantık anlaşılırsa dili daha etkili kullanmak için yardımcı olabilir.
//@version=5
indicator("Koşul Uygulamaları", overlay=true)
plotshape(barstate.isfirst, "@ dg_factor", color=#13172200, editable=false)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Dinamik Ortalama Türü ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ortalama_turu_1 = input.string(title="Ortalama Türü", options=["SMA", "EMA", "WMA"], defval="EMA", inline="1")
ortalama_turu_2 = input.string(title="Ortalama Türü", options=["SMA", "EMA", "WMA"], defval="SMA", inline="2")
uzunluk_1 = input.int(title="Uzunluk", defval=50, inline="1")
uzunluk_2 = input.int(title="Uzunluk", defval=200, inline="2")
a =
ortalama_turu_1 == "SMA" ? ta.sma(close, uzunluk_1) :
ortalama_turu_1 == "EMA" ? ta.ema(close, uzunluk_1) :
ortalama_turu_1 == "WMA" ? ta.wma(close, uzunluk_1) :
na
//
b =
ortalama_turu_2 == "SMA" ? ta.sma(close, uzunluk_2) :
ortalama_turu_2 == "EMA" ? ta.ema(close, uzunluk_2) :
ortalama_turu_2 == "WMA" ? ta.wma(close, uzunluk_2) :
na
//
plot(a, "ortalama 1", color.blue)
plot(b, "ortalama 2", color.orange)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ta.crossover() & ta.crossunder() ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
long = a > b and a[1] <= b[1] // ta.crossover(a, b)
short = a < b and a[1] >= b[1] // ta.crossunder(a, b)
kesisim = long or short
int yon = 0
yon := long ? 1 : short ? -1 : nz(yon[1])
plotshape(long, "Long ", shape.triangleup, location.belowbar, #00ff00, size=size.tiny)
plotshape(short, "Short ", shape.triangledown, location.abovebar, #ff0000, size=size.tiny)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Sinyal Sayısı ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
sinyal_sayisi = ta.cum(kesisim ? 1 : 0)
renk = yon==1 ? #00bb00 : yon==-1 ? #bb0000 : #686868 // renk = a > b ? #00bb00 : a < b ? #bb0000 : #686868
sinyal_sayisi_etiket = kesisim ? label.new(bar_index, high, str.tostring(sinyal_sayisi), color=#00000000, textcolor=renk, size=size.large) : na
barcolor(sinyal_sayisi < 1 ? na : renk, title="Bar Renklendir", display=display.none)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ta.max() & ta.min() ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Grafikteki En Yüksek ve En Düşük Fiyat (ATH & ATL)
ath = 0.0
atl = 0.0
ath := bar_index == 0 ? high : high > ath[1] ? high : ath[1]
atl := bar_index == 0 ? low : low < atl[1] ? low : atl[1]
plot(ath, "ATH", #00bb00, trackprice=true, offset=-9999, display=display.none)
plot(atl, "ATL", #bb0000, trackprice=true, offset=-9999, display=display.none)
// ━━━━━━━━━━━━━━━━━━━━━━━━ Ardışık İki Sinyal Arasındaki Max ve Min Fiyat ━━━━━━━━━━━━━━━━━━━━━━━━━
var yuksek = 0.0
var dusuk = 0.0
yuksek := sinyal_sayisi != sinyal_sayisi[1] ? high : math.max(high, yuksek)
dusuk := sinyal_sayisi != sinyal_sayisi[1] ? low : math.min(low, dusuk)
plot(sinyal_sayisi < 1 ? na : yuksek, "Yüksek", #00bb00, style=plot.style_circles, display=display.none)
plot(sinyal_sayisi < 1 ? na : dusuk, "Düşük", #bb0000, style=plot.style_circles, display=display.none)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ta.barssince() & ta.valuewhen() ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Barssince Fonksiyon Yapısı
var int sinyal_uzakligi = na
sinyal_uzakligi := kesisim ? 0 : sinyal_uzakligi + 1 // sinyal_uzakligi = ta.barssince(kesisim)
// Data Uygulamaları
long_sinyali_olustugunda_kapanis_fiyati = ta.valuewhen(long, close, 0)
sondan_ikinci_long_sinyali_olustugunda_kapanis_fiyati = ta.valuewhen(long, close, 2)
sondan_ucuncu_long_sinyalinden_bes_bar_sonraki_kapanis_fiyati = ta.valuewhen(ta.barssince(long) == 5, close, 3)
// Koşul Uygulamaları
ellilik_ortalamanin_uzerinde_iki_kapanis_kosulu = ta.barssince(ta.crossover(close, ta.sma(close, 50))) == 1 and close > ta.sma(close, 50)
long_pozisyondayken_son_on_bardir_min_yuzde_iki_yukselis_kosulu = ta.barssince(long) <= 10 and close >= ta.valuewhen(long, close, 0) * 1.02
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ math.sum() Uygulamaları ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// math.sum(kosul ? 1 : 0, n) == n
// 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ç n ise koşul son n bardır gerçekleşmiş demektir.
son_bes_bardir_yukselis_kosulu = math.sum(close > close[1] ? 1 : 0, 5) == 5
son_bes_barin_herhangi_dort_tanesinde_yukselis_kosulu = math.sum(close > close[1] ? 1 : 0, 5) == 4
son_bes_bardir_dusus_ve_ardindan_son_uc_bardir_yukselis_kosulu = math.sum(close < close[1] ? 1 : 0, 8) == 5 and math.sum(close > close[1] ? 1 : 0, 3) == 3
son_on_bardir_tek_barda_min_yuzde_iki_yukselis_kosulu = math.sum((close - close[1]) / close[1] * 100 >= 2 ? 1 : 0, 10) == 1
son_uc_bardir_ellilik_ortalamanin_uzerinde_kapanis_kosulu = math.sum(close > ta.sma(close, 50) ? 1 : 0, 3) == 3 and math.sum(close > ta.sma(close, 50) ? 1 : 0, 4) == 3