Topics
Replies

firemyst
26 Mar 2021, 04:26 ( Updated at: 23 Jan 2024, 13:14 )

RE:

PanagiotisCharalampous said:

Hi firemyst,

This vote is biased in that it's only asking for feedback on one specific element of the layout.

This is what the main complaint was about, hence the relevant question. 

 I agree with everyone else here and have complained about it previously -- I should NOT have to join telegram for this. There's websites for taking polls like Survey Monkey and others. I shouldn't have to download an application, that requires my phone number, just to provide feedback on a product. So Spotware is alienating a lot of users this way.

We are non alienating anyone. As explained above, this change was proposed by traders inside this forum and was voted by 158 users. Voting in Telegram is indicative, since a substantial number of users has joined and we can have a sample with statistical significance. The vote just confirms that the vast majority of cTrader uses either approve this change or have no problem with it. Out of 2700+ members of the group, only 19 explicitly prefer the old layout. If you are so dissatisfied with this change, create a suggestion of what you would like to change, bring a considerable number of votes and we will seriously consider it. [This is how other traders achieved this change]. If you want the software to be developed by traders for traders, then you will also have to accept the burden of democracy :). 

Best Regards,

Panagiotis 

Join us on Telegram

Ha ha ha to your burden of democracy comment :-)

How many registered users are there? I haven't actually seen that post, but if 158/180 users voted for it, okay; but if you have 158 out of 1000+ registered cTrader users (they all have to have accounts to use cTrader), that's just scraping 15% approval rating from users, which isn't a majority by any means.

I would put forth the suggestion that since Spotware has everyone's email address that has joined the forum, to put out a survey to all registered forum users through something like Survey Monkey. This has two advantages:

1) nobody has to download, sign up to, or register themselves with any other phone/mobile application or website

2) you can easily count all the votes from all your registered cTrader users, not just those small number of people who are active within the forums (which your currently survey is limited by since numerous people who use cTrader don't use the forums)

So I am for the burden of democracy, but only the kind of democracy that has been announced and open to everyone - not just the select few in one forum or on one application.

:-P :-)


@firemyst

firemyst
22 Mar 2021, 15:39 ( Updated at: 22 Mar 2021, 15:43 )

This vote is biased in that it's only asking for feedback on one specific element of the layout.

The problem and issue I have is where did the "new order" button go to? I can't find it anywhere.

I either get the one click shortcuts at the top of the chart (which is horrendous), or I have to right click to get "new order", or (worst case scenario) I have to have active symbol panel open (which takes up a lot of space!).

So my vote is bring back the old layout if we can get those "new order" buttons that were at the top back! Unless they're somewhere else?

 

Thank you.

 

PS: I agree with everyone else here and have complained about it previously -- I should NOT have to join telegram for this. There's websites for taking polls like Survey Monkey and others. I shouldn't have to download an application, that requires my phone number, just to provide feedback on a product. So Spotware is alienating a lot of users this way.

Can we have a poll on whether Telegram, Survey Monkey, or some other software should be used in the future for polling? :-)


@firemyst

firemyst
22 Feb 2021, 08:55

RE:

PanagiotisCharalampous said:

Hi firemyst,

You can create a custom enum and then a method that would return the respective data source.

Best Regards,

Panagiotis 

Join us on Telegram

Thank you @Panagiotis.

I was hoping I wouldn't have to do that though, because in the future I might want other sources to be other indicators that are on the chart. Currently, the source let's us select those and it changes dynamically depending on the indicators on the screen. I was hoping there would be a similar, easy way with the MTF approach.


@firemyst

firemyst
16 Feb 2021, 07:37

It depends on how the bot is programmed.

 

If a bot is stopped, it loses all its current information, including any positions it opened.

 

So the bot has to be programmed to pick all that back up when it's restarted so it can identify any positions it had opened, and retake control of them.


@firemyst

firemyst
09 Feb 2021, 04:10

In your OnTick or SymbolTick methods, it doesn't look like you're getting any values for the indicators.

In OnTick, with every tick, you're getting the actual indicator itself over and over and over again (waste of CPU and memory resources), but not the values.


//You need to do something like this using MACD as an example:

//_macd1 is a class variable defined as MacdCrossOver _macd1;
//all the variables ending "CurrentValue" are just plain doubles

