How to add a pop-up alert to this indicator?
Created at 10 Oct 2017, 08:45
How to add a pop-up alert to this indicator?
10 Oct 2017, 08:45
Could you please help me add a pop-up alert to this indicator? For example, when the color of dots changes, there will be a pop-up alert with sound, just like the built-in price alert. Thank you:)
using System; using cAlgo.API; using System.Runtime.InteropServices; using cAlgo.API.Indicators; namespace cAlgo.Indicators { [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class SuperProfit : Indicator { // Alert [DllImport("user32.dll", CharSet = CharSet.Unicode)] public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); [Parameter(DefaultValue = 35)] public int DllPeriod { get; set; } [Parameter(DefaultValue = 1.7)] public double Period { get; set; } [Parameter(DefaultValue = MovingAverageType.Weighted)] public MovingAverageType MaType { get; set; } [Parameter()] public DataSeries Price { get; set; } [Parameter(DefaultValue = 5)] public int StopLoss { get; set; } [Parameter(DefaultValue = 20)] public int TakeProfit { get; set; } [Output("Up", PlotType = PlotType.Points, Thickness = 4)] public IndicatorDataSeries UpSeries { get; set; } [Output("Down", PlotType = PlotType.Points, Color = Colors.Red, Thickness = 4)] public IndicatorDataSeries DownSeries { get; set; } private DateTime _openTime; private MovingAverage _movingAverage1; private MovingAverage _movingAverage2; private MovingAverage _movingAverage3; private IndicatorDataSeries _dataSeries; private IndicatorDataSeries _trend; protected override void Initialize() { _dataSeries = CreateDataSeries(); _trend = CreateDataSeries(); var period1 = (int)Math.Floor(DllPeriod / Period); var period2 = (int)Math.Floor(Math.Sqrt(DllPeriod)); _movingAverage1 = Indicators.MovingAverage(Price, period1, MaType); _movingAverage2 = Indicators.MovingAverage(Price, DllPeriod, MaType); _movingAverage3 = Indicators.MovingAverage(_dataSeries, period2, MaType); } public override void Calculate(int index) { if (index < 1) return; _dataSeries[index] = 2.0 * _movingAverage1.Result[index] - _movingAverage2.Result[index]; _trend[index] = _trend[index - 1]; if (_movingAverage3.Result[index] > _movingAverage3.Result[index - 1]) _trend[index] = 1; else if (_movingAverage3.Result[index] < _movingAverage3.Result[index - 1]) _trend[index] = -1; if (_trend[index] > 0) { UpSeries[index] = _movingAverage3.Result[index]; if (_trend[index - 1] < 0.0) { UpSeries[index - 1] = _movingAverage3.Result[index - 1]; if (IsLastBar) { var stopLoss = MarketSeries.Low[index - 1] - StopLoss * Symbol.PipSize; var takeProfit = MarketSeries.Close[index] + TakeProfit * Symbol.PipSize; var entryPrice = MarketSeries.Close[index - 1]; if (MarketSeries.OpenTime[index] != _openTime) { _openTime = MarketSeries.OpenTime[index]; DisplayAlert("Buy signal", takeProfit, stopLoss, entryPrice); } } } DownSeries[index] = double.NaN; } else if (_trend[index] < 0) { DownSeries[index] = _movingAverage3.Result[index]; if (_trend[index - 1] > 0.0) { DownSeries[index - 1] = _movingAverage3.Result[index - 1]; if (IsLastBar) { var stopLoss = MarketSeries.High[index - 1] + StopLoss * Symbol.PipSize; var takeProfit = MarketSeries.Close[index] - TakeProfit * Symbol.PipSize; var entryPrice = MarketSeries.Close[index - 1]; if (MarketSeries.OpenTime[index] != _openTime) { _openTime = MarketSeries.OpenTime[index]; DisplayAlert("Sell signal", takeProfit, stopLoss, entryPrice); } } } UpSeries[index] = double.NaN; } } protected void DisplayAlert(string tradyTypeSignal, double takeProfit, double stopLoss, double entryPrice) { string entryPricetext = entryPrice != 0.0 ? string.Format(" at price {0}", Math.Round(entryPrice, 4)) : ""; string takeProfitText = takeProfit != 0.0 ? string.Format(", TP on {0}", Math.Round(takeProfit, 4)) : ""; string stopLossText = stopLoss != 0.0 ? string.Format(", SL on {0}", Math.Round(stopLoss, 4)) : ""; var alertMessage = string.Format("{0} {1} {2} {3} {4}", tradyTypeSignal, entryPricetext, takeProfitText, stopLossText, Symbol.Code); MessageBox(new IntPtr(0), alertMessage, "Trade Signal", 0); } } }
Replies
Traderfofever
10 Oct 2017, 09:31
( Updated at: 23 Jan 2024, 13:16 )
RE:
afhacker said:
Try this: [/algos/show/1425]
Thank you, I will try this:)
@Traderfofever
afhacker
10 Oct 2017, 09:10 ( Updated at: 15 Jan 2024, 14:51 )
Try this: [/algos/show/1425]
@afhacker