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
Liquidity Grab
Liquidity Sweep
+1
CRT Sweep Tracker is an advanced panel for Candle Range Theory (CRT) traders to track HTF sweeps and manage live trades.
Indikator
Signal
🔹 Trend-Reversal-Indicator for cTrader 🔹 The ultimate Renko chart tool!
Indikator
Volume
Order Block
+4
Volume Profile with fixed period, custom range and buy/sell pressure.
Indikator
Supertrend
Adaptive MA anchored to structural trend changes — no fixed period. Dual Supertrend + swing detection.
Indikator
ATR
RSI
+6
PrimeTrend: ATR trendline detects reversals, plots entry/SL/3 targets. Tune params (speed vs. robustness). Backtest +
Indikator
ATR
RSI
+6
💹 Define a price channel 📈 and determine trend direction (bullish 🟢 or bearish 🔴).
Indikator
RSI
Forex
+10
INDICATOR,LIQUIDITY POOLS,ACCURATE SIGNAL, NO DELAY,80% PROBABILITY
Indikator
BB Breakout Oscillator with alerts! Spot trend reversals using Bollinger Bands. Bullish/Bearish crossovers Alerts.
Indikator
Color-Based Market Pressure & Volatility Visualizer The Kandika Heatmap Indicator
Indikator
Forex
BTCUSD
+11
Master trends with Smart ADX: MTF Scanner, precise Buy/Sell signals, Divergence & clear Exit targets 🎯
Indikator
Forex
Crypto
+3
Day of Week Indicator for cTrader
Indikator
AI
BOS
+4
Golden Boom and Crash Spike Detector is a trading tool designed for Crash 300 and Boom 300 indices on M1 Timeframe.
Indikator
Prop
Forex
+4
Universal multi time frame 'Moving Average' indicator with extended features
Indikator
Breakout
Allow trader to visualize Support & Resistance across different timeframes,give trader an overview of the current market
Indikator
Imbalance
Inside Bar
+3
A clean and powerful Smart Money Concepts tool combining Fair Value Gaps, Previous Daily High/Low, Inside/Outside bar
Indikator
AI
ATR
+27
The Professional “All-in-One” Trading Suite (buy and sell indicator)
Indikator
ADX
ATR
+5
Lass System: Non-repainting M5 cTrader indicator with winrate dashboard & multi-asset alerts (Gold, BTC, EURUSD).
Indikator
ATR
Volume
+1
The UT Bot identify potential trend reversals and momentum shifts.
3
Instal gratis