//@version=5
strategy("Manuel Girişli Trailing Stop Stratejisi + Mum Formasyon", overlay=true, margin_long=100, margin_short=100)
// Kullanıcıdan manuel giriş fiyatı al
inputEntryPrice = input.float(title="Giriş Fiyatı", defval=0.0, step=0.01, tooltip="Hisse için manuel giriş fiyatını giriniz")
// Trailing stop yüzdesini belirle
inputTrailingStopPercent = input.float(title="Trailing Stop Yüzdesi (%)", defval=1.0, minval=0.1, maxval=50, step=0.1, tooltip="Zirveden bu yüzde düşüşte pozisyonu kapat")
// Strateji başlangıç zamanını kontrol et
inputStartDate = input.time(title="Başlangıç Tarihi", defval=timestamp("01 Jan 2022 00:00 +0000"), tooltip="Stratejinin başlayacağı tarih")
// Sadece belirtilen tarihten sonra işlem yap
isWithinTimeWindow = time >= inputStartDate
// Değişkenleri tanımla
var float trailingStopPrice = na
var float highestSinceEntry = na
// Giriş koşulu: Fiyat giriş fiyatının üzerindeyse ve zaman penceresi içindeyse
enterLongCondition = close > inputEntryPrice and isWithinTimeWindow and strategy.position_size == 0 and not na(inputEntryPrice) and inputEntryPrice > 0
// Çıkış koşulu: Fiyat trailing stop fiyatının altına düştüyse
exitCondition = low < trailingStopPrice and strategy.position_size > 0
// Pozisyon açıldığında ilk trailing stop seviyesini belirle
if enterLongCondition
trailingStopPrice := inputEntryPrice * (1 - inputTrailingStopPercent / 100)
highestSinceEntry := inputEntryPrice
// Pozisyon açıksa highestSinceEntry ve trailingStopPrice güncelle
if strategy.position_size > 0
highestSinceEntry := math.max(highestSinceEntry, high)
trailingStopPrice := highestSinceEntry * (1 - inputTrailingStopPercent / 100)
// Strateji emirleri
if enterLongCondition
strategy.entry("Long", strategy.long)
if exitCondition
strategy.close("Long", comment="Trailing Stop ile Çıkış")
// Çizimler
plot(inputEntryPrice, title="Giriş Fiyatı", color=color.blue, linewidth=2, style=plot.style_linebr)
plot(strategy.position_size > 0 ? trailingStopPrice : na, title="Trailing Stop Seviyesi", color=color.purple, linewidth=2, style=plot.style_linebr)
// Alerts
alertcondition(enterLongCondition, title="Long Pozisyon Açıldı", message="Long pozisyon açıldı")
alertcondition(exitCondition, title="Trailing Stop ile Çıkış", message="Trailing stop ile çıkış yapıldı")
// Koşul 1: Güncel kapanış fiyatı güncel açılış fiyatından büyük
condition1 = close > open
// Koşul 2: Bir önceki günün kapanış fiyatı açılış fiyatına eşit
condition2 = close[1] == open[1]
// Koşul 3: İki gün önceki açılış fiyatı kapanış fiyatından yüksek
condition3 = open[2] > close[2]
// Tüm koşulların sağlanması
patternDetected = condition1 and condition2 and condition3
// Grafik üzerinde işaretleme
plotshape(series=patternDetected,
title="Doji",
location=location.belowbar,
color=color.new(color.green, 0),
style=shape.labelup,
text="Doji",
textcolor=color.white,
size=size.small)
// Altyazı olarak bilgi ekleme
var label infoLabel = na
if patternDetected
infoLabel := label.new(bar_index, low,
text="Desen Koşulları:\n" +
"1. Mevcut mum: Kapanış > Açılış\n" +
"2. Önceki mum: Kapanış = Açılış\n" +
"3. İki önceki mum: Açılış > Kapanış",
style=label.style_label_left,
color=color.new(color.blue, 80),
textcolor=color.black,
size=size.normal)
label.delete(infoLabel[1])
showEngulfing = input(true, "Show Bearish Engulfing")
showMarubozu = input(true, "Show Bearish Marubozu")
// Price data
openPrice = open
closePrice = close
highPrice = high
lowPrice = low
// Bearish Engulfing Pattern Conditions
prevOpen = open[1]
prevClose = close[1]
isEngulfing = prevClose > prevOpen and closePrice < openPrice and closePrice < prevOpen and openPrice > prevClose
// Bearish Marubozu Pattern Conditions
bodySize = math.abs(closePrice - openPrice)
upperWickSize = highPrice - math.max(closePrice, openPrice)
lowerWickSize = math.min(closePrice, openPrice) - lowPrice
isMarubozu = closePrice < openPrice and upperWickSize <= bodySize * 0.1 and lowerWickSize <= bodySize * 0.1
// Plot patterns on chart
plotshape(series=isEngulfing,
location=location.abovebar,
color=color.orange,
style=shape.labeldown,
text="Engulfing",
title="Bearish Engulfing")
plotshape(series=isMarubozu,
location=location.abovebar,
color=color.yellow,
style=shape.labeldown,
text="Marubozu",
title="Bearish Marubozu")
// Optional: Alert conditions
// alertcondition(isEngulfing, "Bearish Engulfing Pattern", "Bearish Engulfing detected!")
// alertcondition(isMarubozu, "Bearish Marubozu Pattern", "Bearish Marubozu detected!")
Manuel giriş: Kullanıcıdan alınan sabit bir giriş fiyatı belirlenir
Trailing stop: Pozisyon açıldıktan sonra fiyat yükseldikçe otomatik olarak yükselen bir stop seviyesi
Çalışma mantığı:
Fiyat, belirlenen giriş fiyatının üzerine çıktığında long pozisyon açılır
Pozisyon açıldıktan sonra en yüksek fiyat takip edilir
En yüksek fiyattan belirlenen yüzde (örn: %1) düşüş olduğunda pozisyon kapatılır
Üç farklı mum formasyonu tespit eder:
text
Koşul 1: Mevcut mum - Kapanış > Açılış (yeşil mum)
Koşul 2: Önceki mum - Kapanış = Açılış (Doji - açılış ve kapanış aynı)
Koşul 3: İki önceki mum - Açılış > Kapanış (kırmızı mum)
Önceki mum yeşil, mevcut mum kırmızı
Mevcut mumun gövdesi önceki mumun tüm gövdesini sarar
Kırmızı mum
Çok küçük veya hiç fitil/gölge yok
Tam gövde, güçlü düşüş sinyali
Ana strateji: Manuel girilen fiyattan alım yapar ve trailing stop ile çıkış yapar
Görsel uyarılar: Grafik üzerinde mum formasyonlarını işaretler
Alert/uyarılar: Pozisyon açılış/kapanış ve formasyonlar için uyarı oluşturur
Zaman filtresi: Sadece belirli bir tarihten sonra işlem yapar