Skip to main content

Hisse Tarama

Anlık Tarama​

Description​

Hisselerin temel ve market verilerine göre anlık tarama yapar. Tarama sonucunda eşleşen semboller ve condition'daki metriklerin anlık değerleri döner. Bu endpoint kayıt oluşturmaz — sadece tarama çalıştırır.

Endpoint​

HTTP POST Endpoint https://apitest.matriksdata.com/dumrul/v1/stock-explorer

Request Body Parameters​

ParameterTypeRequiredDescription
conditionstringtrueTaramanın koşulları. Metrik key'leri kullanılır (ör: last_price>50&&daily_volume>10000000).
symbol_groupstringtrueTaramanın çalıştırılacağı hisse grubu.

Sample Request-Response​

Request Body:

{
"symbol_group": "XU100",
"condition": "last_price>50&&daily_volume>10000000"
}

Response:

{
"symbol_group": "XU100",
"condition": "last_price>50&&daily_volume>10000000",
"symbols": [
{ "code": "GARAN", "last_price": 52.4, "daily_volume": 12500000 },
{ "code": "AKBNK", "last_price": 61.8, "daily_volume": 18200000 },
{ "code": "THYAO", "last_price": 310.5, "daily_volume": 45200000 }
]
}

Not: symbol_group ve condition request'ten olduğu gibi response'a yansıtılır. symbols dizisindeki her öğede code alanı ve condition'da kullanılan metrik key'lerinin hesaplanmış değerleri yer alır.


Tarama Kaydetme​

Description​

Tarama kriterlerini kaydeder. UUID ile benzersiz id üretir. Tarama çalıştırmaz, sonuç döndürmez. Kullanıcı başına en fazla 5 tarama kaydedilebilir. Kaydedilen taramalardan en fazla 5 tanesi periyodik olarak çalıştırılabilir.

Endpoint​

HTTP POST Endpoint https://apitest.matriksdata.com/dumrul/v1/stock-explorer/save

Request Body Parameters​

ParameterTypeRequiredDescription
namestringtrueTaramanın ismi.
conditionstringtrueTaramanın koşulları. Metrik key'leri kullanılır.
symbol_groupstringtrueTaramanın çalıştırılacağı hisse grubu.
periodic_explorerobjectfalsePeriyodik tarama ayarları. Gönderilmezse periyodik tarama pasif olur.
periodic_explorer.periodstringconditionalTaramanın ne sıklıkla çalışacağı. 5min, 30min, 60min, 240min, 1day verilebilir. periodic_explorer gönderiliyorsa zorunlu.
periodic_explorer.explore_untildoubleconditionalTaramanın hangi zamana kadar çalışacağı (epoch ms). Gelecekte bir zaman olmalı, en fazla 90 gün sonrasına kadar verilebilir. periodic_explorer gönderiliyorsa zorunlu.
periodic_explorer.emailstringconditionalTarama sonucunda değişiklik olduğunda mail gönderilir. push veya email'den en az biri dolu olmalı.
periodic_explorer.pushbooleanconditionalTarama sonucunda değişiklik olduğunda push bildirim gönderilir. push veya email'den en az biri dolu olmalı.

Sample Request-Response​

Request Body:

{
"name": "BIST100 Filtre",
"symbol_group": "XU100",
"condition": "last_price>50&&daily_volume>10000000",
"periodic_explorer": {
"period": "60min",
"explore_until": 1780000000000,
"push": true,
"email": "user@matriksdata.com"
}
}

Response:

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "BIST100 Filtre",
"symbol_group": "XU100",
"condition": "last_price>50&&daily_volume>10000000",
"created_at": 1780000001234,
"periodic_explorer": {
"period": "60min",
"explore_until": 1780000000000,
"push": true,
"email": "user@matriksdata.com"
}
}

Periyodik tarama olmadan kayıt (pasif kayıt):

{
"name": "Sadece Kayıt",
"symbol_group": "XU100",
"condition": "last_price>100"
}

Response:

{
"id": "661f8500-a39c-42e5-b827-557766551111",
"name": "Sadece Kayıt",
"symbol_group": "XU100",
"condition": "last_price>100",
"created_at": 1780000005678
}

