Strateji
97 işlev. Her kaydın ne aldığı, ne verdiği ve çalışan örneği.
Değer sabittir ("USD"); çoklu para birimi/kur dönüşümü henüz modellenmez.
label(close, accountCurrency())
Fiyata para birimi etiketini (USD) iliştirir.
Değer döndürmez; koşul son barda false→true olunca bir alarm olayı üretir.
v0.1: yalnız çalışma çıktısı; alarm merkezi sonraki fazda bağlanacak.
alertcondition(condition, title?, message?)
Değer döndürmez; koşulun yükselen kenarında (false→true) bir alarm kaydeder.
`alert()`'ten AYRIDIR: `alertcondition` koşul-tabanlı ve kenar-tetiklidir (koşul true'ya geçtiği ilk barda). Derleme-anı sabit başlık/mesaj alır.
alertcondition(crossover(close, sma(close, 50)), "Kesişim", "Fiyat SMA50'yi yukarı kesti")
Fiyat SMA50'yi yukarı kestiği barda alarm.
Değer döndürmez. İzin verilmeyen yönde yeni pozisyon açılmasını engeller.
İzin dışı yönde bir sinyal geldiğinde yeni pozisyon açılmaz; açık olan ters pozisyon KAPATILIR (yönü değiştirilmez, sadece kapanır). strategy.direction.all (varsayılan) hiçbir kısıtlama getirmez.
allowEntryIn(strategy.direction.long) enterLong(rsi(close,14) < 30) enterShort(rsi(close,14) > 70)
Kısa sinyali geldiğinde açık long kapanır, yeni short AÇILMAZ.
Kapanan kaybeden islemlerin ortalama % zarari (running, POZITIF-abs; grossLoss ile tutarli). Para icin avgLosingTradeCurrency.
grossLoss/lossTrades. grossLoss gibi POZITIF-abs (negatif degil). Para icin *Currency.
Kapanan kaybeden islemlerin ortalama MUTLAK-PARA zarari (running, pozitif).
grossLossCurrency/lossTrades. avgLosingTrade'in mutlak-para versiyonu (pozitif).
İşlem başına ortalama kâr/zararı ((brüt kâr − brüt zarar) / kapanan işlem) koşan seri olarak döndürür.
Henüz kapanan işlem yoksa 0 döner (sıfıra bölme yok).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(avgTrade(), "Ort. İşlem")
İşlem başına ortalama sonucu çizer.
avgTrade'in MUTLAK-PARA versiyonu (pnlPct/100 x notional; equity-modda notional=baslangic-sermaye). Yuzde-isim (avgTrade) DEGISMEDI, geriye-uyumlu. Para-birimi ile yuzde karistirilmamali.
Kapanan kazanan islemlerin ortalama % kari (running). Yuzde; mutlak-para icin avgWinningTradeCurrency.
grossProfit/winTrades. Yuzde-birincil; *Currency soneki mutlak-para verir (naming (A), grossProfit/avgTrade ailesiyle tutarli).
grossProfitCurrency/winTrades. avgWinningTrade'in mutlak-para versiyonu (pnlPct/100 x notional).
Değer döndürmez; belirtilen id'li bekleyen emri iptal eder.
Aynı kimlik hem bekleyen giriş (limit/stop) hem de bekleyen çıkış emrinde temizlenir. Böyle bir emir yoksa bir şey yapmaz.
enterLong(barIndex==0, id='A', limit=close*0.98) cancel('A', when=barIndex==3) exit(barIndex==40)
0. barda kurulan 'A' limit emri, 3. barda dolmadıysa iptal olur.
enterLong(barIndex==0, id='A', limit=close*0.97) cancel('A', when=close < lowest(low,20)) exit(barIndex==40)
Fiyat 20 barlık dibin altına kırılırsa 'A' limit emri iptal edilir; işlem açılmaz.
Değer döndürmez; tüm bekleyen emirleri iptal eder.
Bekleyen giriş ve bekleyen çıkış emirlerinin tümü birlikte temizlenir.
enterLong(barIndex==0, id='A', limit=close*0.98) enterLong(barIndex==0, id='B', stop=close*1.02) cancelAll(when=barIndex==2) exit(barIndex==40)
2. barda hem A hem B bekleyen emri iptal; dolmamışlarsa işlem açılmaz.
enterLong(barIndex==0, id='A', limit=close*0.98) enterShort(barIndex==0, id='B', stop=close*1.02) cancelAll(when=rsi(close,14) > 60) exit(barIndex==40)
RSI 60'ı aşınca hem A hem B bekleyen emri temizlenir.
`equity()`'nin eş adıdır.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(cash(), "Nakit")
Sermaye eğrisini çizer.
Değer döndürmez. Koşul doğru olan barda açık pozisyonun TAMAMINI (tüm bacaklar) market fiyatından — sinyalin SONRAKİ barının açılışında — kapatır.
exit() ile aynı çıkış yolunu ve zamanlamasını kullanır (market çıkış sonraki barın açılışında dolar) ancak fromEntry/qtyPct filtresi yoktur — her zaman tümünü kapatır. Çoklu-giriş (pyramiding) veya kısmen kapatılmış pozisyonda kalan tüm bacakları kapatır. Henüz açık pozisyon yokken çağırmak bir şey yapmaz.
enterLong(crossover(close, sma(close,20))) closeAll(crossunder(close, sma(close,20))) plot(close)
20-periyot ortalama yukarı kesilince alır, aşağı kesilince tüm pozisyonu kapatır.
Değer döndürmez; koşul-true barında `exit(koşul)` çağırır (tam çıkış).
DİKKAT: `oran` parametresi imzada var ama şu an dikkate alınmıyor — kısmi kapanış yerine TAM kapanış yapılır. Kısmi çıkış için `exit(koşul, qtyPct=...)` kullan.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) closePart(crossunder(close, sma(close, 30)))
Alt-kesişimde pozisyonu tam kapatır.
Kapanan işlemin round-trip (giriş+çıkış) komisyon maliyeti — para birimi.
Giriş ve çıkış komisyonunun toplamıdır (yalnız komisyon oranı; kayma/slip DAHİL DEĞİL). Kaldıraç/marj ve pozisyon büyüklüğü hesaba katılır.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeCommission(-1), "Komisyon")
Son kapanan işlemin round-trip komisyon maliyetini verir.
n. kapanan işlemin giriş bar indeksini döndürür (giriş zamanından çözülür).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeEntryBar(-1), "Giriş Barı")
Son işlemin giriş bar indeksini çizer.
Giriş yorumu — TAKİP EDİLMİYOR; boş metin döner.
Bu alan şu an takip edilmez; her zaman boş metin döner (sözdizimi uyumu için mevcut).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) label(close, closedTradeEntryComment(-1))
Boş metin döner (yorum takibi yok).
Giriş emir kimliği — TAKİP EDİLMİYOR; boş metin döner.
Bu alan şu an takip edilmez; her zaman boş metin döner (sözdizimi uyumu için mevcut).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) label(close, closedTradeEntryId(-1))
Boş metin döner (kimlik takibi yok).
n. kapanan işlemin giriş fiyatı — `tradeEntryPrice(n)` eş adı.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeEntryPrice(0), "Giriş")
Kapanan işlemin giriş fiyatını çizer.
n. kapanan işlemin giriş zamanı — `tradeEntryTime(n)` eş adı.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeEntryTime(0), "Giriş Zamanı")
Kapanan işlemin giriş zamanını çizer.
n. kapanan işlemin çıkış bar indeksini döndürür (çıkış zamanından çözülür).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeExitBar(-1), "Çıkış Barı")
Son işlemin çıkış bar indeksini çizer.
n. kapanan işlemin çıkış nedenini/yorumunu (metin) döndürür; yoksa boş metin.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) label(close, closedTradeExitComment(-1))
Son işlemin çıkış nedenini etiketler.
Çıkış emir kimliği — TAKİP EDİLMİYOR; boş metin döner.
Bu alan şu an takip edilmez; her zaman boş metin döner (sözdizimi uyumu için mevcut).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) label(close, closedTradeExitId(-1))
Boş metin döner.
n. kapanan işlemin çıkış fiyatı — `tradeExitPrice(n)` eş adı.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeExitPrice(0), "Çıkış")
Kapanan işlemin çıkış fiyatını çizer.
Otomatik cikis sebep-kodu (signal/stop/target/trail/partial1/partial2/eod/liq/manual/risk/exit).
ONCE bu deger yanlislikla closedTradeExitComment() ile donuyordu; artik ikisi AYRI: comment = kullanici notu, reason = otomatik sebep-kodu.
n. kapanan işlemin çıkış zamanı — `tradeExitTime(n)` eş adı.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeExitTime(0), "Çıkış Zamanı")
Kapanan işlemin çıkış zamanını çizer.
Kapanan işlemin süresince gördüğü en kötü geri-çekilme (MAE) — para birimi cinsinden.
SAF fiyat-hareketidir: komisyon ve taşıma (carry) maliyeti HARİÇ — 'fiyat aleyhinize ne kadar gitti', hesap bakiyesinin salınımı değil. Uzun pozisyonda en düşük düşük (low), kısa pozisyonda en yüksek yüksek (high) esas alınır; giriş ve çıkış barları dahildir.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeMaxDrawdown(-1), "MAE")
Son kapanan işlemin en kötü para-cinsinden geri-çekilmesini verir.
closedTradeMaxDrawdownPercent(n)
Kapanan işlemin en kötü geri-çekilmesi (MAE) — yüzde.
SAF fiyat-hareketidir: komisyon/carry HARİÇ. Uzun pozisyonda en düşük düşük, kısa pozisyonda en yüksek yüksek; giriş ve çıkış barları dahildir. Yüzde, kâr/zarar yüzdesiyle aynı ölçektedir (kaldıraç dahil).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeMaxDrawdownPercent(-1), "MAE %")
Son kapanan işlemin en kötü geri-çekilme yüzdesini verir.
Kapanan işlemin süresince ulaştığı en iyi yükseliş (MFE) — para birimi cinsinden.
SAF fiyat-hareketidir: komisyon ve taşıma (carry) maliyeti HARİÇ — 'fiyat lehinize ne kadar gitti'. Uzun pozisyonda en yüksek yüksek (high), kısa pozisyonda en düşük düşük (low) esas alınır; giriş ve çıkış barları dahildir.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeMaxRunup(-1), "MFE")
Son kapanan işlemin en iyi para-cinsinden yükselişini verir.
Kapanan işlemin en iyi yükselişi (MFE) — yüzde.
SAF fiyat-hareketidir: komisyon/carry HARİÇ. Uzun pozisyonda en yüksek yüksek, kısa pozisyonda en düşük düşük; giriş ve çıkış barları dahildir. Yüzde, kâr/zarar yüzdesiyle aynı ölçektedir (kaldıraç dahil).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeMaxRunupPercent(-1), "MFE %")
Son kapanan işlemin en iyi yükseliş yüzdesini verir.
n. kapanan işlemin kâr/zararını PARA cinsinden döndürür (pnl% × başlangıç sermayesi / 100).
Para birimi cinsidir. Yüzde için `closedTradeProfitPercent(n)`.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeProfit(-1), "Son İşlem K/Z")
Son kapanan işlemin para cinsi kâr/zararını çizer.
n. kapanan işlemin kâr/zararını YÜZDE olarak döndürür (pnl%).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeProfitPercent(-1), "Son İşlem %")
Son kapanan işlemin yüzde kâr/zararını çizer.
n. kapanan işlemin yön/büyüklüğü — `tradeSize(n)` eş adı.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradeSize(0), "Yön")
Kapanan işlemin yönünü çizer.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTrades(), "Kapanan İşlem")
Kümülatif kapanan işlem sayısını çizer.
`tradeCount()`'un eş adıdır.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(closedTradesCount(), "Kapanan")
Kapanan işlem sayısını çizer.
Kapanmış işlem listesinin ilk sırası. Bu yapıda işlem geçmişi hiç kırpılmaz (üst sınır yok), bu yüzden her zaman 0 döner. referans dil'dan taşınan `for i = closedTradesFirstIndex() to closedTradesCount() - 1` biçimindeki döngüler olduğu gibi çalışsın diye vardır.
Değeri DEĞİŞTİRMEDEN geri döndürür (birebir). Hesap ve sembol para birimi aynı kabul edildiğinden kur dönüşümü uygulanmaz.
Sözdizimi uyumu için vardır; gerçek kur dönüşümü modellenmez (accountCurrency sabit "USD").
plot(convertToAccount(close), "Değer")
Değeri değişmeden çizer.
Değeri DEĞİŞTİRMEDEN geri döndürür (birebir). Kur dönüşümü uygulanmaz.
`convertToAccount` ile aynı — yer tutucu geçiş; kur modeli yok.
plot(convertToSymbol(close), "Değer")
Değeri değişmeden çizer.
Değer döndürmez. Çağrıldığında boyutlandırma varsayılan %equity yerine sabit adet-bazlıya geçer; kâr/zarar adet × fiyat-farkı ile hesaplanır.
Hiç çağrılmazsa varsayılan %equity boyutlandırması korunur (mevcut stratejilerin sonucu değişmez). Kaldıraç, adet-bazlı modda kâr/zarara girmez; yalnız gereken teminatı ve tasfiye eşiğini belirler. Teminat yetersizse işlem açılmaz (adet kırpılmaz).
defaultEntryQty(2) enterLong(crossover(close, sma(close, 20))) exit(crossunder(close, sma(close, 20))) plot(close)
Her işlemde sabit 2 adet alır; kâr/zarar 2 × fiyat-farkı ile hesaplanır.
O ana kadarki en yüksek sermaye tepesinden düşüşü (maksimum geri-çekilme) yüzde olarak döndürür.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(drawdownPct(), "Geri-çekilme %")
Koşan geri-çekilme yüzdesini çizer.
enterLong(condition, stopLoss?, takeProfit?, trailingStop?, id?, limit?, stop?, ocaGroup?, qty?, comment?, stopLossTicks?, takeProfitTicks?, trailTicks?, trailOffsetTicks?, trailFar?, trailNear?, trailThresh1?, trailThresh2?, stopLossAtr?, partial1Pct?, partial1Size?, partial2Pct?, partial2Size?)
Değer döndürmez; strateji testine bir giriş emri bildirir.
Risk değerleri yüzdedir (stopLoss=2 → %2). Market emir (limit/stop yok) sinyalin oluştuğu barın SONRAKİ barının açılış fiyatından dolar — bir emir kendi barı kapanmadan doldurulamaz (gerçekçi zamanlama). limit veya stop verilirse bunun yerine bekleyen emir kurulur (ikisi birlikte olmaz); bekleyen emirler fiyat seviyeye değince bar içinde gerçekçi dolar. id + limit/stop → bekleyen emir listesi: aynı id günceller, farklı id'ler birlikte bekler. Aynı ocaGroup verilen bekleyen girişlerden biri dolunca kardeşleri otomatik iptal olur (çekişen kurulum: kırılım ile geri-çekilme emirlerini birlikte kur, ilki dolunca öbürü düşer). pyramiding(n) ile aynı yönde n giriş parçasına kadar eklenir.
Kural doğrudan koşul olarak verilir; ayrı bir giriş-emri fonksiyonu yoktur. Bekleyen emir ve kademeli giriş aynı çağrıda toplanır.
enterLong(crossover(close, sma(close,20))) exit(crossunder(close, sma(close,20)))
Fiyat SMA20'yi yukarı kesince AL, aşağı kesince kapanış.
enterLong(barIndex==0, limit=sma(close,20)*0.98) exit(barIndex==40)
SMA20'nin %2 altına bekleyen limit; fiyat oraya düşünce dolar.
enterShort(condition, stopLoss?, takeProfit?, trailingStop?, id?, limit?, stop?, ocaGroup?, qty?, comment?, stopLossTicks?, takeProfitTicks?, trailTicks?, trailOffsetTicks?, trailFar?, trailNear?, trailThresh1?, trailThresh2?, stopLossAtr?, partial1Pct?, partial1Size?, partial2Pct?, partial2Size?)
Değer döndürmez; strateji testine bir short giriş emri bildirir.
enterLong'un short karşılığı; aynı id/limit/stop/pyramiding/ocaGroup kuralları ve doluş zamanlaması geçerli (market emir sinyalin sonraki barının açılış fiyatından dolar), risk değerleri yüzdedir.
enterShort(crossunder(close, sma(close,20))) exit(crossover(close, sma(close,20)))
Fiyat SMA20'yi aşağı kesince SAT, yukarı kesince kapanış.
enterShort(barIndex==0, id='S', stop=sma(close,20)*1.02) exit(barIndex==40)
SMA20'nin %2 üstüne bekleyen stop; fiyat oraya çıkınca short dolar.
enterLong/Short(comment=...) ile yazilan saf-metin notu okur. id'den AYRIDIR (tracking/cancel yapmaz). Pyramiding'de son-eklenen bacagin comment'i aktiftir.
Değer döndürmez; koşul-true barında piyasa emri yönlendirir. enterLong/enterShort'un sade sarmalayıcısıdır.
`order` bu fonksiyonun eş adıdır (aynı davranış). Yön argümanı ile tek çağrıda uzun/kısa seçilir; stop/kâr-al gibi risk argümanları için enterLong/enterShort kullan.
yon = close > open ? "long" : "short" entryMarket(crossover(close, sma(close, 20)), yon)
Kesişim barında, mum yönüne göre uzun ya da kısa piyasa emri.
Backtest sermaye (equity) serisini döndürür (risk-sonrası, emir-öncesi, bar kapanışında değerlenir).
Başlangıç sermayesi belirtilmezse 10000 kabul edilir. `cash()` bu fonksiyonun eş adıdır.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(equity(), "Sermaye")
Sermaye eğrisini alt panoda çizer.
exit(condition, fromEntry?, qtyPct?, id?, limit?, stop?, comment?, commentProfit?, commentLoss?)
Değer döndürmez; market çıkış (sonraki barın açılışında) tetikler ya da id'li bir bekleyen çıkış emri kurar.
limit/stop verilmezse market çıkış olur: sinyalin oluştuğu barın SONRAKİ barının açılış fiyatından dolar (giriş gibi gerçekçi zamanlama). Yalnız limit ya da yalnız stop → kimlikli bekleyen çıkış (fiyat seviyeye değince bar içinde dolar). limit ve stop birlikte → bracket (kâr-al + zarar-kes çifti): biri dolunca diğeri otomatik iptal olur (OCO). qtyPct kısmi kapatır; bracket tek seferliktir (dolunca silinir, kalan giriş parçası korumasız kalır).
Tek çağrı hem market çıkışı hem de bekleyen kâr-al / zarar-kes emrini yönetir; limit ve stop birlikte verildiğinde biri dolunca diğeri iptal olur.
enterLong(crossover(close, sma(close,10))) exit(crossunder(close, sma(close,10)))
Kurala bağlı anlık çıkış: SMA10 aşağı kesilince kapanış.
enterLong(barIndex==0, id='L') exit(barIndex==5, fromEntry='L', qtyPct=50) exit(barIndex==40)
5. barda L giriş parçasının yalnız %50'si kapanır; kalanı 40. barda.
Zararlı kapanan işlemlerin toplam zararını (brüt zarar, pozitif büyüklük) koşan seri olarak döndürür.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(grossLoss(), "Brüt Zarar")
Kümülatif brüt zararı çizer.
grossLoss'in MUTLAK-PARA versiyonu (pnlPct/100 x notional; equity-modda notional=baslangic-sermaye). Yuzde-isim (grossLoss) DEGISMEDI, geriye-uyumlu. Para-birimi ile yuzde karistirilmamali.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(grossProfit(), "Brüt Kâr")
Kümülatif brüt kârı çizer.
grossProfit'in MUTLAK-PARA versiyonu (pnlPct/100 x notional; equity-modda notional=baslangic-sermaye). Yuzde-isim (grossProfit) DEGISMEDI, geriye-uyumlu. Para-birimi ile yuzde karistirilmamali.
Tek-islem en-buyuk % zarar (running, POZITIF-abs). Para icin largestLosingTradeCurrency.
Simdiye kadarki tek kapanan islemin en-buyuk % zarari, POZITIF-abs. Para icin *Currency.
Tek kapanan islemin en-buyuk mutlak-para zarari (pozitif).
Simdiye kadarki tek kapanan islemin en-buyuk % kari. Para icin *Currency.
Tek kapanan islemin en-buyuk mutlak-para kari (pnlPct/100 x notional bazinda).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(lossTrades(), "Kaybeden")
Kümülatif kaybeden işlem sayısını çizer.
Kaldiracli pozisyonda marj-likidasyon fiyati: long → giris x (1 - 1/kaldirac), short → giris x (1 + 1/kaldirac). Kaldirac yoksa (1x) veya pozisyon yoksa bos.
Fiyat bu seviyeye ulasirsa pozisyon likide olur (equity sifirlanir). Likidasyon kontrolunde kullanilan AYNI formul. Kaldiracsiz hesapta anlamsiz oldugu icin bos doner.
Değer döndürmez. n ardışık zararlı günün ardından açık pozisyon kapatılır ve strateji kalıcı olarak durur.
Bir gün, o günün kapanış sermayesi gün başındakinden düşükse zararlı sayılır. Sınır bir kez aşıldığında etkisi kalıcıdır; aynı çalıştırmada strateji bir daha pozisyon açmaz.
maxConsecLossDays(2) enterLong(true)
2 ardışık zararlı günün ardından pozisyon kapanır, strateji bir daha giriş yapmaz.
Simdiye kadar TUTULAN en yuksek kontrat sayisi (yon farketmeksizin, mutlak deger).
Kaynak: her bardaki pozisyon buyuklugu (positionSize) uzerinden running-max. %equity modunda oran-bazli, kontrat/nakit modunda gercek kontrat sayisidir.
Yalnizca long taraf; short barlar 0 sayilir.
Yalnizca short taraf; long barlar 0 sayilir.
Değer döndürmez. Düşüş bu sınırı aşınca açık pozisyon kapatılır ve strateji kalıcı olarak durur.
Sınır bir kez aşıldığında etkisi kalıcıdır; aynı çalıştırmada strateji bir daha pozisyon açmaz. Düşüş GİRİŞ fiyatına göre değil, stratejinin o ana kadar ulaştığı EN YÜKSEK equity'ye (tepe) göre ölçülür — pozisyon giriş fiyatına göre hâlâ kârda olsa bile equity kendi tepesinden bu oranda gerilerse yine tetiklenir.
maxDrawdownRisk(10, strategy.percent_of_equity) enterLong(true)
Pozisyon giriş fiyatına göre hâlâ kârda olsa bile, equity kendi tepesinden %10 düşünce pozisyon kapanır, strateji bir daha giriş yapmaz.
Değer döndürmez. Gün içinde n emir dolduktan sonra açık pozisyon kapatılır ve o gün için yeni giriş engellenir.
Amaç, aşırı sık işlem yapılmasını sınırlamaktır. Sınır bir sonraki gün (UTC gün değişiminde) sıfırlanır.
maxIntradayFilledOrders(3) enterLong(barIndex % 2 == 0) enterShort(barIndex % 2 == 1)
Gün içinde 3. emir dolunca pozisyon kapanır, o gün yeni giriş açılmaz.
Değer döndürmez. Gün içi zarar bu sınırı aşınca açık pozisyon kapatılır ve o gün için yeni giriş engellenir.
Kısıtlama yalnız o gün geçerlidir; bir sonraki gün (UTC gün değişiminde) sıfırlanır ve strateji normal çalışmaya döner.
maxIntradayLoss(5, strategy.percent_of_equity) enterLong(true)
Gün içinde sermayenin %5'i kaybedilince pozisyon kapanır; ertesi gün sınır sıfırlanır.
Değer döndürmez. Kontrat/nakit modunda (defaultEntryQty veya sizeByCash) pozisyonun ulaşabileceği en yüksek adedi sınırlar; istenen büyüklük bu sınırı aşarsa sınıra indirilir.
Yalnız adet-bazlı boyutlandırmayla (defaultEntryQty/sizeByCash) birlikte anlamlıdır. Varsayılan %equity modunda kontrat kavramı olmadığından etkisizdir ve çağrıldığında bir uyarı verilir.
defaultEntryQty(5) maxPositionSize(2) enterLong(crossover(close, sma(close, 20))) exit(crossunder(close, sma(close, 20))) plot(close)
5 adet istense de pozisyon en fazla 2 adete kadar açılır (sınıra indirilir).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(netPnl(), "Net K/Z")
Kümülatif net kâr/zararı çizer.
Açık pozisyonun hesaptan AYIRDIĞI (kilitlediği) para: nominal ÷ kaldıraç. Kaldıraç yoksa nominale eşittir, 10 kat kaldıraçta onda biri olur. Nominal tabanı openTradeProfit ile aynıdır (varsayılan %%equity → başlangıç sermayesi, kontrat modu → adet × giriş fiyatı, nakit modu → ayrılan nakit). Pozisyon yoksa boş değer.
Açık işlemin şu ana kadar ödediği komisyon (yalnız giriş) — para birimi. Açık pozisyon yoksa na.
Yalnız giriş komisyonudur (çıkış henüz gerçekleşmedi); tüm açık bacakların toplamı, kalan miktar üzerinden. Kayma (slip) hariç.
enterLong(crossover(close, sma(close, 10))) plot(openTradeCommission(), "Açık komisyon")
Açık pozisyonun şu ana kadar ödediği giriş komisyonunu verir (pozisyon yoksa na).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(openTradeEntryBar(), "Açık Giriş Barı")
Açık pozisyonun giriş bar indeksini çizer.
Yorum takibi yok; boş metin.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) label(close, openTradeEntryComment())
Boş metin döner.
Kimlik takibi yok; boş metin.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) label(close, openTradeEntryId())
Boş metin döner.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(openTradeEntryPrice(), "Açık Giriş")
Açık pozisyonun giriş fiyatını çizer.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(openTradeEntryTime(), "Açık Giriş Zamanı")
Açık pozisyonun giriş zamanını çizer.
Açık işlemin şu ana kadar gördüğü en kötü geri-çekilme (MAE) — para birimi. Açık pozisyon yoksa na.
SAF fiyat-hareketidir: komisyon/carry HARİÇ. Açık pozisyon boyunca 'şimdiye kadarki en kötü' kümülatif değer; okunan barın düşük/yükseği de katılır. Kaldıraç/marj dahil. TradingView ile %100 birebir DEĞİLDİR.
enterLong(crossover(close, sma(close, 10))) plot(openTradeMaxDrawdown(), "Açık MAE")
Açık pozisyonun şu ana kadarki en kötü para-cinsinden geri-çekilmesini verir (pozisyon yoksa na).
Açık işlemin şu ana kadarki en kötü geri-çekilmesi (MAE) — yüzde. Açık pozisyon yoksa na.
SAF fiyat-hareketidir: komisyon/carry HARİÇ. Açık pozisyon boyunca kümülatif 'en kötü' yüzde; okunan barın düşük/yükseği de katılır. Kaldıraç dahil (kâr/zarar yüzdesiyle aynı ölçek). TradingView ile %100 birebir DEĞİLDİR.
enterLong(crossover(close, sma(close, 10))) plot(openTradeMaxDrawdownPercent(), "Açık MAE %")
Açık pozisyonun şu ana kadarki en kötü geri-çekilme yüzdesini verir (pozisyon yoksa na).
Açık işlemin şu ana kadar ulaştığı en iyi yükseliş (MFE) — para birimi. Açık pozisyon yoksa na.
SAF fiyat-hareketidir: komisyon/carry HARİÇ. Açık pozisyon boyunca 'şimdiye kadarki en iyi' kümülatif değer; okunan barın yüksek/düşüğü de katılır. Kaldıraç/marj dahil. TradingView ile %100 birebir DEĞİLDİR.
enterLong(crossover(close, sma(close, 10))) plot(openTradeMaxRunup(), "Açık MFE")
Açık pozisyonun şu ana kadarki en iyi para-cinsinden yükselişini verir (pozisyon yoksa na).
Açık işlemin şu ana kadarki en iyi yükselişi (MFE) — yüzde. Açık pozisyon yoksa na.
SAF fiyat-hareketidir: komisyon/carry HARİÇ. Açık pozisyon boyunca kümülatif 'en iyi' yüzde; okunan barın yüksek/düşüğü de katılır. Kaldıraç dahil (kâr/zarar yüzdesiyle aynı ölçek). TradingView ile %100 birebir DEĞİLDİR.
enterLong(crossover(close, sma(close, 10))) plot(openTradeMaxRunupPercent(), "Açık MFE %")
Açık pozisyonun şu ana kadarki en iyi yükseliş yüzdesini verir (pozisyon yoksa na).
Açık pozisyonun gerçekleşmemiş kâr/zararını PARA cinsinden döndürür (unrealized% × başlangıç / 100); flat ise na.
Yüzde için `openTradeProfitPercent()`.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(openTradeProfit(), "Açık K/Z")
Açık pozisyonun para cinsi gerçekleşmemiş K/Z'sini çizer.
Açık pozisyonun gerçekleşmemiş kâr/zararını YÜZDE olarak döndürür; flat ise na.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(openTradeProfitPercent(), "Açık %")
Açık pozisyonun yüzde gerçekleşmemiş K/Z'sini çizer.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(openTradeSize(), "Açık Yön")
Açık pozisyon yönünü çizer.
En çok tek açık işlem modellenir (piramitleme seviyelerine göre ayrışmaz).
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(openTradesCount(), "Açık İşlem")
Açık pozisyon olup olmadığını (1/0) çizer.
Açık işlem listesinin ilk sırası. Bu yapıda işlem geçmişi hiç kırpılmaz (üst sınır yok), bu yüzden her zaman 0 döner. referans dil'dan taşınan `for i = openTradesFirstIndex() to openTradesCount() - 1` biçimindeki döngüler olduğu gibi çalışsın diye vardır.
Değer döndürmez; `entryMarket` ile birebir aynı — koşul-true barında piyasa emri yönlendirir.
`entryMarket`'in eş adıdır. İkisi de aynı çekirdeği (enterLong/enterShort) çağırır.
order(crossover(close, sma(close, 20)))
Kesişim barında uzun piyasa emri.
Yalnız YÖNÜ verir (büyüklük değil). Büyüklük/giriş parçası için positionSize.
enterLong(crossover(close,sma(close,20))) exit(crossunder(close,sma(close,20))) barcolor(iff(position() > 0, "#26a69a", na))
Long taşınan barlarda mumlar yeşil; flat barlar boyanmaz.
enterLong(crossover(close,sma(close,20))) plot(position(), "yön", "#ff9800")
Alt panoda 0/+1 arası basamaklı yön çizgisi.
Flat iken na döner — kullanmadan önce `position() != 0` ile guard'la.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(positionAvg(), "Giriş Fiyatı")
Açık pozisyonun giriş fiyatını çizer.
position() yalnız yön verirken positionSize açık giriş parçası sayısı ve kısmi kapanışları yansıtır: 3 giriş parçası → +3, %50 kapanınca +2.5.
pyramiding(3) enterLong(rsi(close,14)<40, id='L') exit(rsi(close,14)>60) plot(positionSize(), "boyut", "#2962ff")
Alt panoda basamak: +1→+2→+3, çıkışta 0.
enterLong(barIndex==0, id='L') exit(barIndex==10, fromEntry='L', qtyPct=50) plot(positionSize(), "kalan", "#2962ff") exit(barIndex==40)
10. barda %50 kısmi çıkış → boyut +1'den +0.5'e düşer.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(runupPct(), "Yükseliş %")
Koşan yükseliş yüzdesini çizer.
scan(condition, title?, score?, note?)
Değer döndürmez; son barda koşul sağlanırsa bir tarama satırı üretir.
v0.1: yalnız çalışma çıktısı; tarayıcı/kalıcı kayıt sonraki fazda bağlanacak.
n. kapanan işlemin kaç bar sürdüğünü döndürür.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(tradeBars(0), "Bar Süresi")
İlk işlemin bar süresini çizer.
`closedTradesCount()` bunun eş adıdır. Seri değil, o-anki toplam sayıdır.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(tradeCount(), "İşlem Sayısı")
Şu ana dek kapanan işlem sayısını çizer.
n. kapanan işlemin giriş fiyatını döndürür.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(tradeEntryPrice(0), "İlk Giriş")
İlk kapanan işlemin giriş fiyatını çizer.
n. kapanan işlemin giriş zamanını (epoch ms) döndürür.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(tradeEntryTime(0), "Giriş Zamanı")
İlk işlemin giriş zamanını çizer.
n. kapanan işlemin çıkış fiyatını döndürür.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(tradeExitPrice(0), "İlk Çıkış")
İlk kapanan işlemin çıkış fiyatını çizer.
n. kapanan işlemin çıkış zamanını (epoch ms) döndürür.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(tradeExitTime(0), "Çıkış Zamanı")
İlk işlemin çıkış zamanını çizer.
n. kapanan işlemin kâr/zararını YÜZDE olarak döndürür (pnl%).
The unit is PERCENT (not currency). For currency use `closedTradeProfit(n)`.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(tradeProfit(0), "İlk K/Z %")
İlk işlemin yüzde kâr/zararını çizer.
n. kapanan işlemin yön/büyüklüğünü döndürür.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(tradeSize(0), "Yön")
İlk işlemin yönünü çizer.
enterLong(crossover(close, sma(close, 10))) exit(crossunder(close, sma(close, 10))) plot(winTrades(), "Kazanan")
Kümülatif kazanan işlem sayısını çizer.