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

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

"Supply&Demand" ๋กœ๊ณ 
์ธ๊ธฐ
4.8
(5)
$19
/
$20
์ง€ํ‘œ
RSI
MACD
+1
Precision Supply & Demand zones indicatorโ€”automatically plots key buy/sell areas on your chart for smarter entries.
์ง€ํ‘œ
AI
SMC
+19
ZigZag Pro โ€” Advanced swing detection with ATR threshold, fractal confirmation, and colored segments. Clean market
์ง€ํ‘œ
ATR
Volume
+3
Fibonacci trend signals on closed bars, with an ATR stop, up to four targets and a break-even ladder.
์ง€ํ‘œ
Forex
BTCUSD
+4
๐Ÿš€ HALF TREND Indicator - The Ultimate Trend Following System ๐Ÿš€
์ง€ํ‘œ
Prop
Forex
+4
This is an indicator that can alert you about trendlines, horizontal lines and vertical lines.
์ง€ํ‘œ
ATR
Wedge
+2
Strong Supertrend Turn Market Movement into a Clear Map Market analysis
์ง€ํ‘œ
SMC
Prop
+5
ADVANCED ICT + ADR + AWR SUITE PRO (The Ultimate All-in-One Toolkit for Price Action Traders)
"QX Heatmap Scanner" ๋กœ๊ณ 
์ธ๊ธฐ
4.3
(3)
$19
/
$38
์ง€ํ‘œ
ATR
RSI
+19
Multi-timeframe heatmap scoring Direction, Strength & Volatility at a glance!
"FVG Scanner" ๋กœ๊ณ 
์‹ ๊ทœ
5.0
(1)
$25
์ง€ํ‘œ
Imbalance
Fair Value Gap
+1
Multi-symbol, multi-timeframe Fair Value Gaps in one panel.
์ง€ํ‘œ
The Weekly Daily Levels indicator shows the OHLC, and mid-point prices for the previous day and week.
์ง€ํ‘œ
ATR
BOS
+5
Opening ranges, dynamic trend channels, and multi-scale breakout/retest analysis for clear intraday chart decisions.
์ง€ํ‘œ
ADX
ATR
+5
Configure, simulate, and analyze trading strategies with custom filters, multi-target exits, and detailed performance me
์ง€ํ‘œ
Doji
Wedge
+5
Angora Pattern Recognition is a cTrader indicator that finds, draws and tracks classic chart patterns automatically.
์ง€ํ‘œ
Forex
Crypto
+4
Pro Heikin Ashi Visual Overlay โ€“ Clean Trend Visualization
์ง€ํ‘œ
ATR
RSI
+5
Binary Options Signals Pro โ€“ Precision Trading at Your Fingertips
"Vwap Bands" ๋กœ๊ณ 
์ตœ๊ณ  ํ‰์ 
4.5
(4)
$19
/
$29
์ง€ํ‘œ
VWAP
Moving Average
Vwap Bands it is highly sought after by professional traders because it includes Standard Deviation Bands
์ง€ํ‘œ
RSI
MACD
+2
Identify potential reversal points in the market by detecting candles with exceptionally long upper or lower wicks
์ง€ํ‘œ
RSI
Forex
+4
A powerful RSI-based hunter that detects early reversals and snipes market turning points with high accuracy.

๊ฐ€๊ฒฉ

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