present
Inscrivez-vous et bénéficiez d'une remise de 50 $ sur votre premier achat
Trading product for Doji Engulf Indicateur, image 1
Doji Engulf
Indicateur
3 téléchargements
Version 1.0, Jul 2025
Windows, Mac
3
Installations gratuites

Description

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("Taille du Doji", DefaultValue = 0.05, MinValue = 0.01, Step = 0.01)]

public double DojiSize { get; set; }


[Parameter("Ratio de la Bougie Longue", DefaultValue = 0.7, MaxValue = 1, Step = 0.1)]

public double LongCandleRatio { get; set; }


[Parameter("Utiliser le filtre de volume ?", DefaultValue = false)]

public bool UseVolumeFilter { get; set; }


[Parameter("Période de la Moyenne Mobile du Volume", DefaultValue = 24)]

public int VolumeMA { get; set; }


[Parameter("Période du RSI", DefaultValue = 14)]

public int RSIPeriod { get; set; }


[Parameter("Ratio Mèche-Corps", DefaultValue = 2.5, MinValue = 1.0, Step = 0.1)]

public double WickToBodyRatio { get; set; }


private MovingAverage volumeMA;

private RelativeStrengthIndex rsi;


[Output("Signal Doji", 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]; // Marquer le Doji sur le graphique

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


// Mettre en évidence le plus haut et le plus bas de la bougie Doji avec des lignes pleines qui s'étendent sur les 3 bougies suivantes

HighlightDojiHighLow(index, timeFrameNumber, label);

}


// La détection de divergence SMT est maintenant appliquée à toutes les périodes

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


// Dessiner des lignes horizontales pleines au plus haut et au plus bas de la bougie Doji s'étendant sur les 3 bougies suivantes

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;


// Ajouter le numéro de la période ou le texte de l'étiquette à côté de la ligne bleue

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

}


private void DetectSMTDivergence(int index)

{

// Vérifier si le plus haut ou le plus bas actuel forme une divergence avec le RSI

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)

{

// Divergence baissière : le prix fait un plus haut plus élevé, le RSI fait un plus haut plus bas

if (currentHigh > prevHigh && currentRSI < prevRSI)

{

// Marquer la divergence sur le graphique avec un identifiant unique pour cette période

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

}


// Divergence haussière : le prix fait un plus bas plus bas, le RSI fait un plus bas plus élevé

if (currentLow < prevLow && currentRSI > prevRSI)

{

// Marquer la divergence sur le graphique avec un identifiant unique pour cette période

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;


// Déterminer si la bougie actuelle a un petit corps et de longues mèches

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

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


// Déterminer si la bougie précédente a un petit corps et de longues mèches

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

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


return currentHasLongWicks || prevHasLongWicks;

}

}

}

Résumé

Résumé IA
Doji Engulf is a technical indicator designed for use on multiple higher timeframes including 1 hour, 4 hours, and daily charts. It identifies Doji candlestick patterns—candles with small bodies relative to their range—and validates these signals by checking volume filters and relative strength index (RSI) conditions. The indicator marks detected Doji candles on the chart with orange diamond icons and highlights their high and low prices with solid horizontal lines extending over subsequent candles. It also detects Smart Money Technique (SMT) divergences by comparing price highs and lows with RSI values, marking bullish and bearish divergences with green up arrows and red down arrows respectively. Parameters allow customization of Doji size, candle body ratios, volume filtering, volume moving average period, RSI period, and wick-to-body ratio. The indicator supports multiple timeframes from 15 minutes up to monthly, adapting its analysis accordingly. It provides visual cues directly on the trading chart to assist traders in identifying potential reversal or continuation signals based on Doji patterns and divergence analysis.
Profil de l'indicateur

Avis clients

0.0
Avis : 0
Avis clients
Il n'y a pas encore d'avis sur ce produit. Vous l'avez déjà essayé ? Soyez le premier à en parler aux autres !

Discussion

Questions fréquentes

Les produits disponibles sur cTrader Store, notamment les bots de trading, les indicateurs et les plug-ins, sont fournis par des développeurs tiers et mis à disposition à titre informatif et à des fins d'accès technique uniquement. cTrader Store n'est pas un courtier et ne fournit aucun conseil en investissement, aucune recommandation personnelle ni aucune garantie quant aux performances futures.

Plus de cet auteur

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

Vous pourriez aussi aimer

Indicateur
Master RSI reversals with Parabolic SAR precision! Get real-time alerts for high-probability trend changes.
Indicateur
Forex
Crypto
+3
Volume distribution analysis with Market Profile TPO integration.
Indicateur
ATR
BOS
+5
Clean Smart Money zones with filtered FVGs, confirmed BOS, Order Blocks, and automatic mitigation tracking.
Indicateur
AI
SMC
+5
Coloring trendline/ Colored Trendline / Color Trendline
Indicateur
ATR
RSI
+17
Turn data into precision trades with AlphaTrend Pro Max — advanced trend, signal & structure analysis in one.
Indicateur
Forex
BTCUSD
+10
6-stage IIR filter trend indicator with colored line segments, reversal signals, alerts, and entry arrows.
Indicateur
ATR
BTCUSD
+5
Multi-pole Gaussian filter channel with dynamic color, Reduced Lag & Fast Response modes. Port of DonovanWall's original
Indicateur
RSI
RSI on the main chart with 45/55 momentum levels, overbought/oversold levels, averaged RSI, and multi-timeframe support.
Indicateur
Prop
Forex
+9
Average Cost Price helps you keep track of your open positions on the chart. In doing so, it provides lines and explanat
Indicateur
ADX
ATR
+1
Indicador de Sinais Visuais para Spotcrude (WTI) ou SpotBrent com filtros de tendência, operacional de 10 e 15 minutos.
Indicateur
SMC
VWAP
+16
It calculates Anchored VWAP and StdDev bands from a user-defined start date for cTrader charts.
Indicateur
AI
ATR
+26
SR Commander — Multi Timeframe Edition. See where the big money draws the line. Trade on your timeframe. Think on theirs
Indicateur
RSI
Breakout
+1
"Identify key market zones and visualize support/resistance from multiple timeframes on a single chart.
Indicateur
AI
ATR
+27
The "Market Temperature" Moving Average -Turn Your MA Into a Live Market Temperature Line
Indicateur
ADX
ATR
+5
Scored breakouts of sloped pivot trendlines: four filters on the break bar, ATR stop, 1:1 / 1:2 / 1:3 targets, alerts.
Indicateur
ATR
MACD
+15
BrickAlgo TrendPulse is an advanced technical analysis tool that combines multiple indicators with filterin mechanisms.
Indicateur
Prop
Forex
+11
Market Structure Shift – Professional Market Structure Oscillator
Indicateur
MSS
Volume
+3
Rejection-based volume profile with tiered heat zones, POC levels and a fully draggable anchor on cTrader.

Prix

3
Installations gratuites