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
BOS
Fair Value Gap
+1
ICT Quarterly Theory indicator — color-coded Q1–Q4 session zones with smart entry signals and real-time alerts.
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
AI
SMC
+9
Identifies market trends (-10 to +10) using HMA with volume confirmation. Includes customizable alerts.
Indikator
ATR
RSI
+6
Adaptive trend channel using linear regression and Pearson correlation for dynamic support, resistance, and trends.
Indikator
Prop
Forex
+13
🐠 Coral Filter X Pro turns trend detection into a simple, repeatable workflow 🐠
Indikator
Block Liquidity,indicator.Block Order, Liquids Stops, Signal Sentiment,signal correctio.
Indikator
Volume
Key Levels
+2
Volume Profile Pro - A Highly Customizable and Lightweight Volume Profile
Indikator
ATR
Forex
+6
UT Bot Alerts Nova: Advanced trend-following indicator using ATR for signals. Precise entries/exits.
Indikator
Forex
BTCUSD
+10
Automate your price action analysis with stable, time-anchored Support & Resistance zones that adapt to breakouts in rea
Indikator
OBV
Volume
+2
Weis Wave indicator based on the original work of David Weis.
Indikator
Prop
Forex
+4
Point. Click. Smart Risk.
Indikator
Key Levels
Supply & Demand
+2
Institutional Levels Pro is an essential tool for traders who rely on price action and institutional market structure.
Indikator
Forex
BTCUSD
+4
This indicator is designed to perform multiple non-linear regression analysis using four independent variables.
Indikator
MSS
Market Structure
NY HTF Candles is a precision panel designed specifically for institutional traders
Indikator
ADX
ATR
+5
Lass System: Non-repainting M5 cTrader indicator with winrate dashboard & multi-asset alerts (Gold, BTC, EURUSD).
Indikator
SMC
Prop
+14
Right-anchored cTrader Volume Profile with VAH/VAL/POC, LVZ, top volume+EMA, themes, and fast, readable visuals.
Indikator
Forex
BTCUSD
+11
Master trends with Smart ADX: MTF Scanner, precise Buy/Sell signals, Divergence & clear Exit targets 🎯
Indikator
ATR
EMA
+3
The UTBot you know from TradingView — now on cTrader with confirmed signals, VWAP, EMA and session overlays.
3
Instal gratis