present
Zarejestruj się i otrzymaj 50 $ zniżki na pierwszy zakup
Trading product for Doji Engulf Wskaźnik, image 1
Doji Engulf
Wskaźnik
3 pobrania
Wersja 1.0, Jul 2025
Windows, Mac
3
Bezpłatne instalacje

Opis

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

public double DojiSize { get; set; }


[Parameter("Współczynnik długiej świecy", DefaultValue = 0.7, MaxValue = 1, Step = 0.1)]

public double LongCandleRatio { get; set; }


[Parameter("Używać filtru wolumenu?", DefaultValue = false)]

public bool UseVolumeFilter { get; set; }


[Parameter("Okres średniej kroczącej wolumenu", DefaultValue = 24)]

public int VolumeMA { get; set; }


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

public int RSIPeriod { get; set; }


[Parameter("Współczynnik knota do korpusu", DefaultValue = 2.5, MinValue = 1.0, Step = 0.1)]

public double WickToBodyRatio { get; set; }


private MovingAverage volumeMA;

private RelativeStrengthIndex rsi;


[Output("Sygnał 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]; // Oznacz Doji na wykresie

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


// Podświetl maksimum i minimum świecy Doji za pomocą linii ciągłych rozciągających się na kolejne 3 świece

HighlightDojiHighLow(index, timeFrameNumber, label);

}


// Wykrywanie dywergencji SMT jest teraz stosowane do wszystkich ram czasowych

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


// Narysuj ciągłe linie poziome na maksimum i minimum świecy Doji rozciągające się na kolejne 3 świece

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;


// Dodaj numer ramy czasowej lub tekst etykiety obok niebieskiej linii

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

}


private void DetectSMTDivergence(int index)

{

// Sprawdź, czy obecne maksimum lub minimum tworzy dywergencję z 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)

{

// Dywergencja niedźwiedzia: Cena tworzy wyższe maksimum, RSI tworzy niższe maksimum

if (currentHigh > prevHigh && currentRSI < prevRSI)

{

// Oznacz dywergencję na wykresie unikalnym identyfikatorem dla tej ramy czasowej

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

}


// Dywergencja byka: Cena tworzy niższe minimum, RSI tworzy wyższe minimum

if (currentLow < prevLow && currentRSI > prevRSI)

{

// Oznacz dywergencję na wykresie unikalnym identyfikatorem dla tej ramy czasowej

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;


// Określ, czy obecna świeca ma mały korpus i długie knoty

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

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


// Określ, czy poprzednia świeca ma mały korpus i długie knoty

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

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


return currentHasLongWicks || prevHasLongWicks;

}

}

}

Podsumowanie

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.
Profil wskaźnika

Opinie klientów

0.0
Opinie: 0
Opinie klientów
Ten produkt nie ma jeszcze opinii. Wypróbowałeś(-aś) go już? Bądź pierwszy(-a) i powiedz o tym innym!

Dyskusja

Częste pytania

Produkty dostępne za pośrednictwem cTrader Store, w tym boty handlowe, wskaźniki i wtyczki, dostarczane są przez deweloperów zewnętrznych i udostępniane wyłącznie w celach informacyjnych oraz w celu zapewnienia dostępu technicznego. cTrader Store nie jest brokerem i nie zapewnia doradztwa inwestycyjnego, nie udziela spersonalizowanych rekomendacji ani nie gwarantuje przyszłych wyników.

Więcej od tego autora

Wskaźnik
The Session Golden Hours indicator is designed for serious traders looking to visualize high-probability

Możesz także polubić

Wskaźnik
EMA
AI-assisted
+1
Multi EMA Timeframes lets you stay on your chart and see the exact EMA from any timeframe you choose — up to 5 at once.
Wskaźnik
ATR
Key Levels
+1
Builds active 4H range as a zone, watches for a sweep beyond its High or Low, and signals when price closes back inside.
Wskaźnik
SMC
Grid
+19
Smart fractals + auto Fibonacci + dynamic S/R zones with HTF confluence & Bull/Bear bias panel. Institutional-grade.
Wskaźnik
ADX
ATR
+5
Configure, simulate, and analyze trading strategies with custom filters, multi-target exits, and detailed performance me
Wskaźnik
Imbalance
Fair Value Gap
+1
Multi-symbol, multi-timeframe Fair Value Gaps in one panel.
Logo „KANDIKA HEAT MAP”
Najwyżej oceniane
4.6
(5)
$19
Wskaźnik
Color-Based Market Pressure & Volatility Visualizer The Kandika Heatmap Indicator
Wskaźnik
ATR
RSI
+5
Advanced Anchored VWAP for cTrader: volatility bands, real‑time alerts & customizable session resets.
Wskaźnik
ATR
RSI
+6
📊Zones Supply & Demand: Identifies key price levels with high volume concentration, marking Supply/Demand Zones & Marke
Wskaźnik
ATR
Prop
+13
HCCC MTF (Hurst Cycle Composite Channel), Designed for Semi-Automated Trading, Interactive MTF Dashboard
Wskaźnik
ATR
RSI
+8
The Candle Pressure Index is a powerful, user-friendly indicator that reveals hidden market pressure inside candles.
Wskaźnik
ATR
MSS
+5
Advanced market structure and institutional cycle mapper with visual reference cards and entry alerts
Wskaźnik
Crypto
Signal
+3
Candlestick Signal Finder: cTrader indicator that automatically detects and color-codes key Japanese candlestick pattern
Wskaźnik
EMA
Outlines the first candle of the real session open for indices, forex & crypto. Auto DST, HTF candle panel & EMA.
Wskaźnik
Forex
The cTrader Market Sessions Alerts Indicator marks global sessions, highlights key levels, and sends real-time alerts.
Wskaźnik
Smart Liquidity Zones PRO auto-detects liquidity grabs, wicks, traps & manipulations — trade like the smart money.
Wskaźnik
MACD
Signal
Enhance your trading strategy with our customizable TradingViewMACD indicator. Optimize and elevate your market analysis
Wskaźnik
Forex
Crypto
+3
Enhance Pitchfork & Price Channels in cTrader with customizable Equidistant and Fibonacci levels.
Wskaźnik
Imbalance
Key Levels
+5
Smart Money Concepts (SMC) indicator with real-time Fair Value Gap (FVG) boxes, $50 round numbers, and live market HUD.

Cena

3
Bezpłatne instalacje