"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
AI
Grid
+17
BORIS Easy Trend: Relax & scalp with 6-TF alignment. Clear BUY/SELL signals & movable UI/HUD make trading effortless.
Gösterge
Grid
Prop
+14
Visualize trends with Standard Deviation Channel! Display median, and add customizable upper/lower deviation channels.
Gösterge
Signal
Dark Poll Signal Indicator.liquidity leakage,precedes the great movement, accumulation, distribution
Gösterge
AI
ATR
+19
QX SessionBox ORB: Session boxes + ORB levels + clean dashboard with optional closed-candle breakout signals.
Gösterge
SMC
Forex
+9
Automatically identify and visualize Fair Value Gaps (FVGs) with entry zones, fill tracking, and customizable alerts.
Gösterge
Forex
Crypto
+3
MARainbow gives you the edge with four customizable moving averages—each color-coded for instant recognition.
Gösterge
Prop
Forex
+11
Ultimate Session Tool: Boxes, OR, KZs, PD Levels, Overlaps, Custom Lines & Names, Info Panel! Highly customizable 📉📈
Gösterge
Signal
🔹 Trend-Reversal-Indicator for cTrader 🔹 The ultimate Renko chart tool!
Gösterge
ATR
RSI
+18
Institutional liquidity map for XAUUSD. Spot stop hunts, find the next target, and get a full trade setup automatically.
Gösterge
BOS
VWAP
+4
Gold premiun XAUUSD Exclusive Real-Time Adaptive Intelligence
Gösterge
Forex
Enhance your trading strategy with automated detection and alerts for key chart patterns.
Gösterge
Volume
Order Block
+1
Elevate your market analysis with the Aggression Delta Volume Profile, a premium, institutional-grade order flow utility
Gösterge
Spread Filter
SpreadSync Entry Timer is a compact cTrader indicator that shows live spread and candle-close.
Gösterge
Inside Bar
Save time by lighting a candle to look within yourself in another temporality
Gösterge
Imbalance
AI-assisted
+4
Predict continuity or rejection on range bars. Plots a precise visual box to anticipate candle close price levels.
Gösterge
ATR
Prop
+6
🟢 Strength-ranked S/R zones with MTF levels and Pro labels. Nearest-zone band and HUD for faster, cleaner entries. 🔴
Gösterge
Forex
BTCUSD
+11
📈 Adaptive ALMA-Gaussian hybrid trend filter with precision smoothing and clear buy/sell signals.
Gösterge
Liquidity Grab
Liquidity Sweep
+1
CRT Sweep Tracker is an advanced panel for Candle Range Theory (CRT) traders to track HTF sweeps and manage live trades.
3
Ücretsiz yüklemeler