present
Registrieren Sie sich und erhalten Sie $50 Rabatt auf Ihren ersten Kauf
Trading product for Doji Engulf Indikator, image 1
Doji Engulf
Indikator
3 downloads
Version 1.0, Jul 2025
Windows, Mac
3
Kostenlose Installationen

Beschreibung

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-Größe", DefaultValue = 0.05, MinValue = 0.01, Step = 0.01)]

public double DojiSize { get; set; }


[Parameter("Verhältnis langer Kerzen", DefaultValue = 0.7, MaxValue = 1, Step = 0.1)]

public double LongCandleRatio { get; set; }


[Parameter("Volumenfilter verwenden?", DefaultValue = false)]

public bool UseVolumeFilter { get; set; }


[Parameter("Periode des gleitenden Volumendurchschnitts", DefaultValue = 24)]

public int VolumeMA { get; set; }


[Parameter("RSI-Periode", DefaultValue = 14)]

public int RSIPeriod { get; set; }


[Parameter("Docht-zu-Körper-Verhältnis", DefaultValue = 2.5, MinValue = 1.0, Step = 0.1)]

public double WickToBodyRatio { get; set; }


private MovingAverage volumeMA;

private RelativeStrengthIndex rsi;


[Output("Doji-Signal", 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]; // Markiere den Doji im Chart

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


// Hebe das Hoch und Tief der Doji-Kerze mit durchgehenden Linien hervor, die sich über die nächsten 3 Kerzen erstrecken

HighlightDojiHighLow(index, timeFrameNumber, label);

}


// SMT-Divergenz-Erkennung wird jetzt auf alle Zeitrahmen angewendet

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];


// Zeichne durchgehende horizontale Linien am Hoch und Tief der Doji-Kerze, die sich über die nächsten 3 Kerzen erstrecken

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;


// Füge neben der blauen Linie die Zeitrahmennummer oder den Label-Text hinzu

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

}


private void DetectSMTDivergence(int index)

{

// Prüfe, ob das aktuelle Hoch oder Tief eine Divergenz mit dem RSI bildet

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)

{

// Bärische Divergenz: Preis macht ein höheres Hoch, RSI macht ein niedrigeres Hoch

if (currentHigh > prevHigh && currentRSI < prevRSI)

{

// Markiere die Divergenz im Chart mit einer eindeutigen Kennung für diesen Zeitrahmen

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

}


// Bullische Divergenz: Preis macht ein niedrigeres Tief, RSI macht ein höheres Tief

if (currentLow < prevLow && currentRSI > prevRSI)

{

// Markiere die Divergenz im Chart mit einer eindeutigen Kennung für diesen Zeitrahmen

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;


// Bestimme, ob die aktuelle Kerze einen kleinen Körper und lange Dochte hat

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

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


// Bestimme, ob die vorherige Kerze einen kleinen Körper und lange Dochte hat

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

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


return currentHasLongWicks || prevHasLongWicks;

}

}

}

Zusammenfassung

Indikatorprofil

Kundenbewertungen

0.0
Bewertungen: 0
Kundenbewertungen
Bisher gibt es keine Bewertungen für dieses Produkt. Haben Sie es schon ausprobiert? Dann können Sie die erste Person sein, die andere darüber informiert!

Diskussion

Häufig gestellte Fragen (FAQ)

Über den cTrader Store verfügbare Produkte, einschließlich Handelsbots, Indikatoren und Plugins, werden von externen Entwicklern bereitgestellt und nur zu Informations- und technischen Zugriffszwecken verfügbar gemacht. cTrader Store ist kein Broker und erbringt keine Anlageberatung, persönlichen Empfehlungen oder eine Garantie für zukünftige Performance.

Mehr von diesem Autor

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

Das könnte Sie auch noch interessieren

Indikator
RSI
Breakout
+1
Dynamically adjusts regression channels based on ZigZag extremes, resetting when price breaks bands to track real trends
Indikator
ATR
RSI
+5
Binary Options Signals Pro – Precision Trading at Your Fingertips
Indikator
Forex
Indices
+1
Professional Fair Value Gaps with multitimeframe spot on
Indikator
Liquidity Grab
Supply & Demand
+1
Fisher Transform for cTrader with 2002/2004 calculation modes, trigger line, zero line and optional alerts.
Indikator
CandleCounterAlex – Candle Cycle Counter with Colors and Adjustable Position.
Indikator
SMC
Prop
+14
Right-anchored cTrader Volume Profile with VAH/VAL/POC, LVZ, top volume+EMA, themes, and fast, readable visuals.
Indikator
Forex
BTCUSD
+5
SMA Cross Signal – Simple Moving Average Crossover with Visual Alerts (FREE)
Indikator
ATR
Volume
+5
Order blocks with measured hold-rate stats and confidence scoring — not just zones on a chart.
Indikator
ATR
Fibonacci
+1
Trading Clock Pro: An all-in-one market timing dashboard designed to help traders understand the market at one Spot.
Indikator
Shows BUY & SELL signals for 3 & 4 BAR PATTERN (Morning star/ Evening star). It is adjustable and it will SHOW ARROWS.
Indikator
Spread Filter
SpreadSync Entry Timer is a compact cTrader indicator that shows live spread and candle-close.
Indikator
XAUUSD
Professional Volume Profile Indicator - Shows volume distribution, POC, Value Areas & Buy/Sell pressure.
Indikator
Prop
Forex
+12
Identify and trade breakouts with Consolidation Zones! Visualize price consolidation areas for trading opportunities.
Indikator
RSI
Signal
+1
Multi-timeframe version of the Quantitative Qualitative Estimation (QQE) indicator.
Indikator
BOS
MSS
+5
One indicator, full ICT/SMC picture — structure, OBs, FVGs, liquidity, Premium/Discount — with graded PRIME/SETUP signal
Indikator
ADX
MACD
+3
Displays Boshi Chanlun Structure Indicator chart structures for supported Pepperstone cTrader symbols and timeframes.
Indikator
ATR
Prop
+5
Anchor volume profiles to pivots with POC, VAH, VAL and real-time insights for clearer trade decisions.
„ZigXRay“-Logo
Beste Ratings
4.6
(5)
$29
/
$49
Indikator
CHOCH
Key Levels
+5
ZigZag Market Structure Identifier - Multi-Layer Scanner: Convergent Pivot Detection, 4-TF Overlay & Naked Chart Mode.

Preis

3
Kostenlose Installationen