present
سجل واحصل على خصم 50 دولارًا على مشترياتك الأولى
Trading product for Doji Engulf مؤشر, image 1
Doji Engulf
مؤشر
3 التنزيلات
الإصدار 1.0، Jul 2025
Windows, Mac
3
التثبيتات المجانية

الوصف

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("حجم الدوجي", DefaultValue = 0.05, MinValue = 0.01, Step = 0.01)]

public double DojiSize { get; set; }


[Parameter("نسبة الشمعة الطويلة", DefaultValue = 0.7, MaxValue = 1, Step = 0.1)]

public double LongCandleRatio { get; set; }


[Parameter("استخدام فلتر الحجم؟", DefaultValue = false)]

public bool UseVolumeFilter { get; set; }


[Parameter("فترة المتوسط المتحرك للحجم", DefaultValue = 24)]

public int VolumeMA { get; set; }


[Parameter("فترة RSI", DefaultValue = 14)]

public int RSIPeriod { get; set; }


[Parameter("نسبة الفتيل إلى الجسم", DefaultValue = 2.5, MinValue = 1.0, Step = 0.1)]

public double WickToBodyRatio { get; set; }


private MovingAverage volumeMA;

private RelativeStrengthIndex rsi;


[Output("إشارة الدوجي", 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]; // Mark the Doji on the chart

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


// Highlight the high and low of the Doji candle with solid lines that extend over the next 3 candles

HighlightDojiHighLow(index, timeFrameNumber, label);

}


// SMT Divergence detection is now applied to all time frames

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


// Draw solid horizontal lines at the high and low of the Doji candle extending over the next 3 candles

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;


// Add time frame number or label text next to the blue line

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

}


private void DetectSMTDivergence(int index)

{

// Check if the current high or low forms a divergence with the 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)

{

// Bearish Divergence: Price makes a higher high, RSI makes a lower high

if (currentHigh > prevHigh && currentRSI < prevRSI)

{

// Mark the divergence on the chart with a unique identifier for this time frame

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

}


// Bullish Divergence: Price makes a lower low, RSI makes a higher low

if (currentLow < prevLow && currentRSI > prevRSI)

{

// Mark the divergence on the chart with a unique identifier for this time frame

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;


// Determine if the current candle has a small body and long wicks

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

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


// Determine if the previous candle has a small body and long wicks

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

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


return currentHasLongWicks || prevHasLongWicks;

}

}

}

الملخص

ملف تعريف المؤشر

تقييمات العملاء

0.0
التقييمات: 0
تقييمات العملاء
لا توجد تقييمات لهذا المنتج حتى الآن. هل جرَّبته بالفعل؟ كن أول من يخبر الآخرين!

مناقشة

الأسئلة الشائعة

يتم توفير المنتجات المتاحة من خلال cTrader Store، بما في ذلك روبوتات التداول والمؤشرات والإضافات، من قبل مطوري الطرف الثالث وإتاحتها لأغراض الوصول المعلوماتي والفني فقط. cTrader Store ليس وسيطًا ولا يقدم نصائح استثمارية أو توصيات شخصية أو أي ضمان للأداء المستقبلي.

المزيد من هذا المؤلف

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

قد يعجبك أيضًا

مؤشر
Signal
USDJPY
See USD demand in one line—Composite OBV fuses six major FX pairs into a clear momentum gauge.
مؤشر
Triangle
Double Top
+5
Know which liquidity sweeps are real. Auto-tracks EQH/EQL and confirms genuine reversals, not just broken levels.
مؤشر
ATR
Volume
+2
Heatmap Liquidity Zones Visualize volume-at-price, uncover hidden support/resistance, and track market liquidity in real
مؤشر
Wstęgi HTS 33 144 mobile
مؤشر
ATR
MSS
+5
Grades ICT Unicorn setups (Breaker Block + FVG confluence) into PRIME / SETUP / WATCH, with retest & RR targets.
مؤشر
VWAP
Volume
+4
Advanced Order Flow & Volume Profiling for cTrader. Unveil institutional footprints, Delta, and Anchored VWAPs.
مؤشر
ATR
BOS
+3
Fair Value Gaps with Multi-Timeframe.
مؤشر
RSI
Signal
+1
Multi-timeframe version of the Quantitative Qualitative Estimation (QQE) indicator.
شعار "Channel Breakout System"
الأعلى تقييمًا
4.2
(4)
$19
/
$30
مؤشر
ATR
RSI
+3
🚀 Specialized algorithm is designed to confirm entry and exit points with precision 🎯
مؤشر
SMC
Prop
+12
BoS ChoCH Pro,Strict Mode,False Breakout Filter,Average hit rate: 72-78%
مؤشر
AI
ATR
+26
MacD Custom Indicator-Multiple Time Frame
مؤشر
Indices
Breakout
+1
You can use the cTrader Pivot Points Pro indicator to find a good pullback entry in a trend
مؤشر
Forex
BTCUSD
+11
Volume Delta Oscillator Free Indicator
مؤشر
ATR
Key Levels
+5
CPR indicator that actually predicts the day ahead: width percentile scoring for breakout-day detection
مؤشر
Forex
Crypto
+5
ICT Order Block Advanced
مؤشر
AI
ATR
+27
Supertrend Indicator
مؤشر
Forex
Renko scalping indicator
مؤشر
ATR
Channel
+3
Catch trend with precision. BUY/SELL arrows, real-time dashboard, sound alerts and ATRchannel. Works on all markets.

السعر

3
التثبيتات المجانية