Logo "Doji Engulf"
Indikator
3 unduhan
Versi 1.0, Jul 2025
Windows, Mac
3
Instal gratis

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

public double DojiSize { get; set; }


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

public double LongCandleRatio { get; set; }


[Parameter("Gunakan Filter Volume?", DefaultValue = false)]

public bool UseVolumeFilter { get; set; }


[Parameter("Periode Rata-Rata Bergerak Volume", DefaultValue = 24)]

public int VolumeMA { get; set; }


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

public int RSIPeriod { get; set; }


[Parameter("Rasio Sumbu ke Tubuh", DefaultValue = 2.5, MinValue = 1.0, Step = 0.1)]

public double WickToBodyRatio { get; set; }


private MovingAverage volumeMA;

private RelativeStrengthIndex rsi;


[Output("Sinyal 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]; // Tandai Doji pada grafik

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


// Sorot tinggi dan rendah lilin Doji dengan garis padat yang memanjang selama 3 lilin berikutnya

HighlightDojiHighLow(index, timeFrameNumber, label);

}


// Deteksi Divergensi SMT sekarang diterapkan pada semua kerangka waktu

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


// Gambar garis horizontal padat pada tinggi dan rendah lilin Doji yang memanjang selama 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;


// Tambahkan nomor kerangka waktu 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)

{

// Periksa apakah tinggi atau rendah saat ini 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)

{

// Tandai divergensi pada grafik dengan pengenal unik untuk kerangka waktu 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)

{

// Tandai divergensi pada grafik dengan pengenal unik untuk kerangka waktu 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 apakah lilin saat ini memiliki tubuh kecil dan sumbu panjang

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

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


// Tentukan apakah lilin sebelumnya memiliki tubuh kecil dan sumbu 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. Sudah mencobanya? Jadilah pemberi ulasan pertama!
Produk-produk yang tersedia melalui cTrader Store, termasuk bot trading, indikator, dan plugin, disediakan oleh pengembang pihak ketiga serta hanya ditujukan untuk akses teknis dan informasi. cTrader Store bukan broker dan tidak menyediakan saran investasi, rekomendasi pribadi, atau jaminan apa pun tentang kinerja di masa mendatang.

Produk lain dari penulis ini

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

Anda mungkin juga suka

Indikator
AI
ATR
+27
Market Cipher B
Indikator
SMC
Forex
+15
Session-based range tool projecting adaptive Gann & Fib levels with auto bias flip and extensions.
Indikator
ATR
Forex
+3
Lightweight adaptive filter with dynamic bands. Clean, noise-free trend structure.
Indikator
MACD
Prop
+14
Customize the MACD! Choose colors, get real-time tick updates, and see crossover points for enhanced trading precision.
Indikator
Signal
๐Ÿ”น Trend-Reversal-Indicator for cTrader ๐Ÿ”น The ultimate Renko chart tool!
Indikator
Prop
Forex
+13
๐Ÿ  Coral Filter X Pro turns trend detection into a simple, repeatable workflow ๐Ÿ 
Indikator
Volume
Order Block
+1
Elevate your market analysis with the Aggression Delta Volume Profile, a premium, institutional-grade order flow utility
Indikator
RSI
Forex
+6
๐Ÿš€ QQEX Trinity Indicator - The Ultimate Trading Filter ๐Ÿš€
Indikator
ATR
RSI
+3
๐Ÿš€ Specialized algorithm is designed to confirm entry and exit points with precision ๐ŸŽฏ
Indikator
Robust Cumulative delta,Atr and imbalance indicator.
Indikator
AI
Signal
+1
๐Ÿ”ฅ THIS BURNS JP225 INDICATOR โ€“ Professional Trading Signals
Indikator
AI
ATR
+12
The standard Relative Strength Index (RSI), RSI & Signal Cloud, Smart Volatility Filter (ATR), On-Chart Info Dashboard
Indikator
ADX
ATR
+5
Signal Quality Score - 0-100 filter combining RSI, Volume, ATR, Trend Strength & Alignment. Works on ANY chart type.
Indikator
ATR
EMA
+3
The UTBot you know from TradingView รขย€ย” now on cTrader with confirmed signals, VWAP, EMA and session overlays.
Indikator
ATR
SMC
+16
Draw a rectangle, label it RRL or RRS. Instant position size, risk, reward targets and full R:R breakdown.
Indikator
BOS
MSS
+5
WinSMC is an overlay SMC indicator for cTrader. It helps you visually identify!
Indikator
Fisher Transform with smoothing. Spot reversals and cycles with precision. Great for any market, any timeframe.
Indikator
MACD
Signal
Enhance your trading strategy with our customizable TradingViewMACD indicator. Optimize and elevate your market analysis
3
Instal gratis