Trading product for Doji Engulf Indikator, image 1
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
🇫🇷 Visualisez vos sessions de marché et OPR d'un coup d’œil 🇬🇧 Visualize your market sessions & OPR at a glance !
Indikator
Prop
Forex
+3
Price Change Bundle 3-in-1 Levels • Bars • Histogram. Secret of Price Change
Indikator
The Multi-Timeframe Candle Indicator displays candles from multiple timeframes in one window, enhancing market analysis!
Indikator
AI
ATR
+27
Patter Scanner all Chart Let your chart tell you when patterns appear
Indikator
ATR
BOS
+3
Identifies structure shifts, Supply & Demand zones, and delivers accurate BOS signals for clearer market movement.
Indikator
MACD
Crypto
A simple tool to control market sessions. fixed the display on the weekend.
Indikator
Forex
BTCUSD
+8
The traditional Hull Moving Average with different colours based on the slope (direction) of the trend.
Indikator
ATR
CCI
+5
An institutional-grade trading system fusing triple hybrid moving averages, multi-oscillator momentum filters, Fair Valu
Indikator
Forex
Crypto
+5
Experience a new approach with amplitude-based momentum analysis. Smart Trend Detection That Adapts to Market Volatility
Indikator
BB Breakout Oscillator with alerts! Spot trend reversals using Bollinger Bands. Bullish/Bearish crossovers Alerts.
Indikator
ATR
EMA
+4
The FULL-MARKET-VIEW-DASHBOARD is a professional-grade trading suite for cTrader that eliminates market noise.
Indikator
MSS
Market Structure
+2
Smart structural zones with pivot detection, ATR adaptation, sound alerts, and auto-color UI for precise entries.
Indikator
Forex
cTrader Auto Support & Resistance detects key levels with Fibonacci analysis and sends real-time trading alerts.
Indikator
Prop
Forex
+12
Integrated Market Analysis: Volume Profile + Statistical Projection 🎯
Indikator
RSI
MACD
Unlock market insights with our Multi-Timeframe Market Levels indicator, enhancing your trading strategies effortlessly
Indikator
ATR
Engulfing
+3
Multi-timeframe Bias Alignment and Supply & Demand Zones Indicator.
Indikator
ATR
A lightweight Multi Time Frame bias dashboard for quickly spotting market direction across multiple timeframes.
Indikator
MACD
Prop
+14
Enhance MACD Histogram! Visualize bull and bear price changes with vibrant colors for clearer, more insightful trading.
3
Instal gratis