Not: Response'ta symbols alanı dönmez — kayıt sırasında tarama çalıştırılmaz. id alanı UUID v4 formatındadır.


Tarama Güncelleme​

Description​

Kayıtlı taramayı günceller. Full replace semantiği ile çalışır — gönderilmeyen her alan silinmiş kabul edilir. Tarama çalıştırmaz, sonuç döndürmez. Client kaydı önce GET ile çekip, kullanıcıya gösterip, düzenlenmiş haliyle komple göndermelidir.

Endpoint​

HTTP PUT Endpoint https://apitest.matriksdata.com/dumrul/v1/stock-explorer/save

Query Parameters​

ParameterTypeRequiredDescription
idstringtrueGüncellenecek kaydın UUID'si.

Request Body Parameters​

ParameterTypeRequiredDescription
namestringtrueTaramanın ismi.
conditionstringtrueTaramanın koşulları.
symbol_groupstringtrueHisse grubu.
periodic_explorerobjectfalseGönderilmezse periyodik tarama pasife alınır (null yazılır).
periodic_explorer.periodstringconditionalPeriyod. periodic_explorer gönderiliyorsa zorunlu.
periodic_explorer.explore_untildoubleconditionalBitiş zamanı (epoch ms). Gelecekte bir zaman olmalı, en fazla 90 gün sonrasına kadar verilebilir. periodic_explorer gönderiliyorsa zorunlu.
periodic_explorer.emailstringconditionalMail bildirimi. push veya email'den en az biri dolu olmalı.
periodic_explorer.pushbooleanconditionalPush bildirimi. push veya email'den en az biri dolu olmalı.

Sample Request-Response​

Senaryo A: Periyodik taramayı güncelle (email kapat, push kalsın) PUT /save?id=550e8400-e29b-41d4-a716-446655440000

Request Body:

{
"name": "BIST100 Filtre",
"condition": "last_price>60&&daily_volume>15000000",
"symbol_group": "XU100",
"periodic_explorer": {
"period": "60min",
"explore_until": 1780000000000,
"push": true
}
}

Response:

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "BIST100 Filtre",
"symbol_group": "XU100",
"condition": "last_price>60&&daily_volume>15000000",
"created_at": 1780000001234,
"updated_at": 1780001009999,
"periodic_explorer": {
"period": "60min",
"explore_until": 1780000000000,
"push": true
}
}

Senaryo B: Periyodik taramayı tamamen kapat

{
"name": "BIST100 Filtre",
"condition": "last_price>60&&daily_volume>15000000",
"symbol_group": "XU100"
}

Not: periodic_explorer gönderilmezse Cassandra'ya null yazılır, periyodik tarama pasife alınır. Response'ta symbols alanı dönmez.


Kayıtlı Taramalar​

Description​

Kullanıcının kayıtlı taramalarının listesini döner. Sadece metadata döner, tarama çalıştırmaz.

Endpoint​

HTTP GET Endpoint https://apitest.matriksdata.com/dumrul/v1/stock-explorer

Sample Request-Response​

https://apitest.matriksdata.com/dumrul/v1/stock-explorer

[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "BIST100 Filtre",
"symbol_group": "XU100",
"condition": "last_price>50&&daily_volume>10000000",
"created_at": 1780000001234,
"periodic_explorer": {
"period": "60min",
"explore_until": 1780000000000,
"push": true,
"email": "user@matriksdata.com"
}
},
{
"id": "661f8500-a39c-42e5-b827-557766551111",
"name": "Düşük PD/DD",
"symbol_group": "XU100",
"condition": "pd_dd<10&&roe>20",
"created_at": 1780000005678
}
]

Not: Liste response'unda symbols alanı yer almaz (metadata only). periodic_explorer null veya undefined ise periyodik tarama pasiftir.


Kayıtlı Tarama Detayı + Anlık Tarama​

Description​

Belirli bir kaydın detayını döner ve anlık tarama (fresh scan) çalıştırır. Condition'daki metriklerin hesaplanmış değerleri symbols dizisinde yer alır.

