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

Discussion

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 !

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

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

Vous pourriez aussi aimer

Pro Heikin Ashi Visual Overlay – Clean Trend Visualization
Market structure with BOS and CHoCH, order blocks, and retest buy/sell arrows with entry, stop and two targets
This indicator displays the OrderBlocks of the current and higher timeframe, made by ICT's student.
The EMA Trend Simple is a trend-following tool designed for simplicity and visual clarity.
Trend direction, chart signals, reversal zones and volume tools in one configurable indicator.
Logo de "DrbcLevels"
4.0
(4)
$19
/
$29
Premium Discount Levels - Professional Dealing Range Zones with Draggable Lines, Alerts, Wartermark & Backtest Mode.
A cutting‑edge trading indicator that fuses AI and mathematics with adaptive logic to classify market regimes.
Upgrade to ATR-RMA! Experience the precise ATR using Relative Moving Average for accurate volatility analysis in cTrader
Super Wick detects powerful candle rejections: fractal long-wicks, HTF resonance zones, and a WSI gauge.
Overbought Oversold Indicator
Logo de "Stochastic RSI PRO"
4.6
(6)
$28
/
$40
Unlock Stochastic RSI PRO in cTrader! Overlay RSI, highlight zones, and identify divergences with customizable settings.
Most used candle patterns. (1 candle, 2 candles and 3 candles patterns) and Marubozu. Bonus Fibo Risk control.
is a trend-following indicator designed to provide a clear view of market direction, momentum, and strength
The KDJ oscillator display consists of 3 lines (K, D and J - hence the name of the display) and 2 levels.
Session volume profiles from tick volume: POC, value area high and low, and naked POCs extended until touched.
Gold Emperor: AI-driven XAUUSD dominance. Dynamic pivots, matrix trend logic, and institutional shield protection.
Multi-indicator confluence HUD & real-time backtest engine to detect trend alignment and filter high-probability setups.
Volume profile key levels - POC, value area, volume peaks and troughs - with break, rejection and retest signals

Prix

3
Installations gratuites