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

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
Signal
Supertrend
Multi-symbol multi-timeframe SuperTrend panel with watchlist, one-click jump, and alerts.
Wskaźnik
BOS
CHOCH
+5
MyZTrade High TF candle is a multi-timeframe visualisation tool that overlays completed higher-timeframe candles.
Wskaźnik
Signal
Dark Poll Signal Indicator
Wskaźnik
RSI
EURUSD
+2
It identifies areas of market imbalance (Fair Value Gaps or FVGs) and projects them on the chart in a smart way
Wskaźnik
Indices
Multi-Timeframe ADX Trend Dots & Arrows
Wskaźnik
AI
SMC
+9
Identifies market trends (-10 to +10) using HMA with volume confirmation. Includes customizable alerts.
Wskaźnik
Forex
Market Session V2: Full Control. colors, history, session/text toggles, font size. Elevate your strategy!
Wskaźnik
ADX
MACD
+3
Displays Boshi Chanlun Structure Indicator chart structures for supported Pepperstone cTrader symbols and timeframes.
Wskaźnik
Signal
Breakout
+1
Bolliger Bands + Hamster-Coder™ Timeframe Decoupling
Wskaźnik
AI
ATR
+20
Buy and Sell Signals
Wskaźnik
Forex
BTCUSD
+11
Auto-detects Bullish/Bearish Engulfing patterns to spot trend reversals. Real-time alerts, custom colors, all symbols.
Wskaźnik
EMA
RSI
+5
Keep your focus with smart on-chart notes. Features Markdown, 6 themes, and auto-save per symbol for manual trading.When
Wskaźnik
EMA
A visual signal backtester that simulates trades directly on your chart and scores strategy performance.
Wskaźnik
BOS
MSS
+5
One indicator, full ICT/SMC picture — structure, OBs, FVGs, liquidity, Premium/Discount — with graded PRIME/SETUP signal
Wskaźnik
ATR
EMA
+2
Dense EMA rainbow + Pro tools & a tested engine — get more from your EMAs, your research base for EMA bots.
Wskaźnik
ATR
SMC
+18
Precision SMC tool with HTF sweeps, MSS confirmation & smart FVG detection for high-probability reversals.
Wskaźnik
RSI
Breakout
+1
"Identify key market zones and visualize support/resistance from multiple timeframes on a single chart.
Wskaźnik
ATR
Forex
+11
Elliott Wave 2 indicator with Markov probability analysis and a confidence score to assess Wave 3 continuation quality.

Cena

3
Bezpłatne instalacje