Endpoint​

HTTP GET Endpoint https://apitest.matriksdata.com/dumrul/v1/stock-explorer

Query Parameters​

ParameterTypeRequiredDescription
idstringtrueKaydın UUID'si.

Sample Request-Response​

https://apitest.matriksdata.com/dumrul/v1/stock-explorer?id=550e8400-e29b-41d4-a716-446655440000

Response:

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "BIST100 Filtre",
"symbol_group": "XU100",
"condition": "last_price>50&&daily_volume>10000000",
"created_at": 1780000001234,
"updated_at": 1780001009999,
"symbols": [
{ "code": "GARAN", "last_price": 52.4, "daily_volume": 12500000 },
{ "code": "AKBNK", "last_price": 61.8, "daily_volume": 18200000 }
],
"periodic_explorer": {
"period": "60min",
"explore_until": 1780000000000,
"push": true,
"email": "user@matriksdata.com"
}
}

Not: Fresh scan sonucu yalnızca response'a eklenir, Cassandra'ya kaydedilmez.


Tarama Silme​

Description​

Kaydedilmiş taramalar silinir. Silinen taramalar geri alınamaz. Silme işlemi yapıldığında elde kalan kayıtlı taramalar response olarak döner.

Endpoint​

HTTP DELETE Endpoint https://apitest.matriksdata.com/dumrul/v1/stock-explorer

Query Parameters​

ParameterTypeRequiredDescription
idstringtrueSilinecek taramanın UUID'si.

Sample Request-Response​

https://apitest.matriksdata.com/dumrul/v1/stock-explorer?id=550e8400-e29b-41d4-a716-446655440000

Response: (kalan kayıtların listesi)

[
{
"id": "661f8500-a39c-42e5-b827-557766551111",
"name": "Düşük PD/DD",
"symbol_group": "XU100",
"condition": "pd_dd<10&&roe>20",
"created_at": 1780000005678
}
]

Response Alanları​

Endpoint'lerin response'unda dönebilecek tüm alanların açıklamaları. Hangi alanların döneceği çağrılan endpoint'e göre değişir (ör. symbols yalnızca tarama çalıştıran endpoint'lerde döner, updated_at yalnızca güncelleme sonrası döner). Zaman alanları Unix epoch, milisaniye cinsindendir (ör. 1780000001234).

Üst Seviye Alanlar​

Alan (Key)TipAçıklama
idstringKaydın benzersiz kimliği (UUID v4). Kayıt oluşturma, güncelleme, liste, detay ve silme response'larında döner. Anlık taramada (POST /stock-explorer) dönmez.
namestringTaramaya kullanıcının verdiği isim.
symbol_groupstringTaramanın çalıştırıldığı hisse grubu. Request'ten olduğu gibi response'a yansıtılır.
conditionstringTaramanın filtre koşulu. Request'ten olduğu gibi response'a yansıtılır.
created_atnumber (epoch ms)Kaydın ilk oluşturulma zamanı.
updated_atnumber (epoch ms)Kaydın son güncellenme zamanı. Yalnızca güncelleme (PUT) sonrası dönen kayıtlarda bulunur; ilk oluşturmada dönmez.
symbolsarrayCondition ile eşleşen hisselerin listesi. Yalnızca tarama çalıştıran endpoint'lerde (anlık tarama ve detay + fresh scan) döner; kayıt / güncelleme / liste response'larında bulunmaz.
periodic_explorerobjectPeriyodik tarama ayarları. null veya alan yoksa periyodik tarama pasiftir.

symbols Dizisi Öğeleri​

Alan (Key)TipAçıklama
codestringEşleşen hissenin sembol kodu (ör. GARAN, AKBNK, THYAO).
<metrik_key>numberCondition'da kullanılan her metrik key'inin o hisse için hesaplanmış anlık değeri (ör. last_price, daily_volume). Buradaki alan adları sabit değildir — condition'da hangi metrikler kullanıldıysa yalnızca onlar döner. Tüm metrik key'lerinin listesi ve formülleri için aşağıdaki "condition Sözdizimi → Metrik Key'leri" bölümüne bakınız.