double a = _macd1.Histogram.Last(0);
a = _macd1.MACD.Last(0);
a = _macd1.Signal.Last(0);
_macd1HistogramCurrentValue = _macd1.Histogram.Last(0);
_macd1LineCurrentValue = _macd1.MACD.Last(0);
_macd1SignalLineCurrentValue = _macd1.Signal.Last(0);

The reason' it's done as it is above is because cTrader does "lazy" loading of indicator values. That is, it doesn't load the values unless explicitly called. Hence why the safe way to get the values is to follow the pattern as shown above.


@firemyst

firemyst
07 Feb 2021, 04:27

RE: RE:

JerryTrader said:

Hence my last question: "does cTrader only look into Documents\cAlgo\Sources\, or, depending on the setup, it could look into other folders ?"
In the long term, I don't think it is over-engineering to rely on an API property rather than guessing the path will always be the "Documents" folder.

For example, on my laptop, the Robots folder is on the D drive, so hardcoding a "C:\Users\<user name>\Documents\cAlgo\Sources\Robots" would not work.

So I guess that it always look into the Windows "Documents" folder (I can deal with it if there is no exposed property), but it would be nice to have a confirmation because I can't find it anywhere on the documentation.

It can look into other folders. For instance, through bots I create subfolders within the c:\windows\temp folder (which we know is always there because it's part of Windows) to store data, sounds, logs, and other information.

However, depending on the security permissions, you may have to grant your bots/indicators "full permissions" (or something else) other than the default of "none".

 

If you do go that route, make sure you have some sort of "clean up" happening too. Otherwise your files/folder will accumulate and slowly suck up your drive's free space.


@firemyst

firemyst
06 Feb 2021, 16:02

I think you might be over-engineering things.

All cTrader bots are installed and run from:

C:\Users\<user name>\Documents\cAlgo\Sources\Robots

just as all indicators are installed and run from:

C:\Users\<user name>\Documents\cAlgo\Sources\Indicators

So why not just prepend that path in the bot code?

Or within each folder make one called "sounds", stick the sounds in there, and prepend the path

C:\Users\<user name>\Documents\cAlgo\Sources\Robots\sounds

??

 

If the users writing the code don't know the path, then provide them with a dll that has a static constant string variable with the path? They'll have to include that dll in their projects, but so what?

 


@firemyst

firemyst
06 Feb 2021, 13:09

You have a few possible options:

 

1) Use the built in system sounds, and then configure what the sounds will be in the Windows Control panel:

System.Media.SystemSounds.Exclamation.Play();
System.Media.SystemSounds.Asterisk.Play();
System.Media.SystemSounds.Beep.Play();
System.Media.SystemSounds.Hand.Play();
System.Media.SystemSounds.Question.Play();
System.Media.SystemSounds.Exclamation.Play();

 

2) Get the current executing directory and use that as appropriate:

 

3) If you did a simple Google search, you would have found that the sound files for Windows are kept in C:\Windows\Media folder. Put all sound files in there, and prepend the path to whatever file name the user selects.

 

Hope that helps!

 


@firemyst

firemyst
01 Feb 2021, 16:08

RE:

PanagiotisCharalampous said:

Hi firemyst,

Just set the IsInteractive property of the object to true.

Best Regards,

Panagiotis 

Join us on Telegram

 

Thank you @Panagiotis!

And how do I capture the events when dragging and dropping the line? I didn't see any examples in the API Guides nor the API documentation itself:

or here:

 

Thank you.


@firemyst

firemyst
23 Jan 2021, 08:31

As the error message says, why do you think there's a property called "Result"?

There clearly isn't one, so you'll have to figure out what property you need to reference to get the latest value. Not every indicator has a "Result" field nor is it required to.

 

So the best way to tackle this problem is change the line from "Ema.Result.LastValue" to just "Ema". Once you have that, type the period "." to see if any properties show up. Then you'll have to pick from the list if they do.

If they don't, you need to either be able to see the source code to see what the property is, read the documentation, or get in contact with the indicator's author.


@firemyst

firemyst
21 Jan 2021, 09:04 ( Updated at: 21 Dec 2023, 09:22 )

Have you included all the necessary directives and assembly references?

