"Doji Engulf" logosu
Gösterge
3 i̇ndirmeler
Sürüm 1.0, Jul 2025
Windows, Mac
3
Ücretsiz yüklemeler

using cAlgo.API;

using cAlgo.API.Indicators;

using cAlgo.API.Internals;

using System;


namespace cAlgo.Indicators

{

[Indicator(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]

public class DojiStrategyIndicator : Indicator

{

[Parameter("Doji boyutu", DefaultValue = 0.05, MinValue = 0.01, Step = 0.01)]

public double DojiSize { get; set; }


[Parameter("Uzun Mum Oranı", DefaultValue = 0.7, MaxValue = 1, Step = 0.1)]

public double LongCandleRatio { get; set; }


[Parameter("Hacim Filtresi Kullanılsın mı?", DefaultValue = false)]

public bool UseVolumeFilter { get; set; }


[Parameter("Hacim Hareketli Ortalama Periyodu", DefaultValue = 24)]

public int VolumeMA { get; set; }


[Parameter("RSI Periyodu", DefaultValue = 14)]

public int RSIPeriod { get; set; }


[Parameter("Fitil-Gövde Oranı", DefaultValue = 2.5, MinValue = 1.0, Step = 0.1)]

public double WickToBodyRatio { get; set; }


private MovingAverage volumeMA;

private RelativeStrengthIndex rsi;


[Output("Doji Sinyali", Color = Colors.Orange, PlotType = PlotType.Points, Thickness = 2)]

public IndicatorDataSeries DojiSignal { get; set; }


protected override void Initialize()

{

if (UseVolumeFilter)

volumeMA = Indicators.MovingAverage(MarketSeries.TickVolume, VolumeMA, MovingAverageType.Simple);


rsi = Indicators.RelativeStrengthIndex(MarketSeries.Close, RSIPeriod);

}


public override void Calculate(int index)

{

double body = MarketSeries.Close[index] - MarketSeries.Open[index];

double range = MarketSeries.High[index] - MarketSeries.Low[index];

double abody = Math.Abs(body);

double ratio = abody / range;


bool isDoji = abody <= range * DojiSize;

bool goStar = isDoji && (!UseVolumeFilter || MarketSeries.TickVolume[index] > volumeMA.Result[index]);


if (goStar && IsHigherTimeFrame(out int timeFrameNumber, out string label))

{

DojiSignal[index] = MarketSeries.Close[index]; // Dojiyi grafikte işaretle

Chart.DrawIcon("Doji" + TimeFrame.ToString() + index, ChartIconType.Diamond, index, MarketSeries.Close[index], Color.Orange);


// Doji mumunun yüksek ve düşük seviyelerini sonraki 3 mum boyunca uzanan dolu çizgilerle vurgula

HighlightDojiHighLow(index, timeFrameNumber, label);

}


// SMT Uyumsuzluk tespiti artık tüm zaman dilimlerine uygulanıyor

DetectSMTDivergence(index);

}


private bool IsHigherTimeFrame(out int timeFrameNumber, out string label)

{

timeFrameNumber = 0;

label = string.Empty;


if (TimeFrame == TimeFrame.Minute15)

{

timeFrameNumber = 15;

label = "0.25";

return true;

}

else if (TimeFrame == TimeFrame.Minute30)

{

timeFrameNumber = 30;

label = "0.5";

return true;

}

else if (TimeFrame == TimeFrame.Minute45)

{

timeFrameNumber = 45;

label = "0.75";

return true;

}

else if (TimeFrame == TimeFrame.Hour)

{

timeFrameNumber = 1;

label = "1";

return true;

}

else if (TimeFrame == TimeFrame.Hour2)

{

timeFrameNumber = 2;

label = "48";

return true;

}

else if (TimeFrame == TimeFrame.Hour4)

{

timeFrameNumber = 4;

label = "4";

return true;

}

else if (TimeFrame == TimeFrame.Daily)

{

timeFrameNumber = 24;

label = "24";

return true;

}

else if (TimeFrame == TimeFrame.Weekly)

{

timeFrameNumber = 168;

label = "W";

return true;

}

else if (TimeFrame == TimeFrame.Monthly)

{

timeFrameNumber = 720;

label = "M";

return true;

}


return false;

}


private void HighlightDojiHighLow(int dojiIndex, int timeFrameNumber, string label)

{

double dojiHigh = MarketSeries.High[dojiIndex];

double dojiLow = MarketSeries.Low[dojiIndex];


// Doji mumunun yüksek ve düşük seviyelerinde sonraki 3 mum boyunca uzanan dolu yatay çizgiler çiz

Chart.DrawTrendLine("DojiHighLine" + TimeFrame.ToString() + dojiIndex, dojiIndex, dojiHigh, dojiIndex + 3, dojiHigh, Color.Blue, 2, LineStyle.Solid).IsInteractive = true;

Chart.DrawTrendLine("DojiLowLine" + TimeFrame.ToString() + dojiIndex, dojiIndex, dojiLow, dojiIndex + 3, dojiLow, Color.Red, 2, LineStyle.Solid).IsInteractive = true;


// Mavi çizginin yanına zaman dilimi numarası veya etiket metni ekle

Chart.DrawText("TimeFrameHigh" + TimeFrame.ToString() + dojiIndex, label, dojiIndex + 3, dojiHigh, Color.Green).IsInteractive = true;

}


private void DetectSMTDivergence(int index)

{

// Mevcut yüksek veya düşük seviyenin RSI ile uyumsuzluk oluşturup oluşturmadığını kontrol et

double currentHigh = MarketSeries.High[index];

double currentLow = MarketSeries.Low[index];


double prevHigh = MarketSeries.High[index - 1];

double prevLow = MarketSeries.Low[index - 1];


double currentRSI = rsi.Result[index];

double prevRSI = rsi.Result[index - 1];


bool isWickDivergence = IsWickDivergence(index, currentHigh, currentLow, prevHigh, prevLow);


if (isWickDivergence)

{

// Ayı Uyumsuzluğu: Fiyat daha yüksek bir zirve yapar, RSI daha düşük bir zirve yapar

if (currentHigh > prevHigh && currentRSI < prevRSI)

{

// Bu zaman dilimi için benzersiz bir tanımlayıcı ile uyumsuzluğu grafikte işaretle

Chart.DrawIcon("BearishDivergence" + TimeFrame.ToString() + index, ChartIconType.DownArrow, index, currentHigh, Color.Red);

}


// Boğa Uyumsuzluğu: Fiyat daha düşük bir dip yapar, RSI daha yüksek bir dip yapar

if (currentLow < prevLow && currentRSI > prevRSI)

{

// Bu zaman dilimi için benzersiz bir tanımlayıcı ile uyumsuzluğu grafikte işaretle

Chart.DrawIcon("BullishDivergence" + TimeFrame.ToString() + index, ChartIconType.UpArrow, index, currentLow, Color.Green);

}

}

}


private bool IsWickDivergence(int index, double currentHigh, double currentLow, double prevHigh, double prevLow)

{

double currentBody = Math.Abs(MarketSeries.Close[index] - MarketSeries.Open[index]);

double currentRange = currentHigh - currentLow;


double prevBody = Math.Abs(MarketSeries.Close[index - 1] - MarketSeries.Open[index - 1]);

double prevRange = prevHigh - prevLow;


// Mevcut mumun küçük gövdesi ve uzun fitilleri olup olmadığını belirle

bool currentHasLongWicks = (currentHigh - MarketSeries.Close[index]) > currentBody * WickToBodyRatio &&

(MarketSeries.Open[index] - currentLow) > currentBody * WickToBodyRatio;


// Önceki mumun küçük gövdesi ve uzun fitilleri olup olmadığını belirle

bool prevHasLongWicks = (prevHigh - MarketSeries.Close[index - 1]) > prevBody * WickToBodyRatio &&

(MarketSeries.Open[index - 1] - prevLow) > prevBody * WickToBodyRatio;


return currentHasLongWicks || prevHasLongWicks;

}

}

}

Gösterge profili
0.0
Değerlendirmeler: 0
Müşteri değerlendirmeleri
Bu ürün için henüz bir değerlendirme yok. Ürünü denediniz mi? O zaman ona dair görüşlerini paylaşan ilk kişi olun!
cTrader Store üzerinden erişilebilen işlem botları, göstergeler ve eklentiler gibi ürünler, üçüncü taraf sağlayıcılar tarafından sağlanır ve yalnızca bilgilendirme ve teknik erişim amaçlarıyla sunulur. cTrader Store bir broker değildir ve yatırım tavsiyesi, kişisel öneriler vermez veya gelecekteki performansı garanti etmez.

Bu oluşturanın diğer ürünleri

Gösterge
The Session Golden Hours indicator is designed for serious traders looking to visualize high-probability

Şunları da beğenebilirsiniz

Gösterge
Grid
Prop
+14
Visualize trends with Standard Deviation Channel! Display median, and add customizable upper/lower deviation channels.
Gösterge
ATR
Volume
+1
The UT Bot identify potential trend reversals and momentum shifts.
Gösterge
ATR
Volume
+2
Heatmap Liquidity Zones Visualize volume-at-price, uncover hidden support/resistance, and track market liquidity in real
Gösterge
Imbalance
Supertrend
+5
Colorea las velas automáticamente según los niveles máximos, mínimos y de cierre previos para definir tendencias.
Gösterge
ATR
EMA
+5
AlphaTrend Pro by LudwigICT
Gösterge
Indices
Custom ADX Indicator for precise trend analysis. المؤشر المخصص ADX لتحليل الاتجاه بدقة
Gösterge
Forex
Fibonacci
+2
Enhance your trading with customizable alerts and dynamic visual tools for trendlines, Fibonacci levels, and more.
Gösterge
Prop
Forex
+4
A precision-crafted indicator that compares current volume to its historical average for the same time of day.
Gösterge
Forex
Signal
+1
Great signal indicator, works with bollinger bands and heikin ashi candles! one of our latest innovations!
Gösterge
Forex
BTCUSD
+6
All-In-One solution for ICT's FVG IFVG ORDERBLOCK in advanced mode.
Gösterge
MACD
Key Levels
+2
Trend indicator with multi-timeframe filters, generating signals only on fully completed bricks & candles. No Repaint.
Gösterge
ATR
RSI
+15
Entropy is the scientific measure of disorder or uncertainty in a system
Gösterge
Imbalance
Inside Bar
+3
A clean and powerful Smart Money Concepts tool combining Fair Value Gaps, Previous Daily High/Low, Inside/Outside bar
Gösterge
ATR
Breaker Block
+5
Display your symbol, timeframe or custom text as a watermark on any chart position with full color and size control.
Gösterge
Prop
Forex
+13
🐠 Coral Filter X Pro turns trend detection into a simple, repeatable workflow 🐠
Gösterge
Prop
Forex
+13
A real-time tick imbalance analysis tool designed specifically for Tick Imbalance Bars Plugin*
Gösterge
SMC
Forex
+5
Detects Break of Structure (BOS) and Change of Character (CHOCH)
3
Ücretsiz yüklemeler