periodic_explorer Nesnesi Alanları​

Alan (Key)TipAçıklama
periodstringPeriyodik taramanın çalışma sıklığı: 5min, 30min, 60min, 240min veya 1day.
explore_untilnumber (epoch ms)Periyodik taramanın çalışacağı son zaman. Bu zamandan sonra tarama atlanır.
pushbooleantrue ise, tarama sonucunda değişiklik olduğunda push bildirimi gönderilir.
emailstringDoluysa, tarama sonucunda değişiklik olduğunda bu adrese mail gönderilir.

symbol_group Tipleri​

indexes: XUTUM, XU100, XU050, XU030, XBANK, XKTUM
markets: Z (yıldız pazar), N (ana pazar), T (alt pazar), S (piyasa öncesi), W (yakın izleme)
sektörler: sektör kodları (endeks ağırlık dosyasından yüklenir)

condition Sözdizimi​

condition alanı sunucu tarafında tanımlı metrik key'lerini kullanır. Operatörler ve 4 işlem desteklenir.

Operatörler​

"<": küçüktür
">": büyüktür
"==": eşittir
"<=": küçük eşittir
">=": büyük eşittir
"||": veya
"&&": ve
"()": parantez
"+ - * /": dört işlem

Metrik Key'leri​

Fiyat ve Piyasa Verileri​

KeyAçıklamaFormülBirim
market_valuePiyasa DeğerimarketValueTL
capitalSermayecapitalTL
equityÖzsermayeequityTL
circulation_share_perDolaşımdaki Pay OranıcirculationSharePer%
circulation_shareDolaşımdaki Pay MiktarıcirculationShare—
last_priceSon FiyatlastTL

Değişim Metrikleri​

KeyAçıklamaFormülBirim
daily_changeGünlük Değişim(last/dayClose-1)*100%
weekly_changeHaftalık Değişim(last/weekClose-1)*100%
monthly_changeAylık Değişim(last/monthClose-1)*100%
three_month_change3 Aylık Değişim(last/threeMonthClose-1)*100%
six_month_change6 Aylık Değişim(last/sixMonthClose-1)*100%
yearly_changeYıllık Değişim(last/yearClose-1)*100%
ytd_changeYılbaşından Değişim(last/prevYearClose-1)*100%

Hacim ve Volatilite​

KeyAçıklamaFormülBirim
daily_volumeGünlük İşlem HacmidailyVolumeTL
daily_quantityGünlük İşlem AdedidailyQuantity—
intraday_volatilityGün İçi Volatilite(dailyHigh-dailyLow)/dayClose*100%
spread_percentageSpread %((ask-bid)/bid)*100%
daily_turnover_rateGünlük Devir Hızı(dailyQuantity/circulationShare)*100%

52 Hafta ve Ortalama Uzaklıkları​

KeyAçıklamaFormülBirim
week_52_high_distance52 Hafta Yüksek Uzaklığı(last/yearHigh-1)*100%
week_52_low_distance52 Hafta Düşük Uzaklığı(last/yearLow-1)*100%
daily_average_distanceGünlük Ortalamaya Uzaklık(last/priceMean-1)*100%

Temel Analiz Çarpanları​

KeyAçıklamaFormülBirim
pd_ddPD/DDmarketValue/netProceeds—
fk_ddFK/DDmarketValue/equity—
pd_favokPD/FAVÖKmarketValue/shiftedEbitda—
fd_hasilatFD/HasılatmarketValue/shiftedReturn—

Finansal Veriler​

KeyAçıklamaFormülBirim
net_proceedsNet KarnetProceedsTL
revenueHasılatreturnTL
ebitdaFAVÖKebitdaTL
shifted_net_proceedsKaydırılmış Net KarshiftedNetProceedsTL
shifted_returnKaydırılmış HasılatshiftedReturnTL
shifted_ebitdaKaydırılmış FAVÖKshiftedEbitdaTL

Hisse Bazlı ve Borçluluk​

