Topics
Replies
jhtrader
10 Jun 2016, 19:11
PLEASE SPOTWARE, please just tell us if you ever expect to do multicurrency backtesting also known as portfolio back testing.
Its been 3 years and still waiting while updates such as new fonts come out is just super frustrating. What will it take for you guys to move on this?
If not I will invest in a product that can achieve this. Just let us know at the very least.
jhtrader
17 Feb 2016, 17:57
RE: memory leak issue SOLVED
jhtrader said:
I had removed that line already and the problem persists! Please stop reminding me you dont provide assistance! I get it I am trying to figure out why your platform is hanging I am trying to allow you to replicate the issue nothing more ... I have a lot invested in this platform and I want to see it function well.. so please don't be obstinate and obtuse and lets get on with fixing the issue!
I tried to reinstall the software it still consumes memory.. I deleted all instances from the indicators and removed the indiators from the bots. This fixed the issue!
So the memory usage of the builtin indicators and each instance attached to either a robot or indicator can lead to a significant drain on RAM. Is this the same for cTrader or is the memory only used when the chart is selected (if possible that would be good if that was the case in cAlgo so that the overall memory is not chewed up by instances or indicators not being used.
I recently implemented the zigZag indicator (from the website) and when accessing it from cAlgo found that my computer would freeze due to the memory consumed by cAlgo.
NOTE the program runs perfectly fine until I go into the ZigZag indicator so something in this code is causing the issue... please investigate so you can figure it out..
using System; using cAlgo.API; using cAlgo.API.Internals; namespace cAlgo.Indicators { [Indicator(IsOverlay = true, AccessRights = AccessRights.None)] public class ZigZag : Indicator { [Parameter(DefaultValue = "EURUSD")] public string TradePair { get; set; } [Parameter(DefaultValue = 12)] public int Depth { get; set; } [Parameter(DefaultValue = 5)] public int Deviation { get; set; } [Parameter(DefaultValue = 3)] public int BackStep { get; set; } [Output("ZigZag", Color = Colors.OrangeRed)] public IndicatorDataSeries Result { get; set; } #region Private fields private double _lastLow; private double _lastHigh; private double _low; private double _high; private int _lastHighIndex; private int _lastLowIndex; private int _type; private double _point; private double _currentLow; private double _currentHigh; private IndicatorDataSeries _highZigZags; private IndicatorDataSeries _lowZigZags; private MarketSeries mSeries; #endregion protected override void Initialize() { _highZigZags = CreateDataSeries(); _lowZigZags = CreateDataSeries(); _point = Symbol.TickSize; mSeries = MarketData.GetSeries(TradePair, TimeFrame.Hour); } public override void Calculate(int index) { if (index < Depth) { Result[index] = 0; _highZigZags[index] = 0; _lowZigZags[index] = 0; return; } _currentLow = Functions.Minimum(mSeries.Close, Depth); if (Math.Abs(_currentLow - _lastLow) < double.Epsilon) _currentLow = 0.0; else { _lastLow = _currentLow; //Check if Current Close is Greater than the currentLow if True then ignore if ((mSeries.Close[index] - _currentLow) > (Deviation * _point)) _currentLow = 0.0; else { for (int i = 1; i <= BackStep; i++) { if (Math.Abs(_lowZigZags[index - i]) > double.Epsilon && _lowZigZags[index - i] > _currentLow) _lowZigZags[index - i] = 0.0; } } } //Check if Current Low = Current Close if true then add to _lowZigZags otherwise put a 0 if (Math.Abs(mSeries.Close[index] - _currentLow) < double.Epsilon) _lowZigZags[index] = _currentLow; else _lowZigZags[index] = 0.0; //TEST for (int i = 0; i < index; i++) { Print("indx Val at {0} = {1}", i, _lowZigZags[i]); } _currentHigh = mSeries.Close.Maximum(Depth); if (Math.Abs(_currentHigh - _lastHigh) < double.Epsilon) _currentHigh = 0.0; else { _lastHigh = _currentHigh; if ((_currentHigh - mSeries.Close[index]) > (Deviation * _point)) _currentHigh = 0.0; else { for (int i = 1; i <= BackStep; i++) { if (Math.Abs(_highZigZags[index - i]) > double.Epsilon && _highZigZags[index - i] < _currentHigh) _highZigZags[index - i] = 0.0; } } } if (Math.Abs(mSeries.Close[index] - _currentHigh) < double.Epsilon) _highZigZags[index] = _currentHigh; else _highZigZags[index] = 0.0; switch (_type) { case 0: if (Math.Abs(_low - 0) < double.Epsilon && Math.Abs(_high - 0) < double.Epsilon) { if (Math.Abs(_highZigZags[index]) > double.Epsilon) { _high = mSeries.Close[index]; _lastHighIndex = index; _type = -1; Result[index] = _high; } if (Math.Abs(_lowZigZags[index]) > double.Epsilon) { _low = mSeries.Close[index]; _lastLowIndex = index; _type = 1; Result[index] = _low; } } break; case 1: if (Math.Abs(_lowZigZags[index]) > double.Epsilon && _lowZigZags[index] < _low && Math.Abs(_highZigZags[index] - 0.0) < double.Epsilon) { Result[_lastLowIndex] = double.NaN; _lastLowIndex = index; _low = _lowZigZags[index]; Result[index] = _low; } if (Math.Abs(_highZigZags[index] - 0.0) > double.Epsilon && Math.Abs(_lowZigZags[index] - 0.0) < double.Epsilon) { _high = _highZigZags[index]; _lastHighIndex = index; Result[index] = _high; _type = -1; } break; case -1: if (Math.Abs(_highZigZags[index]) > double.Epsilon && _highZigZags[index] > _high && Math.Abs(_lowZigZags[index] - 0.0) < double.Epsilon) { Result[_lastHighIndex] = double.NaN; _lastHighIndex = index; _high = _highZigZags[index]; Result[index] = _high; } if (Math.Abs(_lowZigZags[index]) > double.Epsilon && Math.Abs(_highZigZags[index]) <= double.Epsilon) { _low = _lowZigZags[index]; _lastLowIndex = index; Result[index] = _low; _type = 1; } break; default: return; } } } }
jhtrader
17 Feb 2016, 04:13
code to reproduce issue.
I recently implemented the zigZag indicator (from the website) and when accessing it from cAlgo found that my computer would freeze due to the memory consumed by cAlgo.
NOTE the program runs perfectly fine until I go into the ZigZag indicator so something in this code is causing the issue... please investigate so you can figure it out..
using System; using cAlgo.API; using cAlgo.API.Internals; namespace cAlgo.Indicators { [Indicator(IsOverlay = true, AccessRights = AccessRights.None)] public class ZigZag : Indicator { [Parameter(DefaultValue = "EURUSD")] public string TradePair { get; set; } [Parameter(DefaultValue = 12)] public int Depth { get; set; } [Parameter(DefaultValue = 5)] public int Deviation { get; set; } [Parameter(DefaultValue = 3)] public int BackStep { get; set; } [Output("ZigZag", Color = Colors.OrangeRed)] public IndicatorDataSeries Result { get; set; } #region Private fields private double _lastLow; private double _lastHigh; private double _low; private double _high; private int _lastHighIndex; private int _lastLowIndex; private int _type; private double _point; private double _currentLow; private double _currentHigh; private IndicatorDataSeries _highZigZags; private IndicatorDataSeries _lowZigZags; private MarketSeries mSeries; #endregion protected override void Initialize() { _highZigZags = CreateDataSeries(); _lowZigZags = CreateDataSeries(); _point = Symbol.TickSize; mSeries = MarketData.GetSeries(TradePair, TimeFrame.Hour); } public override void Calculate(int index) { if (index < Depth) { Result[index] = 0; _highZigZags[index] = 0; _lowZigZags[index] = 0; return; } _currentLow = Functions.Minimum(mSeries.Close, Depth); if (Math.Abs(_currentLow - _lastLow) < double.Epsilon) _currentLow = 0.0; else { _lastLow = _currentLow; //Check if Current Close is Greater than the currentLow if True then ignore if ((mSeries.Close[index] - _currentLow) > (Deviation * _point)) _currentLow = 0.0; else { for (int i = 1; i <= BackStep; i++) { if (Math.Abs(_lowZigZags[index - i]) > double.Epsilon && _lowZigZags[index - i] > _currentLow) _lowZigZags[index - i] = 0.0; } } } //Check if Current Low = Current Close if true then add to _lowZigZags otherwise put a 0 if (Math.Abs(mSeries.Close[index] - _currentLow) < double.Epsilon) _lowZigZags[index] = _currentLow; else _lowZigZags[index] = 0.0; //TEST for (int i = 0; i < index; i++) { Print("indx Val at {0} = {1}", i, _lowZigZags[i]); } _currentHigh = mSeries.Close.Maximum(Depth); if (Math.Abs(_currentHigh - _lastHigh) < double.Epsilon) _currentHigh = 0.0; else { _lastHigh = _currentHigh; if ((_currentHigh - mSeries.Close[index]) > (Deviation * _point)) _currentHigh = 0.0; else { for (int i = 1; i <= BackStep; i++) { if (Math.Abs(_highZigZags[index - i]) > double.Epsilon && _highZigZags[index - i] < _currentHigh) _highZigZags[index - i] = 0.0; } } } if (Math.Abs(mSeries.Close[index] - _currentHigh) < double.Epsilon) _highZigZags[index] = _currentHigh; else _highZigZags[index] = 0.0; switch (_type) { case 0: if (Math.Abs(_low - 0) < double.Epsilon && Math.Abs(_high - 0) < double.Epsilon) { if (Math.Abs(_highZigZags[index]) > double.Epsilon) { _high = mSeries.Close[index]; _lastHighIndex = index; _type = -1; Result[index] = _high; } if (Math.Abs(_lowZigZags[index]) > double.Epsilon) { _low = mSeries.Close[index]; _lastLowIndex = index; _type = 1; Result[index] = _low; } } break; case 1: if (Math.Abs(_lowZigZags[index]) > double.Epsilon && _lowZigZags[index] < _low && Math.Abs(_highZigZags[index] - 0.0) < double.Epsilon) { Result[_lastLowIndex] = double.NaN; _lastLowIndex = index; _low = _lowZigZags[index]; Result[index] = _low; } if (Math.Abs(_highZigZags[index] - 0.0) > double.Epsilon && Math.Abs(_lowZigZags[index] - 0.0) < double.Epsilon) { _high = _highZigZags[index]; _lastHighIndex = index; Result[index] = _high; _type = -1; } break; case -1: if (Math.Abs(_highZigZags[index]) > double.Epsilon && _highZigZags[index] > _high && Math.Abs(_lowZigZags[index] - 0.0) < double.Epsilon) { Result[_lastHighIndex] = double.NaN; _lastHighIndex = index; _high = _highZigZags[index]; Result[index] = _high; } if (Math.Abs(_lowZigZags[index]) > double.Epsilon && Math.Abs(_highZigZags[index]) <= double.Epsilon) { _low = _lowZigZags[index]; _lastLowIndex = index; Result[index] = _low; _type = 1; } break; default: return; } } } }
jhtrader
03 Dec 2015, 20:34
There is a workaround
Hi guys,
If anyone wants to know how I managed to successfully back test a multi currency robot you can contact me and I will show you.
Basically the solution involves creating a customSymbol class, loading the data for each tradepair for the backtest period into a database and calling the bid and ask for each tradpair from the database on bar () bypassing the symbol properties inside the robot. Trade execution also needs to be simulated by placing orders inside a database.
If you want I have downloaded the data from the cAlgo data series so I can pass you this. The thing that is not possible is to getSeries during onBar() so indicators cannot function.
CAlgo Team this is workaround is far from optimal but after 3 years and no further updates.. hoping for this function to be available anytime soon does'nt seem to be an option. I hope the team will provide an update on this crucial functionality.
jhtrader
03 Dec 2015, 20:24
Any update on this please?
The last update on this function was back in 2013 "coming soon"... 3 years later are we any closer? An update on progress would be much appreciated.
jhtrader
02 Dec 2015, 20:32
Your materials need to be better
Dear CAlgo Team,
The example I am trying to demonstrate is not for trading purposes. The material you have in Referencing Custom Indicators does not show any example where a robot reads the information from an indicator. This question is directly asks how to use the API to access information from an indicator inside a robot. There is no trading logic it is a simple "hello world" type example.
In order to build use of your platform I urge you to document many more examples so that people new to the platform can use the API better. I am trying to help bridge gaps in the knowledge base by framing simple searchable examples that I am sure will provide useful examples to the community, I am deliberately making them general so that they are not in any way specific to any strategy, just a simple use case on how to use the API.
Please consider that without users actively able to use the API the good work you are doing will amount to little.
jhtrader
02 Aug 2015, 04:16
( Updated at: 18 Apr 2021, 23:13 )
This post was removed by the moderator because it duplicates another post. /forum/indicator-support/6126?page=1#2
jhtrader
28 Jul 2015, 19:38
This is using the sample code
Spotware said:
Dear Trader,
We do not provide coding assistance services. We more than glad to assist you with specific questions about cAlgo.API. You also can contact one of our Partners or post a job in Development Jobs section for further coding assistance.
Dear Spotware,
I am simply printing a value from an indicator inside a robot. This is not an algorithm please assist. I am asking the question why the value when printed is different to the value on the graph when the indicator is attached to the chart. I want to be sure that when using an indicator inside a robot the values are not different. That is all.
jhtrader
28 Jul 2015, 02:20
( Updated at: 21 Dec 2023, 09:20 )
Screen shots
So here is the value for the AUDUSD on the 4 hour timefram being printed by the robot
Here is the values on the indicator
jhtrader
12 Sep 2014, 19:01
Still no response....
jhtrader said:
Dear Scyware,
Please respond. Please either support the software you sold or refund.
jhtrader
31 Jul 2014, 18:41
I really dont understand you?
Dear Scyware,
After posting his comment, I again sent you an email as below 12 days ago. instead of replying and sorting out the issue you would rather create fake accounts and make up reviews? If you want to prove you are legitimate, simply just sort the issue out.
I am on this forum complaining because for SIX MONTHS you have not replied to any question on how to use your software and your support website doesn't help either. THIS IS NOT PERSONAL either you sell software that has no function (with no support) or you don't. Provide support if you can and I will be a happy customer.
From: J
Sent: Sunday, 20 July 2014 2:21 PM
To: 'Support - Scyware'
Subject: RE: Robolink
Dear Mr Hichem,
I do hope you understand, that I tried numerous times to simply ask for a little guidance on using your plugin.
I do not want you to provide code specific to my bot I simply want to know how to use your plugin using general examples as I have stated several times over SIX MONTHS.
Before I bought the plugin you told me that the plugin could be used for specific things I needed. I trusted you on your claims, as I could not find any customer reviews, not over the last SIX MONTHS I have yet to get a single example or help using your product
However, that being said, I wanted to ask you one last time, will you help me use your plug-in, using generic examples to convince me that indeed your product can do what you had claimed and that your company can be trusted to actually support customers after they buy your product, in learning to use your product.
Please do this and I will stop with this post.
Regards,
J
jhtrader
20 Jul 2014, 21:47
Mr Hichem please do not discieve us
Mr H,
While I did misunderstand the email you sent. I very promptly sent you another email apologizing for my mix up and just asking you for assistance using your program.. Since you like to post emails I will do the same. Here are all the correspondence with the dates and please NOTE you did not have the courtesy to respond so this is why I came to the conclusion that you are a disreputable company.
Here are all the emails, please take a look and judge for yourself. Hichem its been 6 months, all you I asked you for is some help using your plugin. I made the mistake of trusting your company and did not make the complaint before the 90 day window. I still own your software and I cannot use it.
From:
Sent: Sunday, 19 January 2014 1:31 PM
To: 'Support - Scyware'
Subject: Robolink
Hi,
Firstly, I apologise for the misunderstanding, I misread your email and thought you guys were a (fee for service) outfit.
I am happy to continue to use your plugin, as long as you can as you promised show me how to use your plugin in general example to illustrate the following:
- A Robot X and Robot Y both pass an class object (pair, trade direction, time stamp) to Robot A.
- Robot C passes a instruction to Robot A and on receipt of this instruction Robot A prints a message and closes all open orders.
- Also Hichem, you mentioned you had developed a way to handle asynchronous orders you offered this in your post to another guy, would you mind to send it to me as I think it may be helpful.
Many thanks,
From:
Sent: Friday, 24 January 2014 11:19 AM
To: 'Support - Scyware'
Subject: FW: Robolink
Hi Guys,
Are you guys planning to help me to use your plugin as you promised. I only need some basic illustrations… please let me know.
Cheers,
From:
Sent: Friday, 7 February 2014 3:47 PM
To: 'Support - Scyware'
Subject: RE: Robolink
Hello Hichem,
You promised help with using your plug-in. I am NOT asking for help with my program only a basic example for applying your plug-in which I bought after you assured me that it could deliver on some of my requirements.
If you cannot do what you promised please inform me and I will request a refund.
This is the third email I have sent on this issue. Please have the courtesy to respond.
Regards,
From:
Sent: Friday, 7 February 2014 5:22 PM
To: 'Support - Scyware'
Subject: Samples on website are not available
Hi H,
I tried to use the website to find examples, but there are none.. this is the message that comes up.
No conversations matching your search were found.
- Reduce the number of gambits or search keywords you're using to find a broader range of conversations.
- Note that keywords less than 4 characters in length, and common English words such as 'the' and 'for', aren't included in the search criteria.
I got this error:
Error CS0012: Referenced indicators or cbots are out of date. Please rebuild them.
Not sure what this means.. as the robot compiles and is not out of date.
Please advise.
Regards,
From:
Sent: Friday, 14 February 2014 3:23 PM
To: 'Support - Scyware'
Subject: Is Scyware Scamware?
Importance: High
Hi Hichem,
Before you promised to help show how to use your roboLink. Now that you have payment, I find out you have no examples and not willing to even return emails or actually help with how to use this software.
I have sent many emails to you to explain all I need is a simple example on how to use your product for the things you claimed it could help me with. I have been trying to get a response since 17th of January!!
You have not once sent anything, there is no samples on your site (as I alerted you on the 7th of Feb).
NO CONVERSATIONS MATCHING YOUR SEARCH WERE FOUND
I told you when I bought it I was trusting you to keep your word to support your product... to help just provide simple examples on how I can use your software.. I do not want your help on other aspects not related to your product!! (that was just a misunderstanding on my part)
But after almost a month I am beginning to wonder if you are legitimate! You not responding is making me feel very angry and foolish for trusting you in the first place.
Maybe you can tell me?
I am now running out of patience.
If you do not respond in 48 hours.. I will just post warnings of your deceptive trade practices on every forum I can find and make a formal complaint on Paypal.. Your call!
jhtrader
16 Jul 2014, 19:34
RE:
jhtrader said:
My Project has run into a small problem when trying to run Entity Framework on calgo Robots.
The robot failed to run because from in testing we found that .algo file is not using any .config file, and the Entity Framework relies on the config file to run. Is it possible to run Entity Framework on algo?
If anyone has experience using entity framework with cAlgo please help.
PROBLEM SOLVED: AccessRights = AccessRights.FullAccess
jhtrader
20 Jun 2014, 16:44
2) Is it possible to obtain when swaps are going to be billed for an open position? If a position is in a negative state, it may be cheaper to close it just before the swap occurs or at the end of allowed trading range.
jhtrader
23 Nov 2013, 23:47
RoboLink
Great thanks for the quick reply, I received an email today that the issues with the website is also now fixed. Please get in touch with me so that I can start to use and review the product.
I will need to configure it for my application and may need some help with this.. I am happy to report my honest experiences on this blog so others can benefit from my experience.
Cheers,
jhtrader
19 Nov 2013, 05:00
Can you please share...
I am interested if you can show how you modified the events to save the settings to a file..
Thanks in advance..
jhtrader
18 Nov 2013, 19:57
Perhaps in the mean time...
I would appreciate a small tutorial and example of how to get this working with a simple example.
jhtrader
05 Nov 2016, 18:38
The damn backtest is now buggy...
I hope they fix it soon