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

public double DojiSize { get; set; }


[Parameter("Long Candle Ratio", DefaultValue = 0.7, MaxValue = 1, Step = 0.1)]

public double LongCandleRatio { get; set; }


[Parameter("Use Volume Filter?", DefaultValue = false)]

public bool UseVolumeFilter { get; set; }


[Parameter("Volume Moving Average Period", DefaultValue = 24)]

public int VolumeMA { get; set; }


[Parameter("RSI Period", DefaultValue = 14)]

public int RSIPeriod { get; set; }


[Parameter("Wick-to-Body Ratio", 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]; // ์ฐจํŠธ์— ๋„์ง€ ํ‘œ์‹œ

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


// ๋‹ค์Œ 3๊ฐœ์˜ ์บ”๋“ค์— ๊ฑธ์ณ ํ™•์žฅ๋˜๋Š” ์‹ค์„ ์œผ๋กœ ๋„์ง€ ์บ”๋“ค์˜ ๊ณ ๊ฐ€์™€ ์ €๊ฐ€๋ฅผ ๊ฐ•์กฐ ํ‘œ์‹œ

HighlightDojiHighLow(index, timeFrameNumber, label);

}


// SMT ๋‹ค์ด๋ฒ„์ „์Šค ๊ฐ์ง€๋Š” ์ด์ œ ๋ชจ๋“  ํƒ€์ž„ํ”„๋ ˆ์ž„์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค

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


// ๋‹ค์Œ 3๊ฐœ์˜ ์บ”๋“ค์— ๊ฑธ์ณ ํ™•์žฅ๋˜๋Š” ๋„์ง€ ์บ”๋“ค์˜ ๊ณ ๊ฐ€์™€ ์ €๊ฐ€์— ์‹ค์„  ์ˆ˜ํ‰์„  ๊ทธ๋ฆฌ๊ธฐ

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;


// ํŒŒ๋ž€ ์„  ์˜†์— ํƒ€์ž„ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ ๋˜๋Š” ๋ผ๋ฒจ ํ…์ŠคํŠธ ์ถ”๊ฐ€

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

}


private void DetectSMTDivergence(int index)

{

// ํ˜„์žฌ ๊ณ ๊ฐ€ ๋˜๋Š” ์ €๊ฐ€๊ฐ€ 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)

{

// ์•ฝ์„ธ ๋‹ค์ด๋ฒ„์ „์Šค: ๊ฐ€๊ฒฉ์€ ๋” ๋†’์€ ๊ณ ๊ฐ€๋ฅผ ๋งŒ๋“ค๊ณ  RSI๋Š” ๋” ๋‚ฎ์€ ๊ณ ๊ฐ€๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค

if (currentHigh > prevHigh && currentRSI < prevRSI)

{

// ์ด ํƒ€์ž„ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ๊ณ ์œ  ์‹๋ณ„์ž๋กœ ์ฐจํŠธ์— ๋‹ค์ด๋ฒ„์ „์Šค ํ‘œ์‹œ

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

}


// ๊ฐ•์„ธ ๋‹ค์ด๋ฒ„์ „์Šค: ๊ฐ€๊ฒฉ์€ ๋” ๋‚ฎ์€ ์ €๊ฐ€๋ฅผ ๋งŒ๋“ค๊ณ  RSI๋Š” ๋” ๋†’์€ ์ €๊ฐ€๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค

if (currentLow < prevLow && currentRSI > prevRSI)

{

// ์ด ํƒ€์ž„ํ”„๋ ˆ์ž„์— ๋Œ€ํ•œ ๊ณ ์œ  ์‹๋ณ„์ž๋กœ ์ฐจํŠธ์— ๋‹ค์ด๋ฒ„์ „์Šค ํ‘œ์‹œ

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;


// ํ˜„์žฌ ์บ”๋“ค์ด ์ž‘์€ ๋ชธํ†ต๊ณผ ๊ธด ๊ผฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํŒ๋‹จ

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

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


// ์ด์ „ ์บ”๋“ค์ด ์ž‘์€ ๋ชธํ†ต๊ณผ ๊ธด ๊ผฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํŒ๋‹จ

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

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


return currentHasLongWicks || prevHasLongWicks;

}

}

}

์š”์•ฝ

AI ์š”์•ฝ
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.
์ง€ํ‘œ ํ”„๋กœํ•„

๊ณ ๊ฐ ๋ฆฌ๋ทฐ

0.0
๋ฆฌ๋ทฐ: 0
๊ณ ๊ฐ ๋ฆฌ๋ทฐ
์ด ์ƒํ’ˆ์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ๊ฐ€ ์•„์ง ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์‚ฌ์šฉํ•ด ๋ณด์…จ๋‚˜์š”? ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ€์žฅ ๋จผ์ € ์†Œ๊ฐœํ•ด ์ฃผ์„ธ์š”!

