Logo "Doji Engulf"
Indikator
3 muat turun
Versi 1.0, Jul 2025
Windows, Mac
3
Pemasangan percuma

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

public double DojiSize { get; set; }


[Parameter("Nisbah Lilin Panjang", DefaultValue = 0.7, MaxValue = 1, Step = 0.1)]

public double LongCandleRatio { get; set; }


[Parameter("Gunakan Penapis Isipadu?", DefaultValue = false)]

public bool UseVolumeFilter { get; set; }


[Parameter("Tempoh Purata Pergerakan Isipadu", DefaultValue = 24)]

public int VolumeMA { get; set; }


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

public int RSIPeriod { get; set; }


[Parameter("Nisbah Wick-ke-Badan", DefaultValue = 2.5, MinValue = 1.0, Step = 0.1)]

public double WickToBodyRatio { get; set; }


private MovingAverage volumeMA;

private RelativeStrengthIndex rsi;


[Output("Isyarat 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]; // Tandakan Doji pada carta

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


// Sorot tinggi dan rendah lilin Doji dengan garis pepejal yang melanjut ke 3 lilin berikutnya

HighlightDojiHighLow(index, timeFrameNumber, label);

}


// Pengesanan Divergensi SMT kini digunakan pada semua bingkai masa

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 = "M";

return true;

}

else if (TimeFrame == TimeFrame.Monthly)

{

timeFrameNumber = 720;

label = "W";

return true;

}


return false;

}


private void HighlightDojiHighLow(int dojiIndex, int timeFrameNumber, string label)

{

double dojiHigh = MarketSeries.High[dojiIndex];

double dojiLow = MarketSeries.Low[dojiIndex];


// Lukis garis mendatar pepejal pada tinggi dan rendah lilin Doji yang melanjut ke 3 lilin berikutnya

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;


// Tambah nombor bingkai masa atau teks label di sebelah garis biru

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

}


private void DetectSMTDivergence(int index)

{

// Semak jika tinggi atau rendah semasa membentuk divergensi dengan 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)

{

// Divergensi Bearish: Harga membuat tinggi lebih tinggi, RSI membuat tinggi lebih rendah

if (currentHigh > prevHigh && currentRSI < prevRSI)

{

// Tandakan divergensi pada carta dengan pengecam unik untuk bingkai masa ini

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

}


// Divergensi Bullish: Harga membuat rendah lebih rendah, RSI membuat rendah lebih tinggi

if (currentLow < prevLow && currentRSI > prevRSI)

{

// Tandakan divergensi pada carta dengan pengecam unik untuk bingkai masa ini

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;


// Tentukan jika lilin semasa mempunyai badan kecil dan wick panjang

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

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


// Tentukan jika lilin sebelumnya mempunyai badan kecil dan wick panjang

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

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


return currentHasLongWicks || prevHasLongWicks;

}

}

}

Profil indikator
0.0
Ulasan: 0
Ulasan pelanggan
Belum ada ulasan untuk produk ini. Anda sudah mencuba produk tersebut? Jadilah yang pertama untuk berkongsi pendapat anda!
Produk yang tersedia melalui cTrader Store, termasuk bot dagangan, indikator dan plugin, disediakan oleh pembangun pihak ketiga dan diberikan akses untuk tujuan maklumat dan teknikal sahaja. cTrader Store bukan broker dan tidak memberikan nasihat pelaburan, syor peribadi atau sebarang jaminan prestasi masa hadapan.

Lebih banyak produk daripada penulis ini

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

Anda juga mungkin suka

Indikator
BOS
CHOCH
+3
Smart Money Concepts Pro v5.1 for cTrader is a structural market analysis indicator that identifies swings, BOS, CHoC
Indikator
EMA
SMA
+3
MACD indicator modeled after TradingView, featuring a 4-color momentum histogram, sound/pop-up crossover alerts.
Indikator
SMC
Prop
+15
Market Profile TPO for cTrader — full auction logic, IB, POC, VA zones, histogram and O/X markers with time
Indikator
VWAP
Volume
+4
Volume Profile + VWAP with Standard Deviations
Indikator
RSI
MACD
+5
WaveTrend Oscillator with signal line, spread histogram and OB/OS levels for precise momentum trading.
Indikator
AI
SMC
+7
The ultimate tool for Price Action and ICT. High, Low and Mid levels for days, weeks Inc. NY Midnight and Custom Range.
Indikator
EMA
RSI
+2
Advanced TDI indicator with Shark Fin signals, chart arrows, MTF RSI, divergence detection and smart alerts.
Indikator
Prop
Forex
+10
Support and Resistance Line Indicator with Higher Timeframe Filter
Indikator
BB Breakout Oscillator with alerts! Spot trend reversals using Bollinger Bands. Bullish/Bearish crossovers Alerts.
Indikator
Forex
Crypto
+5
🚀 Automated Elliott Wave & Fibonacci tool for cTrader. Spot trends, corrections & retracements fast.
Indikator
SMC
Prop
+16
Multi-Time Frame Candlesticks FVG with BSL/SSL Premium Suite
Indikator
AI
ATR
+27
Nadaraya-Watson Envelope Indicator
Indikator
BOS
Fibonacci
+4
Automatically draws major trading sessions, killzones, and SMC daily liquidity targets directly on your cTrader charts.
Indikator
SMC
Prop
+13
Killzone Session With VWAP – Precision Meets Price Action
Indikator
Breakout
FlexSR auto‑detects pivot highs/lows to plot dynamic support & resistance lines Features customizable styling and option
Indikator
RSI‑powered robot for high‑volatility scalping, no fuss.
Indikator
ATR
Market Structure
+3
Support Resistance Toolkit
3
Pemasangan percuma