-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathFixed Stop & Profit
104 lines (86 loc) · 4.64 KB
/
Fixed Stop & Profit
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 [30.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, statik stop ve profit seviyelerinin strategy() komutu üzerinde inşa edilmesine örnek teşkil eder.
// Kendi stratejinize entegre etmek için alım-satım sinyallerini "long" ve "short" değişkenleriyle tanımlayın.
// (Aşağıda örnek olarak hareketli ortalama kesişimi kullanıldı.)
// Stop ve Profit seviyeleri bu iki değişkene ve input tercihlerine bağlı olarak çizilir.
//@version=5
strategy(title='Fixed Stop & Profit', overlay=true,
initial_capital=100000,
default_qty_type=strategy.percent_of_equity, default_qty_value=100,
commission_type=strategy.commission.percent, commission_value=0.04)
//
// ━━━━━━━━━━━
// long = ...
// short = ...
// ━━━━━━━━━━━
// ━━━━━━━━━━━ Örnek ━━━━━━━━━━━
d1 = ta.sma(close, 50)
d2 = ta.sma(close, 200)
long = ta.crossover(d1, d2)
short = ta.crossunder(d1, d2)
// Kontrol (Ortalama Çizimi)
plot(d1, "d1", #2962ff85, display=display.none)
plot(d2, "d2", #ff980085, display=display.none)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Giriş ve Çıkış Emirleri
if long
strategy.close(id='SHORT', comment='Short Çıkış')
strategy.entry(id='LONG', direction=strategy.long, comment='Long Giriş')
if short
strategy.close(id='LONG', comment='Long Çıkış')
strategy.entry(id='SHORT', direction=strategy.short, comment='Short Giriş')
//
// Strateji Data
giris_fiyati = strategy.opentrades.entry_price(strategy.opentrades - 1) // float
islem_yonu = strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0 // int
long_giris = islem_yonu == 1 and (islem_yonu[1] == -1 or islem_yonu[1] == 0) // bool
short_giris = islem_yonu == -1 and (islem_yonu[1] == 1 or islem_yonu[1] == 0) // bool
giris = long_giris or short_giris // bool
// Stop & Profit Inputs
gr_fsp = "FIXED STOP PROFIT"
stop_yuzde = input.float(title="Stop %", defval=5.0, group=gr_fsp)
R = input.float(title="R", defval = 2.5, tooltip="R = takeprofit% / stoploss%", group=gr_fsp)
// Stop Fiyatı (fixed)
stop_long = ta.valuewhen(long_giris, giris_fiyati * (1 - stop_yuzde / 100), 0)
stop_short = ta.valuewhen(short_giris, giris_fiyati * (1 + stop_yuzde / 100), 0)
// Profit Fiyatı
profit_long = ta.valuewhen(long_giris, giris_fiyati + (giris_fiyati - stop_long) * R, 0)
profit_short = ta.valuewhen(short_giris, giris_fiyati - (stop_short - giris_fiyati) * R, 0)
// Plot Giriş Fiyatı
plot(giris_fiyati, title="Giriş Fiyatı", color=#6200b3, style=plot.style_circles, display=display.none)
// Plot Long Stop & Profit
plot(islem_yonu==1 ? stop_long : na, title="Long Stop", color=#bb0000, style=plot.style_circles)
plot(islem_yonu==1 ? profit_long : na, title="Long Profit", color=#00bb00, style=plot.style_circles)
// Plot Short Stop & Profit
plot(islem_yonu==-1 ? stop_short : na, title="Short Stop", color=#bb0000, style=plot.style_circles)
plot(islem_yonu==-1 ? profit_short : na, title="Short Profit", color=#00bb00, style=plot.style_circles)
// Stop & Profit Emirleri
if islem_yonu == 1 and ta.crossunder(low, stop_long)
strategy.close(id='LONG', comment='Long Stop')
if islem_yonu == 1 and ta.crossover(high, profit_long)
strategy.close(id='LONG', comment='Long Profit')
if islem_yonu == -1 and ta.crossover(high, stop_short)
strategy.close(id='SHORT', comment='Short Stop')
if islem_yonu == -1 and ta.crossunder(low, profit_short)
strategy.close(id='SHORT', comment='Short Profit')
//
// Bar Renkleri
barcolor(islem_yonu == 1 ? #00bb00 : islem_yonu == -1 ? #bb0000 : #686868)
// Etiket
etiket_gor = input.bool(title="Etiket", defval=false, group=gr_fsp)
pozisyon = long_giris ? "Long" : short_giris ? "Short" : na
info =
pozisyon + "\n" +
"Giriş : " + str.tostring(giris_fiyati, format.mintick) + "\n" +
"Stop : " + str.tostring(long_giris ? stop_long : short_giris ? stop_short : na, format.mintick) + "\n" +
"Profit : " + str.tostring(long_giris ? profit_long : short_giris ? profit_short : na, format.mintick)
etiket = etiket_gor ? giris ?
label.new(bar_index, giris_fiyati, info,
color=#b2b5be, style=label.style_label_down, textcolor=#000000, textalign=text.align_left) : na : na
//
// Bitti
plotshape(barstate.isfirst, "@ dg_factor", color=#13172200, editable=false)