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

Podsumowanie 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.
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
Prop
Forex
+4
Pivot Points Standard — All-in-One Multi-Timeframe Pivot Indicator for cTrader
Wskaźnik
ATR
BOS
+5
Clean Smart Money zones with filtered FVGs, confirmed BOS, Order Blocks, and automatic mitigation tracking.
Wskaźnik
ATR
Volume
+3
Fibonacci trend signals on closed bars, with an ATR stop, up to four targets and a break-even ladder.
Wskaźnik
Daily Pivot Points plots key support and resistance levels to guide precise trading decisions.
Wskaźnik
Signal
Dark Poll Signal Indicator.liquidity leakage,precedes the great movement, accumulation, distribution
Wskaźnik
SMA
Forex
+3
An indicator that accurately shows the trend direction. A vital tool for clear trading decisions.
Wskaźnik
CHOCH
Inducement
+5
TradeLens - Frame the Trade. Refine the Entry. Two Timeframes. One Decision.
Wskaźnik
ATR
Volume
+1
The UT Bot identify potential trend reversals and momentum shifts.
Wskaźnik
Forex
BTCUSD
+13
Multi-symbol Inside Bar Scanner with dashboard & breakout alerts
Wskaźnik
🎯 Order Block Detector - Smart Trading: Identifica bloques de órdenes clave en cTrader para un trading más inteligente.
Logo „ORB v1.1”
Popularne
4.0
(4)
$25
Wskaźnik
Breakout
Opening Range Breakout v1.1 - Visuals + Stats
Wskaźnik
Indices
this indicator shows previous day high low and closed with precise manner.
Wskaźnik
ATR
BOS
+5
Know how strong each Supertrend flip is: scored BUY/SELL, structure stop + 3 targets, live win-rate dashboard, alerts.
Wskaźnik
AI
ATR
+19
QX SessionBox ORB: Session boxes + ORB levels + clean dashboard with optional closed-candle breakout signals.
Wskaźnik
Forex
Crypto
+3
ICT Advanced Swings Indicator – Multi-Timeframe Precision
Wskaźnik
Prop
Forex
+5
Traders Panel: Scan 15 pairs across 5 timeframes. Live heatmap, strength rankings and best setups in one panel.
Wskaźnik
MSS
Volume
+3
Rejection-based volume profile with tiered heat zones, POC levels and a fully draggable anchor on cTrader.
Wskaźnik
Risk Dashboard
Drawdown Monitor
Which session is live right now, without doing the math?

Cena

3
Bezpłatne instalacje