It works perfectly for me:


@firemyst

firemyst
21 Jan 2021, 05:14 ( Updated at: 21 Jan 2021, 05:15 )

From the code you provided above, you need to do two things:

 

1) remove #endregion as there's no corresponding #region tag

2) Change the line

private PRC newprc;

 to

private PolynomialRegressionChannels newprc;

because there is no "PRC" object type defined in your code.


@firemyst

firemyst
21 Jan 2021, 04:59

Here is some sample code off the top of my head on how to reference another symbol within the current one:

 

Symbols.GetSymbol(MarketData.GetBars(Bars.TimeFrame, "GBPUSD").SymbolName);

 


@firemyst

firemyst
20 Jan 2021, 08:07

It's a nullable type.

Anytype in C# that ends in a "?" is a nullable type.

This basically only applies to primitive types though, because objects (such as strings) are inherently nullable.

 

So a type of int? means it's nullable whereas a type of just plain int is not.

int x = 16 is fine.

int? x = 16 is fine.

int? x = null is fine.

int x = null is not fine.


@firemyst

firemyst
18 Jan 2021, 14:36

RE:

PanagiotisCharalampous said:

Hi firemyst,

The cloud is not assossiated with anything, it is a separate entity which is drawn between two lines. We have no plans for an on/off feature at the moment, but you can suggest it.

Best Regards,

Panagiotis 

Join us on Telegram

Hi @Panagiotis:

So Spotware includes a charting feature in cTrader that provides traders with zero control over the colors, zero control over any of its display features, and zero ability to even turn it on or off?

With all due respect and with that lack of basic functionality, such features shouldn't have to be "suggested".

Thank you :-)


@firemyst

firemyst
10 Jan 2021, 12:00

Well, you know how the $50.84 is calculated:

.0001 (pip size) * 8.2 pips (the SL) * 62000 (volume) == $50.84.

So reverse things:

.0001 * ((opening price - closing price) / pipsize) * x == $50.84.

Solve for x, which is the volume you seek.

:-)

 


@firemyst

firemyst
10 Jan 2021, 11:44

RE:

PanagiotisCharalampous said:

Hi EagleMoxy,

No it doesn't. You obfuscate dll files that can can be decompiled, just to make the life of the perpetrator a bit harder. There is no point to obfuscate encrypted files.

Best Regards,

Panagiotis 

Join us on Telegram

Two points for clarification/confirmation @Panagiotis:

1) Spotware hypothetically (more than likely) has the ability to decrypt files as most other brokers that have custom software that encrypts code also has the ability to decrypt it. So any calgo files can be decrypted by Spotware, correct?

2) Are the files also encrypted when compiled from within Visual Studio?

 

Thank you.


@firemyst

firemyst
08 Jan 2021, 08:47

RE:

PanagiotisCharalampous said:

Hi firemyst,

He is looking for the reason in the HistoricalTrade class.

Best Regards,

Panagiotis 

Join us on Telegram

Ah. Good point. :-)


@firemyst

firemyst
08 Jan 2021, 02:46

RE:

PanagiotisCharalampous said:

Hi apon.ru.bd,

Unfortunately this information is not available in the HistoricalTrade class.

Best Regards,

Panagiotis 

Join us on Telegram

Just to clarify, the "reason" is available, but the actual stoploss/take-profit value isn't, correct @Panagiotis?

 

@apon.ru.bd, you said, "I need to check closing reason in tick method, not from positionClosing method."... so put the code in the OnTick method rather than the closing one.

That's a lot of extra CPU time wasted though checking the Historical Trade information on every tick.

Also, there is a way to get the stoploss value when a position is closed. Every time OnTick is called, save the current stoploss value in a global class variable; then in the PositionsClosed method check the value of it (as it should have the latest)

Rough code sample:

private double _lastSLValue = -1;

OnTickMethod( ... )
{
     //whatever

    //check to make sure you have a position
    //you may also need to check if you have an SL if you don't always assign one
    if (p != null)
        _lastSLValue = p.StopLoss.GetValueOrDefault();

    //whatever
}

PositionsClosedMethod ( ... )
{
   //do whatever you need to with _lastSLValue

   // more stuff

   //reset the value if you need to
    _lastSLValue = -1;
}

 


@firemyst