์ƒ๋‹ด

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ(FAQ)

ํŠธ๋ ˆ์ด๋”ฉ ๋ด‡, ์ง€ํ‘œ, ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ cTrader Store์—์„œ ์ œ๊ณต๋˜๋Š” ์ƒํ’ˆ์€ ์ œ3์ž ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด ์ œ๊ณต๋˜๋ฉฐ, ์ด๋Š” ๋‹จ์ˆœํžˆ ์ •๋ณด ๋ฐ ๊ธฐ์ˆ ์  ์ ‘๊ทผ์„ ๋ชฉ์ ์œผ๋กœ ์ œ๊ณต๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. cTrader Store๋Š” ์ค‘๊ฐœ์ธ์ด ์•„๋‹ˆ๋ฉฐ, ํˆฌ์ž ์กฐ์–ธ, ๊ฐœ์ธ๋ณ„ ์ถ”์ฒœ ๋˜๋Š” ํ–ฅํ›„ ์„ฑ๊ณผ์— ๋Œ€ํ•œ ์–ด๋– ํ•œ ๋ณด์žฅ๋„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์„ฑ์ž์˜ ์ƒํ’ˆ ๋” ๋ณด๊ธฐ

์ง€ํ‘œ
Theย Session Golden Hoursย indicator is designed for serious traders looking to visualize high-probability

์ข‹์•„ํ•˜์‹ค ๋งŒํ•œ ๋‹ค๋ฅธ ํ•ญ๋ชฉ

์ง€ํ‘œ
ATR
Signal
An intelligent chandelier-style trailing stop that flips when price breaks the opposite stop.
์ง€ํ‘œ
Prop
Forex
+13
Decision System Indicator According to Cosmic Laws
์ง€ํ‘œ
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.
์ง€ํ‘œ
BOS
MSS
+5
WinSMC is an overlay SMC indicator for cTrader. It helps you visually identify!
์ง€ํ‘œ
Crypto
Signal
+3
Candlestick Signal Finder: cTrader indicator that automatically detects and color-codes key Japanese candlestick pattern
์ง€ํ‘œ
ATR
Forex
+11
Elliott Wave 2 indicator with Markov probability analysis and a confidence score to assess Wave 3 continuation quality.
์ง€ํ‘œ
Daily Pivot Points plots key support and resistance levels to guide precise trading decisions.
"Inside Candle" ๋กœ๊ณ 
์ตœ๊ณ  ํ‰์ 
4.5
(4)
$19
/
$20
์ง€ํ‘œ
ATR
RSI
+16
Highlight market consolidation zones instantly with this Inside Candle indicator โ€” precise, clean, and powerful.
์ง€ํ‘œ
Key Levels
Support & Resistance
Renko Multi-Level Grid Overlay draws configurable horizontal grid lines on any chart type, for multi-timeframe analysis.
"vwap" ๋กœ๊ณ 
์ธ๊ธฐ
4.8
(5)
$26
์ง€ํ‘œ
VWAP
Forex
+2
Custom VWAP Indicator for cTrader
์ง€ํ‘œ
Forex
Crypto
+6
The ultimate candlestick suite is here to help you detect most of the candlestick patters that exist today.
"Perfect Entry Price" ๋กœ๊ณ 
์ตœ๊ณ  ํ‰์ 
5.0
(4)
$20
/
$35
์ง€ํ‘œ
AI
SMC
+11
Perfect Entry Price designed to help traders identify the most accurate and reliable price levels for market entries
์ง€ํ‘œ
ATR
RSI
+4
RSI bands drawn on price, confluence-scored BUY/SELL signals, an ATR stop with three targets
"THIS BURNS JP225 INDICATOR" ๋กœ๊ณ 
์ตœ๊ณ  ํ‰์ 
4.5
(6)
$25
/
$30
์ง€ํ‘œ
AI
Signal
+1
๐Ÿ”ฅ THIS BURNS JP225 INDICATOR โ€“ Professional Trading Signals
์ง€ํ‘œ
CHOCH
Inducement
+5
TradeLens - Frame the Trade. Refine the Entry. Two Timeframes. One Decision.
์ง€ํ‘œ
MSS
Volume
+3
Rejection-based volume profile with tiered heat zones, POC levels and a fully draggable anchor on cTrader.
์ง€ํ‘œ
Candlestick pattern detector lite version
์ง€ํ‘œ
ATR
BOS
+5
Know how strong each Supertrend flip is: scored BUY/SELL, structure stop + 3 targets, live win-rate dashboard, alerts.

๊ฐ€๊ฒฉ

3
๋ฌด๋ฃŒ ์„ค์น˜