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é

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
AI
ATR
+27
The "Market Temperature" Moving Average -Turn Your MA Into a Live Market Temperature Line
Indicateur
AI
SMC
+5
Coloring trendline/ Colored Trendline / Color Trendline
Indicateur
AI
RSI
+7
Multi-asset screener with real-time RSI/volatility analysis, interactive dashboard, and color-coded trading signals.
Indicateur
Breakout
Institutional Flow Radar scans the chart for abnormal volume events and classifies them into two groups: Capital &Public
Indicateur
RSI
Forex
+6
🚀 QQEX Trinity Indicator - The Ultimate Trading Filter 🚀
Indicateur
Prop
Forex
+14
This Indicator will show you Direction, Distance, and Time;
Indicateur
ATR
Key Levels
+5
CPR indicator that actually predicts the day ahead: width percentile scoring for breakout-day detection
Indicateur
AI
Prop
+8
The EMA Trend Simple is a trend-following tool designed for simplicity and visual clarity.
Indicateur
Signal
Order Flow Market Depth Pro | Footprint & DOM
Indicateur
AI
ATR
+27
🔮 Smart Bar Predictor - Professional Volatility Forecasting Indicator
Indicateur
AI
SMC
+9
Identifies market trends (-10 to +10) using HMA with volume confirmation. Includes customizable alerts.
Indicateur
EMA
A visual signal backtester that simulates trades directly on your chart and scores strategy performance.
Indicateur
Signal
Supertrend
Supertrend Scanner – Track trends across assets & timeframes in real-time with alerts. Stay ahead, and trade smarter!
Logo de "vwap"
Populaire
4.8
(5)
$26
Indicateur
VWAP
Forex
+2
Custom VWAP Indicator for cTrader
Indicateur
Prop
Forex
+13
Identifies market compression zones and explosive Breakout moments using mathematical modeling.
Indicateur
Channel
Fibonacci
+5
Market maker levels from key price extremes — catch major reversals and corrections in one click. ver1.2
Indicateur
Volume
Key Levels
+4
Margin Zones its CME-based support/resistance levels from price extremes, helps traders spot entries and exits NKZ zones
Indicateur
RSI
Key Levels
+3
MARCs Multi-timeframe market dashboard with trend rows, RSI context, sessions, presets and optional chart levels.

Prix

3
Installations gratuites