I'll chip in with a few of these:
1. I haven't tried modifying the datastore from a RE system, but it should work I believe. My preferred way of doing these things is to generate the series outside. You could pre-generate series in a database or even have your data retrieval interface get random data every time you refresh. Just flush the series and grab new random data every time.
2. Do you want to modify the series data during a run? Seems like cutting off the branch that you're sitting on. Or do you just want to make a custom indicator? If you want to calculate a new custom indicator and push that data into your DB or datastore, that shouldn't be a problem.
3. Sure, you can calculate position sizing anyway you like. Here's an example which uses ATR sizing, but caps for historical peak vola.
// --opening position in NewBar
long numberOfContracts = positionSize(true);
private long positionSize(bool isLong) // Position size calculation, capping peak vola
riskFactor = _longRiskFactor;
riskFactor = _shortRiskFactor;
double currentATR = _atr.Current;
double peakATR = _maxATR.Current * 0.8; // cap size at
if (currentATR < (peakATR))
effectiveATR = (peakATR);
effectiveATR = currentATR;
if (_point_value==0.0) _point_value = 1;
long contracts =
(long)(Math.Max(1,SystemData.AccountValue * riskFactor /
(effectiveATR * _point_value * SystemData.AccountInfo.GetConversionRate(Symbol.CurrencyType,SystemData.AccountCurrency, QuoteType.Last).Value )));
4. I haven't tried that, but now that I think about it, I'm also interested in that.
5. Sure, depending on what you want to do. For instance, for my equity sims, I include any stock that has ever been a member of a specific index. Then I make a custom indicator which returns 1 if the stock was a member of a certain index on a given day, else 0. This indicator uses direct database calls. Now all I need to do is to add this 'indicator' to my system, and only allow trading if the indicator is 1. You could do the same on any factor you like.
6. I'm not aware of any native way to do this. I use a custom function that checks the last day through a direct database call, and stores this terminal date for each instrument. If we're on the last day, close at market. Yes, I do see a deficiency here, and if you don't handle this manually you risk getting stuck in a dead position forever.