Trading product for Doji Engulf Indikator, image 1
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
Market Structure
Automatic market structure detection with HH, HL, LH and LL labels directly on the chart.
Indikator
Moving Average
An Indicator made for scalping. Shows you the Sniper movement on Chart with the colour signals.
Indikator
VWAP
Volume
+3
Track hidden trading activities to be on the right side of the market.
Indikator
Prop
Forex
+4
Personal trade tracker for a single symbol. Clear net profit summary — FreshNet, ManageNet, DayNet, WTDNet, MTDNet.
Indikator
Signal
USDJPY
See USD demand in one line—Composite OBV fuses six major FX pairs into a clear momentum gauge.
Indikator
Key Levels
Market Structure
+1
HTF Candle Projector displays the current Higher Timeframe candle (4H or 1H) as a real projected candle LIVE..
Indikator
Prop
Forex
+12
A clean, real-time risk HUD designed to prevent prop firm account failure and protect your challenge account.
Indikator
MSS
Key Levels
+2
Maps equal highs, equal lows and active liquidity pools directly on your cTrader chart.
Indikator
RSI
Signal
+2
Dynamic circles visualize price's volatility position. Like RSI for market overextension & stretch. Quantify context.
Indikator
Volume
Key Levels
+1
Tape Reading indicator ,book and flow analysis
Indikator
Forex
BTCUSD
+4
This indicator is designed to perform multiple non-linear regression analysis using four independent variables.
Indikator
BOS
CHOCH
+3
Smart Money Concepts Pro v5.1 for cTrader is a structural market analysis indicator that identifies swings, BOS, CHoC
Indikator
AI
ATR
+27
Nadaraya-Watson Envelope Indicator
Indikator
MSS
Market Structure
+2
Smart structural zones with pivot detection, ATR adaptation, sound alerts, and auto-color UI for precise entries.
Indikator
AI
Grid
+17
BORIS Easy Trend: Relax & scalp with 6-TF alignment. Clear BUY/SELL signals & movable UI/HUD make trading effortless.
Indikator
Key Levels
Liquidity Grab
+3
Visual market context dashboard showing bias states, CE positioning, session status and sweep context.
Indikator
ATR
BOS
+3
Identifies structure shifts, Supply & Demand zones, and delivers accurate BOS signals for clearer market movement.
Indikator
Prop
Forex
+9
Trend Sniper — session-based tool highlighting live session ranges and adaptive Custom line.
3
Pemasangan percuma