Trading product for Doji Engulf Wskaźnik, image 1
Wskaźnik
3 pobrania
Wersja 1.0, Jul 2025
Windows, Mac
3
Bezpłatne instalacje

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;

}

}

}

Profil wskaźnika
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!
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
Supertrend
+4
Dynamic dual MA cloud indicator. Identifies trends, crossovers, and pullback entries in real time for any asset.
Wskaźnik
RSI
Forex
+7
Qualitative Quantitative Estimation
Wskaźnik
ATR
Engulfing
+3
Multi-timeframe Bias Alignment and Supply & Demand Zones Indicator.
Wskaźnik
Breakout
Institutional Flow Radar scans the chart for abnormal volume events and classifies them into two groups: Capital &Public
Wskaźnik
Prop
Forex
+13
🎯Automatically detects and visualizes classical chart patterns using multi-timeframe swing point analysis.
Wskaźnik
RSI
Indicator Stochastic With RSI
Wskaźnik
Candle Timer & Strength Panel for cTrader Description: Candle Timer & Strength Panel is an advanced, always-visible over
Wskaźnik
AI
ATR
+27
VolumeProfileSuite is an advanced and flexible Volume Profile indicator for cTrader.
Wskaźnik
SMC
Prop
+6
Automatically draws the Opening Range (High & Low) for Tokyo, London, and New York sessions. Configurable start times,
Wskaźnik
Key Levels
Market Structure
+1
HTF Candle Projector displays the current Higher Timeframe candle (4H or 1H) as a real projected candle LIVE..
Wskaźnik
BOS
Key Levels
+2
Maps bullish and bearish order block zones, CE levels and structure-based price action context.
Wskaźnik
SMC
Prop
+13
Tracks virgin levels. Lines vanish only after a candle closes beyond the high/low on your chosen timeframe.
Wskaźnik
AI
ATR
+27
An advanced VWAP with multi-VWAP (Daily/Weekly/Monthly/Anchored), click-to-anchor, configurable alerts, a stats panel,
Wskaźnik
ATR
A lightweight Multi Time Frame bias dashboard for quickly spotting market direction across multiple timeframes.
Wskaźnik
BOS
CHOCH
+3
Smart Money Concepts Pro v5.1 for cTrader is a structural market analysis indicator that identifies swings, BOS, CHoC
Wskaźnik
ATR
Prop
+7
An indicator that redefines ATR by applying a percentile-based filter giving traders a grounded view of volatility.
Wskaźnik
Forex
GBPUSD
+3
Support & resistance zones with measured hold rates and confidence intervals — evidence, not just lines on a chart.
Wskaźnik
AI
RSI
+7
Multi-asset screener with real-time RSI/volatility analysis, interactive dashboard, and color-coded trading signals.
3
Bezpłatne instalacje