KeyAçıklamaFormülBirim
epsHisse Başı KazançnetProceeds/circulationShareTL
equity_per_shareHisse Başı Özsermayeequity/circulationShareTL
net_debtNet BorçnetDebtTL
net_debt_ebitdaNet Borç/FAVÖKnetDebt/shiftedEbitda—
debt_equityBorç/ÖzsermayenetDebt/equity—
cash_ratioNakit OranıcashRatio—

Getiri ve Karlılık​

KeyAçıklamaFormülBirim
dividend_yieldTemettü VerimicashNetDividend/last*100%
roeROE(netProceeds/equity)*100%
net_profit_marginNet Kar Marjı(netProceeds/shiftedReturn)*100%
ebitda_marginFAVÖK Marjı(shiftedEbitda/shiftedReturn)*100%
earnings_yieldKazanç Verimi(netProceeds/marketValue)*100%

Emir Defteri ve Limit Verileri​

KeyAçıklamaFormülBirim
bid_sizeAlış AdedibidSize—
ask_sizeSatış AdediaskSize—
open_priceAçılış FiyatıopenTL
daily_lowGünlük En DüşükdailyLowTL
daily_highGünlük En YüksekdailyHighTL
limit_upTavan FiyatlimitUpTL
limit_downTaban FiyatlimitDownTL
distance_to_limit_upTavana Uzaklık(limitUp-last)/last*100%
distance_to_limit_downTabana Uzaklık(last-limitDown)/last*100%

Condition Örnekleri​

"last_price>50&&daily_volume>10000000"         → Son fiyatı 50 TL üstü ve günlük hacmi 10M üstü
"pd_dd<15&&fk_dd<3" → PD/DD 15 altı ve FK/DD 3 altı
"roe>20&&net_profit_margin>10" → ROE %20 üstü ve net kar marjı %10 üstü
"dividend_yield>5&&debt_equity<1" → Temettü verimi %5 üstü ve borç/özsermaye 1 altı
"distance_to_limit_up<3||distance_to_limit_down<3" → Tavana veya tabana %3'ten yakın
"last_price>10&&daily_volume>5000000&&pd_dd<20&&roe>15&&dividend_yield>3" → Çoklu filtre

Hata Kodları​

HTTPKodDurum
400INVALID_ERRORGeçersiz parametre, bilinmeyen metrik key, geçersiz condition, geçersiz symbol_group, eksik zorunlu alan, geçersiz period, explore_until geçmişte
401EACCESYetkilendirme hatası — geçersiz veya eksik token, lisans yetersiz
404NOT_FOUNDKayıt bulunamadı (GET /?id, PUT /save?id, DELETE /?id)

Endpoint Özet Tablosu​

MetodEndpointAçıklamaTarama ÇalıştırırKayıt Yapar
POST/stock-explorerAnlık tarama✅❌
POST/stock-explorer/saveYeni kayıt oluştur❌✅
PUT/stock-explorer/save?id=uuidKayıt güncelle❌✅
GET/stock-explorerKayıtlı tarama listesi❌❌
GET/stock-explorer?id=uuidKayıt detayı + fresh scan✅❌
DELETE/stock-explorer?id=uuidKayıt sil❌❌

Periyodik Tarama Davranışı​

Periyodik tarama periodic_explorer nesnesinin varlığına göre belirlenir:

  • periodic_explorer doluysa → Periyodik tarama aktif. processJob belirtilen period aralığında taramayı çalıştırır.
  • periodic_explorer null/yoksa → Periyodik tarama pasif. processJob bu kaydı atlar.
  • İlk tarama → Baseline oluşturulur, bildirim gönderilmez.
  • Sonraki taramalar → Hash karşılaştırılır, değişiklik varsa bildirim gönderilir (email ve/veya push).
  • explore_until süresi dolmuşsa → processJob bu kaydı atlar.

Bildirim Kanalları​

  • email: periodic_explorer.email doluysa, değişiklik tespit edildiğinde mail gönderilir.
  • push: periodic_explorer.push = true ise, değişiklik tespit edildiğinde push bildirim gönderilir (Redis PubSub → stock-notification kanalı).
Son güncelleme: 17 Ağustos 2026