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]; // Отметить додзи на графике

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
Отзывы покупателей
У этого продукта еще нет отзывов. Уже попробовали его? Поделитесь впечатлениями!

Обсуждение

Частые вопросы

Продукты, доступные в cTrader Store, включая торговых ботов, индикаторы и плагины, предоставляются сторонними разработчиками и доступны исключительно в информационных и технических целях. cTrader Store не является брокером и не предоставляет инвестиционные консультации, персональные рекомендации или какие-либо гарантии будущей доходности.

Больше от этого автора

Индикатор
The Session Golden Hours indicator is designed for serious traders looking to visualize high-probability

Вам также может понравиться

Логотип продукта "Stochastic Momentum Index"
Высокий рейтинг
4.2
(4)
$19
/
$20
Индикатор
Prop
Forex
+14
Stochastic Momentum Index (SMI) for cTrader optional higher-timeframe source, and clear overbought/oversold levels.
Индикатор
EMA
Volume
+4
Advanced volume‑profile tool with delta, HVN/LVN zones, and precise POC‑based trade signals.
Индикатор
Forex
BTCUSD
+10
6-stage IIR filter trend indicator with colored line segments, reversal signals, alerts, and entry arrows.
Индикатор
RSI
Forex
+6
🚀 QQEX Trinity Indicator - The Ultimate Trading Filter 🚀
Индикатор
Forex
BTCUSD
+8
Bayesian theory** to forecast a future price while providing **uncertainty ranges** that represent upper and lower bound
Индикатор
ADX
ATR
+5
Multi-indicator confluence HUD & real-time backtest engine to detect trend alignment and filter high-probability setups.
Индикатор
Prop
Forex
+5
Transform your approach to trading with our innovative Pivot Point Indicator.
Индикатор
ATR
RSI
+19
Multi-timeframe heatmap scoring Direction, Strength & Volatility at a glance!
Индикатор
ATR
BOS
+3
Fair Value Gaps with Multi-Timeframe.
Логотип продукта "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
Индикатор
Prop
Forex
+2
⚔️ JPY Samurai Breakout Pro — Professional Breakout Indicator for cTrader ⚔️
Логотип продукта "FVG Scanner"
Новинка
5.0
(1)
$25
Индикатор
Imbalance
Fair Value Gap
+1
Multi-symbol, multi-timeframe Fair Value Gaps in one panel.
Индикатор
This is an indicator that displays candlesticks from different timeframes. This is the demo version with a 30-day expira
Индикатор
Key Levels
Every major liquidity level drawn for you: PDH/PDL, PWH/PWL, PMH/PML and more. Same price on every timeframe. Free.
Индикатор
ZigZag Pro – Multi-Swing Indicator for cTrader Description: ZigZag Pro is a powerful and fully customizable swing indica
Логотип продукта "QX TradeDecision"
Высокий рейтинг
4.5
(4)
$20
/
$22
Индикатор
ATR
Flag
+5
Decision panel with Buy/Sell scores, market bias, setup quality, trading cost and clear trade reasons.
Индикатор
Signal
Trades Opening Range Breakouts Indicator with dynamic stops/targets adapting to market volatility.
Логотип продукта "ADT_bigCandles"
Высокий рейтинг
4.7
(4)
$20
/
$40
Индикатор
ATR
Prop
Outside Candle Detector: Highlights major candles/zones with ATR filter & pattern labels. By Avydel Talbo, prop trader.

Цена

3
Бесплатные установки