Untitled
unknown
plain_text
9 months ago
11 kB
9
Indexable
//@version=5
//@strategy_alert_message {{strategy.order.alert_message}}
strategy("Özelleştirilebilir Seanslı EMA Stratejisi", overlay=true, max_labels_count=500, default_qty_type=strategy.cash, default_qty_value=10000)
baslangicSaati = input.time(defval=timestamp("2023-01-01 10:15"), title="Başlangıç Saati", group="Borsa Seans Ayarları")
bitisSaati = input.time(defval=timestamp("2023-01-01 17:00"), title="Bitiş Saati", group="Borsa Seans Ayarları")
kapanisBuffer = input.int(defval=15, title="Kapanış Öncesi Dakika", minval=1, maxval=60, group="Borsa Seans Ayarları")
alim_yontemi = "mktbest"
api_key = input.string(defval="", title="API KEY", group="Emir Ayarları")
giris_tipi = input.string(defval="Lot", title="Giriş Tipi", options=["Lot", "TL"], group="Emir Ayarları")
lot = input.float(defval=1000, title="Parasal Büyüklük/Lot", step=0.1, minval=0.1, group="Emir Ayarları")
BBperiod = input.int(defval=21, title='BB Period', minval=1)
BBdeviations = input.float(defval=1.00, title='BB Deviations', minval=0.1, step=0.05)
UseATRfilter = input(defval=true, title='ATR Filter')
ATRperiod = input.int(defval=5, title='ATR Period', minval=1)
hl = input(defval=false, title='Hide Labels')
var grpSembol = "Hisse Seçimleri"
hisse1 = input.symbol(defval="", title="Hisse 1", group=grpSembol)
aktif1 = input.bool(defval=true, title="→ Hisse 1 Aktif", group=grpSembol)
hisse2 = input.symbol(defval="", title="Hisse 2", group=grpSembol)
aktif2 = input.bool(defval=false, title="→ Hisse 2 Aktif", group=grpSembol)
hisse3 = input.symbol(defval="", title="Hisse 3", group=grpSembol)
aktif3 = input.bool(defval=false, title="→ Hisse 3 Aktif", group=grpSembol)
hisse4 = input.symbol(defval="", title="Hisse 4", group=grpSembol)
aktif4 = input.bool(defval=false, title="→ Hisse 4 Aktif", group=grpSembol)
hisse5 = input.symbol(defval="", title="Hisse 5", group=grpSembol)
aktif5 = input.bool(defval=false, title="→ Hisse 5 Aktif", group=grpSembol)
isMarketOpen() =>
time >= timestamp(year, month, dayofmonth, hour(baslangicSaati), minute(baslangicSaati)) and time <= timestamp(year, month, dayofmonth, hour(bitisSaati), minute(bitisSaati))
getSessionEnd() =>
timestamp(year, month, dayofmonth, hour(bitisSaati), minute(bitisSaati)) - (kapanisBuffer * 60 * 1000)
f_kalanSureHesapla() =>
if isMarketOpen()
kalanSaniye = (getSessionEnd() - time) / 1000
saat = math.floor(kalanSaniye / 3600)
dakika = math.floor((kalanSaniye % 3600) / 60)
saniye = math.floor(kalanSaniye % 60)
str.tostring(saat) + ":" + str.tostring(dakika, "00") + ":" + str.tostring(saniye, "00")
else
"Kapalı"
f_signal(hisseFiyat) =>
BBUpper = ta.sma(hisseFiyat, BBperiod) + ta.stdev(hisseFiyat, BBperiod) * BBdeviations
BBLower = ta.sma(hisseFiyat, BBperiod) - ta.stdev(hisseFiyat, BBperiod) * BBdeviations
BBSignal = hisseFiyat > BBUpper ? 1 : hisseFiyat < BBLower ? -1 : 0
var float TrendLine = 0.0
var int iTrend = 0
if BBSignal == 1 and UseATRfilter
TrendLine := low - ta.atr(ATRperiod)
TrendLine := TrendLine < TrendLine[1] ? TrendLine[1] : TrendLine
else if BBSignal == -1 and UseATRfilter
TrendLine := high + ta.atr(ATRperiod)
TrendLine := TrendLine > TrendLine[1] ? TrendLine[1] : TrendLine
else if BBSignal == 0 and UseATRfilter
TrendLine := TrendLine[1]
if BBSignal == 1 and not UseATRfilter
TrendLine := low
TrendLine := TrendLine < TrendLine[1] ? TrendLine[1] : TrendLine
else if BBSignal == -1 and not UseATRfilter
TrendLine := high
TrendLine := TrendLine > TrendLine[1] ? TrendLine[1] : TrendLine
else if BBSignal == 0 and not UseATRfilter
TrendLine := TrendLine[1]
iTrend := TrendLine > TrendLine[1] ? 1 : TrendLine < TrendLine[1] ? -1 : iTrend[1]
alSinyali = iTrend[1] == -1 and iTrend == 1 ? 1 : 0
satSinyali = iTrend[1] == 1 and iTrend == -1 ? 1 : 0
[alSinyali, satSinyali, TrendLine, iTrend]
// Pozisyon Yönetimi
f_calculateLotSize(hisseFiyat) =>
giris_tipi == "TL" ? math.round(lot / hisseFiyat) : lot
f_islemYap(hisse, lotMiktari, index, islem_yap, aktif) =>
var bool pozisyondaMi = false
var float sonIslemFiyati = 0.0
var float islemLotu = 0.0
var string kapanis_nedeni = ""
var bool akshamKapanis = false
var float alSinyaliSabah = 0.0
var float satSinyaliSabah = 0.0
[hisseFiyat, hisseTicker] = request.security(hisse, timeframe.period, [close, syminfo.ticker])
sessionEnd = getSessionEnd()
isSonDakika = time >= sessionEnd
if isMarketOpen() and isSonDakika and pozisyondaMi
[_, satSinyali, _, _] = f_signal(hisseFiyat)
akshamKapanis := not satSinyali
if isMarketOpen() and barstate.isconfirmed and islem_yap and aktif and hisse != ""
[alSinyali, satSinyali, TrendLine, iTrend] = f_signal(hisseFiyat)
if alSinyali and not pozisyondaMi
actualLot = f_calculateLotSize(hisseFiyat)
strategy.entry("Hisse "+str.tostring(index), strategy.long, qty=actualLot)
alert('{"name": "' + hisseTicker + ' LONG ISLEMDE 💰 ", "symbol": "' + hisseTicker + '", "orderSide": "buy", "orderType": "' + alim_yontemi + '", "price": "' + str.tostring(hisseFiyat) + '", "quantity": "' + str.tostring(actualLot) + '", "timeInForce": "day", "apiKey": "' + api_key + '"}')
pozisyondaMi := true
sonIslemFiyati := hisseFiyat
islemLotu := actualLot
kapanis_nedeni := ""
else if pozisyondaMi and isSonDakika
strategy.close("Hisse "+str.tostring(index), comment = "⏰ Süre İle Kapama")
alert('{"name": "' + hisseTicker + ' SÜRE KAPANIŞ 🕒", "symbol": "' + hisseTicker + '", "orderSide": "sell", "orderType": "' + alim_yontemi + '", "price": "' + str.tostring(hisseFiyat) + '", "quantity": "' + str.tostring(islemLotu) + '", "timeInForce": "day", "apiKey": "' + api_key + '"}')
pozisyondaMi := false
islemLotu := 0
kapanis_nedeni := "⏰ Süre"
else if pozisyondaMi and satSinyali
strategy.close("Hisse "+str.tostring(index), comment = "📊 Sinyal İle Kapama")
alert('{"name": "' + hisseTicker + ' LONG TP1 Bitti 🚀", "symbol": "' + hisseTicker + '", "orderSide": "sell", "orderType": "' + alim_yontemi + '", "price": "' + str.tostring(hisseFiyat) + '", "quantity": "' + str.tostring(islemLotu) + '", "timeInForce": "day", "apiKey": "' + api_key + '"}')
pozisyondaMi := false
islemLotu := 0
kapanis_nedeni := "📊 Sinyal"
if not pozisyondaMi and kapanis_nedeni == "⏰ Süre" and not isMarketOpen()[1] and isMarketOpen()
if akshamKapanis
[alSinyaliSabah, satSinyaliSabah, _, _] = f_signal(hisseFiyat)
if not hl
label.new(bar_index, high, text="Sabah Sinyaller: Al=" + str.tostring(alSinyaliSabah) + " Sat=" + str.tostring(satSinyaliSabah), color=color.new(color.blue, 80), textcolor=color.white, style=label.style_label_down)
if alSinyaliSabah and not satSinyaliSabah
actualLot = f_calculateLotSize(hisseFiyat)
strategy.entry("Hisse "+str.tostring(index), strategy.long, qty=actualLot)
alert('{"name": "' + hisseTicker + ' TEKRAR AÇILDI 💰 ", "symbol": "' + hisseTicker + '", "orderSide": "buy", "orderType": "' + alim_yontemi + '", "price": "' + str.tostring(hisseFiyat) + '", "quantity": "' + str.tostring(actualLot) + '", "timeInForce": "day", "apiKey": "' + api_key + '"}')
pozisyondaMi := true
sonIslemFiyati := hisseFiyat
islemLotu := actualLot
kapanis_nedeni := ""
[pozisyondaMi, hisseFiyat, hisseTicker, islemLotu, kapanis_nedeni, akshamKapanis, alSinyaliSabah, satSinyaliSabah]
[poz1, fiyat1, ticker1, lot1, neden1, aksham1, alSinyal1, satSinyal1] = f_islemYap(hisse1, lot, 1, true, aktif1)
[poz2, fiyat2, ticker2, lot2, neden2, aksham2, alSinyal2, satSinyal2] = f_islemYap(hisse2, lot, 2, true, aktif2)
[poz3, fiyat3, ticker3, lot3, neden3, aksham3, alSinyal3, satSinyal3] = f_islemYap(hisse3, lot, 3, true, aktif3)
[poz4, fiyat4, ticker4, lot4, neden4, aksham4, alSinyal4, satSinyal4] = f_islemYap(hisse4, lot, 4, true, aktif4)
[poz5, fiyat5, ticker5, lot5, neden5, aksham5, alSinyal5, satSinyal5] = f_islemYap(hisse5, lot, 5, true, aktif5)
var table debugTable = table.new(position.bottom_right, 8, 6, border_width=1)
table.cell(debugTable, 0, 0, "Hisse", bgcolor=#f0f0f0)
table.cell(debugTable, 1, 0, "Durum", bgcolor=#f0f0f0)
table.cell(debugTable, 2, 0, "Fiyat", bgcolor=#f0f0f0)
table.cell(debugTable, 3, 0, "Lot", bgcolor=#f0f0f0)
table.cell(debugTable, 4, 0, "Seans", bgcolor=#f0f0f0)
table.cell(debugTable, 5, 0, "Kalan Süre", bgcolor=#f0f0f0)
table.cell(debugTable, 6, 0, "Akşam Durum", bgcolor=#f0f0f0)
table.cell(debugTable, 7, 0, "Sabah Durum", bgcolor=#f0f0f0)
addRow(ticker, poz, price, lot, neden, row, aktif, akshamKapanis, alSinyalSabah, satSinyalSabah) =>
kalanSure = f_kalanSureHesapla()
bgcolor = aktif ? #f0f0f0 : #e0e0e0
table.cell(debugTable, 0, row, ticker, bgcolor=bgcolor)
table.cell(debugTable, 1, row, poz ? "▲ Açık" : "▼ Kapalı " + neden, bgcolor=poz ? color.new(#4CAF50, 70) : color.new(#F44336, 70))
table.cell(debugTable, 2, row, str.tostring(price, "#.##"), text_color=poz ? #4CAF50 : #F44336)
table.cell(debugTable, 3, row, str.tostring(lot))
table.cell(debugTable, 4, row, isMarketOpen() ? "Açık " + str.format_time(baslangicSaati, "HH:mm") + "-" + str.format_time(bitisSaati, "HH:mm") : "Kapalı", bgcolor=isMarketOpen() ? #4CAF50 : #F44336)
table.cell(debugTable, 5, row, kalanSure, text_color=isMarketOpen() ? #2196F3 : #9E9E9E)
table.cell(debugTable, 6, row, str.tostring(akshamKapanis ? "Al Şartı ✅" : "Sat Şartı ❌"), bgcolor=akshamKapanis ? color.new(#4CAF50, 70) : color.new(#F44336, 70))
table.cell(debugTable, 7, row, neden == "⏰ Süre" and akshamKapanis ? (alSinyalSabah and not satSinyalSabah ? "Al ✅" : satSinyalSabah ? "Sat ❌" : "Bekle 🔄") : "Pasif ⏸️", bgcolor=neden == "⏰ Süre" and akshamKapanis ? (alSinyalSabah and not satSinyalSabah ? color.new(#4CAF50, 70) : satSinyalSabah ? color.new(#F44336, 70) : color.new(#2196F3, 70)) : color.new(#9E9E9E, 70))
addRow(ticker1, poz1, fiyat1, lot1, neden1, 1, aktif1, aksham1, alSinyal1, satSinyal1)
addRow(ticker2, poz2, fiyat2, lot2, neden2, 2, aktif2, aksham2, alSinyal2, satSinyal2)
addRow(ticker3, poz3, fiyat3, lot3, neden3, 3, aktif3, aksham3, alSinyal3, satSinyal3)
addRow(ticker4, poz4, fiyat4, lot4, neden4, 4, aktif4, aksham4, alSinyal4, satSinyal4)
addRow(ticker5, poz5, fiyat5, lot5, neden5, 5, aktif5, aksham5, alSinyal5, satSinyal5)Editor is loading...
Leave a Comment