
Topics
Replies
afhacker
20 Aug 2019, 02:19
Yes, it's possible you can backtest a manual strategy on cTrader back tester with a cBot that allows you to execute and manage orders.
Take a look to our Manual strategy tester: https://www.algodeveloper.com/product/manual-strategy-tester/
@afhacker
afhacker
05 Aug 2019, 10:31
You can try Manual Strategy Tester: https://www.algodeveloper.com/product/manual-strategy-tester/
It's not free but there are other free alternatives on cTDN.
@afhacker
afhacker
11 Jun 2019, 09:46
( Updated at: 21 Dec 2023, 09:21 )
Now you can set the stop loss/take profit levels in price and risk percentage:
Free Download Trial Version: https://www.algodeveloper.com/product/manual-strategy-tester/
@afhacker
afhacker
25 May 2019, 11:52
Here is DMI on chart:
using cAlgo.API; using cAlgo.API.Indicators; using System; using System.Text; namespace cAlgo { [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class DmiOnChart : Indicator { #region Fields private readonly string _name = "DMI On Chart"; private Color _textColor; private HorizontalAlignment _textHorizontalAlignment; private VerticalAlignment _textVerticalAlignment; private DirectionalMovementSystem _dmi; private string _chartObjectNamesSuffix; #endregion Fields #region Parameters [Parameter("DMI Period", DefaultValue = 14)] public int DmiPeriod { get; set; } [Parameter("Text Color", DefaultValue = "Red")] public string TextColor { get; set; } [Parameter("Text Horizontal Alignment", DefaultValue = 0, MinValue = 0, MaxValue = 3)] public int TextHorizontalAlignment { get; set; } [Parameter("Text Vertical Alignment", DefaultValue = 1, MinValue = 0, MaxValue = 3)] public int TextVerticalAlignment { get; set; } #endregion Parameters #region Methods protected override void Initialize() { _chartObjectNamesSuffix = string.Format("{0}_{1}", DateTime.Now.Ticks, _name); _textColor = Color.FromName(TextColor); _textHorizontalAlignment = (HorizontalAlignment)TextHorizontalAlignment; _textVerticalAlignment = (VerticalAlignment)TextVerticalAlignment; _dmi = Indicators.DirectionalMovementSystem(DmiPeriod); } public override void Calculate(int index) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine(string.Format("ADX: {0}", Math.Round(_dmi.ADX.LastValue, 1))); stringBuilder.AppendLine(string.Format("DI-: {0}", Math.Round(_dmi.DIMinus.LastValue, 1))); stringBuilder.AppendLine(string.Format("DI+: {0}", Math.Round(_dmi.DIPlus.LastValue, 1))); Chart.DrawStaticText(_chartObjectNamesSuffix, stringBuilder.ToString(), _textVerticalAlignment, _textHorizontalAlignment, _textColor); } #endregion Methods } }
@afhacker
afhacker
17 Apr 2019, 13:38
( Updated at: 21 Dec 2023, 09:21 )
Now you can backtest your manual strategy on cTrader back tester.
Try our product: https://www.algodeveloper.com/product/manual-strategy-tester/
@afhacker
afhacker
12 Mar 2019, 12:04
Fractals indicator with Alert
Here is the Fractals indicator which I implemented my alert library on it: https://drive.google.com/open?id=11btllj6A4-HV04SEDKvofvdA7F3Cy9YD
using cAlgo.API; using cAlgo.API.Alert; namespace cAlgo.Indicators { [Indicator(IsOverlay = true, AccessRights = AccessRights.FullAccess)] public class Fractals : Indicator { #region Fields private int _lastAlertBar; #endregion Fields [Parameter(DefaultValue = 5, MinValue = 5)] public int Period { get; set; } [Parameter("Alert", DefaultValue = true)] public bool Alert { get; set; } [Output("Up Fractal", Color = Colors.Red, PlotType = PlotType.Points, Thickness = 5)] public IndicatorDataSeries UpFractal { get; set; } [Output("Down Fractal", Color = Colors.Blue, PlotType = PlotType.Points, Thickness = 5)] public IndicatorDataSeries DownFractal { get; set; } public override void Calculate(int index) { if (index < Period) return; DrawUpFractal(index); DrawDownFractal(index); cAlgo.API.Alert.Models.Configuration.Current.Tracer = Print; } private void DrawUpFractal(int index) { int period = Period % 2 == 0 ? Period - 1 : Period; int middleIndex = index - period / 2; double middleValue = MarketSeries.High[middleIndex]; bool up = true; for (int i = 0; i < period; i++) { if (middleValue < MarketSeries.High[index - i]) { up = false; break; } } if (up) { UpFractal[middleIndex] = middleValue; TriggerAlert(index, TradeType.Sell); } } private void DrawDownFractal(int index) { int period = Period % 2 == 0 ? Period - 1 : Period; int middleIndex = index - period / 2; double middleValue = MarketSeries.Low[middleIndex]; bool down = true; for (int i = 0; i < period; i++) { if (middleValue > MarketSeries.Low[index - i]) { down = false; break; } } if (down) { DownFractal[middleIndex] = middleValue; TriggerAlert(index, TradeType.Buy); } } private void TriggerAlert(int index, TradeType tradeType) { if (!IsLastBar || index == _lastAlertBar || !Alert) { return; } _lastAlertBar = index; string comment = tradeType == TradeType.Buy ? "Up" : "Down"; Notifications.ShowPopup(TimeFrame, Symbol, tradeType, "Fractals"); } } }
The code isn't written by me, I just added the alerting part.
@afhacker
afhacker
06 Mar 2019, 17:56
RE:
matt_graham_92@hotmail.com said:
Ahmad, I can't thank you enough for your tremendous efforts in creating an alert for every new bar, and every new bar of color change, absolutely indcredible work! You have just given the entire cTrader community an alert notification via your alert library indicator a way to see at what time each renko bar has opened/closed. I find that amazing! A very powerful tool. I am very grateful that you were able to update this alert in a timely fashion so that it has no more bugs and works flawlessly! All the pop-up, sound alert, e-mail, and telegram alerts for mobile, it truely is a high quality alert indicator powered with the renko bar alerts, Its awesome!
What I'm trying to use this for is to be alerted upon a new bar so that I can go check my chart(s) and see if the new bar has determined a crossover for my HMA or not, and then I have to keep checking continuously every new bar until the HMA (Hull Forcast custom cTrader indicator) proceeds to make the crossover, and then again, repeated.. Check every new bar until cross over.... And well it gets a bit tiresome, when I don't actually need an alert for every new bar printed, but more so an alert for every new dot color change - every new dot of a different color, either red or white dot.. on the HullForcast (HMA custom indicator for cTrader) indicator. Which can be found here with code. https://ctrader.com/algos/indicators/show/1696
Now, I know I have already messaged you about this on your site in the livechat, and you told me $30USD for the alert indicator that will notify me upon every new dot of a different color change. That is a great deal, very fair and I would simply have already just paid for it if I had $30USD, I still will pay for it, I just can't buy it right now, I don't have any income, so I can't just get $30 even though its only $30. I dont even have $30 right now and haven't for months. I am curious if the alert for every dot color change of the HMA, if the notification will also come via your alert library indicator? If so, is it an add on to the HMA indicator, and the 2 indicators will work simultaneously with one another, or do you add the alert library indicator to the HMA, so that it is 1 indicator? Much like the New Renko Bar Alert you have created. Because I noticed that the HMA(Hullforcast) does already have an alert notification (for dot color change), but problem is that its only a sound alert, no pop up, nothing.. so its impossible to receive the alert when not at the desk. When looking at your Alert Popup window indicator, It appears that it can be simply added to most, if not, any indicator by adding in the given code, I just don't know where to add it, I will mess it up, I know how to go about doing it in Automate section of cTrader, but after that I'm pretty much lost, and it can't get any easier than this, copy/paste. So I'm stuck writing to you instead, too see how I can go about getting the actual alert indicator I need for myself.
I am asking if you are willing to share the alert indicator for Hullforcast (HMA) - alert upon new dot color change. Not every dot, just the color change. I'm not certain if you already built it or will have built it momentarily upon reciveing the $30USD. Either way I can fully understand why you would not want to share everything free of charge, And I will have no other option but to purchase, but I had to at least ask, I will pay you for it in the future, even if I dont use it in any way after a few days. Thank you once again, I'm extremely grateful to even have the chance to buy what I need if I cant get it free source. I appreciate you and respect your decision.
The indicator download link: https://drive.google.com/open?id=1hWoCeQX1w57iTbJOnvHxSNx7jtf6T_8g
And code (The code isn't mine, I just modified it a little bit and added the alert trigger code):
using System; using System.IO; using System.Collections.Generic; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Alert; namespace cAlgo.Indicators { [Indicator(IsOverlay = true, AutoRescale = false, AccessRights = AccessRights.FullAccess)] public class HullForcast : Indicator { #region Fields private int _lastAlertBar; private HullMovingAverage _movingAverage1; private HullMovingAverage _movingAverage2; private HullMovingAverage _movingAverage3; private IndicatorDataSeries _dataSeries; private IndicatorDataSeries _trend; private DateTime _openTime; #endregion #region Parameters [Parameter("Hull Coverage Period", DefaultValue = 35)] public int HullCoveragePeriod { get; set; } [Parameter("Hull Coverage Period Devisor", DefaultValue = 1.7)] public double HullPeriodDivisor { get; set; } [Parameter()] public DataSeries Price { get; set; } [Parameter("Alert", DefaultValue = true)] public bool Alert { get; set; } #endregion #region Outputs [Output("Up", PlotType = PlotType.Points, LineColor = "White", Thickness = 4)] public IndicatorDataSeries UpSeries { get; set; } [Output("Down", PlotType = PlotType.Points, LineColor = "Red", Thickness = 4)] public IndicatorDataSeries DownSeries { get; set; } #endregion #region Overridden Methods protected override void Initialize() { _dataSeries = CreateDataSeries(); _trend = CreateDataSeries(); var period1 = (int)Math.Floor(HullCoveragePeriod / HullPeriodDivisor); var period2 = (int)Math.Floor(Math.Sqrt(HullCoveragePeriod)); _movingAverage1 = Indicators.GetIndicator<HullMovingAverage>(Price, period1); _movingAverage2 = Indicators.GetIndicator<HullMovingAverage>(Price, HullCoveragePeriod); _movingAverage3 = Indicators.GetIndicator<HullMovingAverage>(_dataSeries, period2); cAlgo.API.Alert.Models.Configuration.Current.Tracer = Print; } 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) { if (MarketSeries.OpenTime[index] != _openTime) { _openTime = MarketSeries.OpenTime[index]; TriggerAlert(index, TradeType.Buy); } } } 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) { if (MarketSeries.OpenTime[index] != _openTime) { _openTime = MarketSeries.OpenTime[index]; TriggerAlert(index, TradeType.Sell); } } } UpSeries[index] = double.NaN; } } #endregion #region Other Methods private void TriggerAlert(int index, TradeType tradeType) { if (!IsLastBar || index == _lastAlertBar || !Alert) { return; } _lastAlertBar = index; Notifications.ShowPopup(TimeFrame, Symbol, tradeType, "Hull Forecast"); } #endregion } }
@afhacker
afhacker
05 Mar 2019, 13:32
You forgot the color picker, date time picker, and time picker parameters.
If you allow us to iterate over all open charts and each chart attached indicators, objects, and cBots, that will be a really huge thing and it will open the door for lots of new exciting stuff.
We should be able to remove an indicator/cBot from a chart or start/stop the indicator both via an indicator and cBot (this feature must be available for all chart objects inside "Charts" collection, not just the indicator/cBot current chart).
The other cool feature will be adding a new section to indicator/cBot parameters window that allows the user to change the indicator/cBot time zone, so the programmer will be able to set a default time zone via the Robot/Indicator attributes TimeZone property but the user must be able to change that default time zone on indicator/cBot parameters window, you can add a new section like "Outputs" in indicator parameters window for that.
The Chart object must have a "Close" public method, so whenever you call the method it will close the chart.
@afhacker
afhacker
04 Mar 2019, 15:29
( Updated at: 21 Dec 2023, 09:21 )
Version 3.3 Released
Lots of new features have been added!
- Now you can add multiple orders on a single protection, you don't have to add separate SL/TP protections for each order
- The app now shows each protection open and triggered orders
- We change it from the order based to protection based model, now orders are linked to a protection not protections to orders
@afhacker
afhacker
27 Feb 2019, 15:54
Here are the new versions of New Bar and Bar Color change indicators:
Bar Color Change: https://drive.google.com/open?id=1zokGTCjrF9XxVQ-TRDH-XpC7X6AwASUR
New Bar: https://drive.google.com/open?id=1M9Vty1JKvh5baBkPAQ_g9YmYy2qLqWpz
using cAlgo.API; using cAlgo.API.Alert; using cAlgo.API.Internals; namespace cAlgo { [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)] public class BarColorChangeAlert : Indicator { #region Fields private int _lastAlertBarIndex; #endregion Fields #region Methods protected override void Initialize() { _lastAlertBarIndex = MarketSeries.Close.Count - 1; cAlgo.API.Alert.Models.Configuration.Current.Tracer = Print; } public override void Calculate(int index) { if (MarketSeries.Close[index] > MarketSeries.Open[index] && MarketSeries.Close[index - 1] < MarketSeries.Open[index - 1]) { TriggerAlert(index, "Bullish"); } else if (MarketSeries.Close[index] < MarketSeries.Open[index] && MarketSeries.Close[index - 1] > MarketSeries.Open[index - 1]) { TriggerAlert(index, "Bearish"); } } private void TriggerAlert(int index, string type) { if (index == _lastAlertBarIndex || !IsLastBar) { return; } _lastAlertBarIndex = index; Notifications.ShowPopup(TimeFrame, Symbol, type, "Bar Color Change"); } #endregion Methods } }
using cAlgo.API; using cAlgo.API.Alert; using cAlgo.API.Internals; namespace cAlgo { [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)] public class NewBarAlert : Indicator { #region Fields private int _lastAlertBarIndex; #endregion Fields #region Overridden Methods protected override void Initialize() { cAlgo.API.Alert.Models.Configuration.Current.Tracer = Print; _lastAlertBarIndex = MarketSeries.Close.Count - 1; } public override void Calculate(int index) { if (!IsLastBar || index == _lastAlertBarIndex) { return; } _lastAlertBarIndex = index; string type = MarketSeries.Close[index] > MarketSeries.Open[index] ? "Bullish Bar" : "Bearish Bar"; Notifications.ShowPopup(TimeFrame, Symbol, type, "New Bar Alert", MarketSeries.Open[index]); } #endregion Overridden Methods } }
@afhacker
afhacker
26 Feb 2019, 20:13
RE: RE: RE: RE: RE: RE: RE: RE: RE:
matt_graham_92@hotmail.com said:
afhacker said:
matt_graham_92@hotmail.com said:
afhacker said:
matt_graham_92@hotmail.com said:
matt_graham_92@hotmail.com said:
afhacker said:
Download the compiled "algo" file from here: https://drive.google.com/open?id=1-pXB4XEJy7Eftom0dha21E379xvuucla
https://gyazo.com/347784a6ec02cb92f3dc7c560815f085 It also gives details here, unfortunately the info is in a small box that i can not make bigger by default. So I would have to send like 4 screen shots, and it would just be a mess to read.. here would be the first one.. https://gyazo.com/119cc47637e33437f48c95ab72fc26e6 2nd: https://gyazo.com/aef035e36755dc2ea41b8b95d6813029 3rd: https://gyazo.com/3697a3921f71e3e6cdc7c41dac0f8f06 4th: https://gyazo.com/e5f795ce4f388524af8f5dd140146d52 5th! https://gyazo.com/bda17a199b63ca89d490ffe80ed331ec
You can copy the exception detail and post it here, anyway it looks like there is an issue with your selected sound file path for the sound alert.
You can reset the indicator to its first state by deleting its settings file which is located here:
%userprofile%\Documents\cAlgo
Delete the file "AlertPopupSettings_2.0.1.4.xml" and "Alerts_2.0.1.4.db", then test the indicator.
System.ArgumentException: The path is not of a legal form.
at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
at System.IO.Path.GetFullPathInternal(String path)
at System.Media.SoundPlayer.ResolveUri(String partialUri)
at System.Media.SoundPlayer.SetupSoundLocation(String soundLocation)
at cAlgo.API.Alert.Launcher.PlaySound(String path)
at cAlgo.API.Alert.Launcher.TriggerAlerts(INotifications notifications, SettingsModel settings, AlertModel alert)
at cAlgo.API.Alert.Launcher.<>c__DisplayClass13_0.<Launch>b__0()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
I appreciate the reply! Sry i dont know why i didnt think of that, just goes to show how terrible i am lol. I also dont understand your instructions on how to fix the problem, i tried but i dont know where to find %userprofile%\Documents\cAlgo or where to delete the file "AlertPopupSettings_2.0.1.4.xml" and "Alerts_2.0.1.4.db" from :\
I am able to find the folder of the indicator, but all i can do is add it to my cTrader or delete it. I have just deleted it again for now, trying to get it to work :)
ThanksLook open Windows Run by pressing Window Button+R, and then type the following command:
%userprofile%\Documents\cAlgo
Click on the "Ok" button and it will open the cAlgo directory, there you will find the "AlertPopupSettings_2.0.1.4.xml" and "Alerts_2.0.1.4.db" files, delete both and test again the indicator.
I was able to replicate your issue, you have enabled the sound notification but not selected any sound file, once you removed the alert settings file the indicator will start to work fine again.
Its a minor bug on alert library and we will release a fix for it, but you should not enable the sound notification if you haven't selected a sound file.
I appreciate the detailed instructions greatly! I was able to get the sound alert to play once adding a sound file, so that was a success. Although I am still currently having trouble getting the telegram notification to play, I turned off the sound alert, and just started trying to get the telegram alert to work. I have deleted those 2 files you mentioned, before adding the alert indicator to the chart, Then once the alert indicator is added, I setup the telegram alert settings, by entering Channel name and bot token. It adds. But then on the next alert, something bugs it up again and causes cTrader to crash! So I don't receive an alert. This is the message I'm getting. I will be immensely happy if I'm able to get the telegram notification working so that I can receive alerts to my phone. Thank you
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at cAlgo.API.Alert.Launcher.<>c__DisplayClass8_0.<PutObjectInTemplate>b__3(String keyword)
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at cAlgo.API.Alert.Launcher.PutObjectInTemplate(Object obj, String template)
at cAlgo.API.Alert.Launcher.SendTelegramMessage(TelegramSettingsModel settings, AlertModel alert)
at cAlgo.API.Alert.Launcher.TriggerAlerts(INotifications notifications, SettingsModel settings, AlertModel alert)
at cAlgo.API.Alert.Launcher.<>c__DisplayClass13_0.<Launch>b__0()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
I'm aware of Telegram notification issue, I will release a new version of Alert library in the next few days and I will update this indicator too.
@afhacker
afhacker
19 Feb 2019, 15:45
The new version of bar color change indicator (Alert library updated to the latest version): https://drive.google.com/open?id=1oDOa-IjwXnfidU5zv5IjipcnKgzb4JB5
using cAlgo.API; using cAlgo.API.Alert; using cAlgo.API.Internals; namespace cAlgo { [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)] public class BarColorChangeAlert : Indicator { #region Fields private int _lastAlertBarIndex; #endregion Fields #region Methods protected override void Initialize() { _lastAlertBarIndex = MarketSeries.Close.Count - 1; cAlgo.API.Alert.Models.Configuration.Current.Tracer = Print; } public override void Calculate(int index) { if (MarketSeries.Close[index] > MarketSeries.Open[index] && MarketSeries.Close[index - 1] < MarketSeries.Open[index - 1]) { TriggerAlert(index, "Bullish"); } else if (MarketSeries.Close[index] < MarketSeries.Open[index] && MarketSeries.Close[index - 1] > MarketSeries.Open[index - 1]) { TriggerAlert(index, "Bearish"); } } private void TriggerAlert(int index, string type) { if (index == _lastAlertBarIndex || !IsLastBar) { return; } _lastAlertBarIndex = index; Notifications.ShowPopup(TimeFrame, Symbol, type, "Bar Color Change"); } #endregion Methods } }
@afhacker
afhacker
18 Feb 2019, 13:05
RE: RE: RE: RE: RE: RE: RE:
matt_graham_92@hotmail.com said:
afhacker said:
matt_graham_92@hotmail.com said:
matt_graham_92@hotmail.com said:
afhacker said:
Download the compiled "algo" file from here: https://drive.google.com/open?id=1-pXB4XEJy7Eftom0dha21E379xvuucla
https://gyazo.com/347784a6ec02cb92f3dc7c560815f085 It also gives details here, unfortunately the info is in a small box that i can not make bigger by default. So I would have to send like 4 screen shots, and it would just be a mess to read.. here would be the first one.. https://gyazo.com/119cc47637e33437f48c95ab72fc26e6 2nd: https://gyazo.com/aef035e36755dc2ea41b8b95d6813029 3rd: https://gyazo.com/3697a3921f71e3e6cdc7c41dac0f8f06 4th: https://gyazo.com/e5f795ce4f388524af8f5dd140146d52 5th! https://gyazo.com/bda17a199b63ca89d490ffe80ed331ec
You can copy the exception detail and post it here, anyway it looks like there is an issue with your selected sound file path for the sound alert.
You can reset the indicator to its first state by deleting its settings file which is located here:
%userprofile%\Documents\cAlgo
Delete the file "AlertPopupSettings_2.0.1.4.xml" and "Alerts_2.0.1.4.db", then test the indicator.
System.ArgumentException: The path is not of a legal form.
at System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
at System.IO.Path.GetFullPathInternal(String path)
at System.Media.SoundPlayer.ResolveUri(String partialUri)
at System.Media.SoundPlayer.SetupSoundLocation(String soundLocation)
at cAlgo.API.Alert.Launcher.PlaySound(String path)
at cAlgo.API.Alert.Launcher.TriggerAlerts(INotifications notifications, SettingsModel settings, AlertModel alert)
at cAlgo.API.Alert.Launcher.<>c__DisplayClass13_0.<Launch>b__0()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
I appreciate the reply! Sry i dont know why i didnt think of that, just goes to show how terrible i am lol. I also dont understand your instructions on how to fix the problem, i tried but i dont know where to find %userprofile%\Documents\cAlgo or where to delete the file "AlertPopupSettings_2.0.1.4.xml" and "Alerts_2.0.1.4.db" from :\
I am able to find the folder of the indicator, but all i can do is add it to my cTrader or delete it. I have just deleted it again for now, trying to get it to work :)
Thanks
Look open Windows Run by pressing Window Button+R, and then type the following command:
%userprofile%\Documents\cAlgo
Click on the "Ok" button and it will open the cAlgo directory, there you will find the "AlertPopupSettings_2.0.1.4.xml" and "Alerts_2.0.1.4.db" files, delete both and test again the indicator.
I was able to replicate your issue, you have enabled the sound notification but not selected any sound file, once you removed the alert settings file the indicator will start to work fine again.
Its a minor bug on alert library and we will release a fix for it, but you should not enable the sound notification if you haven't selected a sound file.
@afhacker
afhacker
13 Sep 2019, 11:14
RE:
OldScalper said:
Hi OldScalper,
You can use our Custom Period Chart indicator for cTrader, you can have any tick, time, Renko, and range period charts on cTrader with lots of other useful features like calculating Heiken Ashi.
Try Free 10 day Trial: https://www.algodeveloper.com/product/custom-period-chart/
@afhacker