Closed dancydancy closed 2 years ago
Hi @dancydancy,
You can override this function in order to add your own indicators.
You can download data from MetaTrader using the download_data
method of MtSimulator
. Here is an example code. In case you want to put your own data frames into the simulator instead of downloading from MetaTrader, it might be helpful to read the source code of the download_data
.
Thank-you :)
Hi @AminHP, could you provide an example of how to override the _process_data function with a simple indicator like MACD if you get a chance. I am having a lot of trouble figuring out how to add the data produced by the indicator to the signal_features being returned. Thanks in advance
@He1nr1chK
You should also override _get_prices
to store OHLC data.
def _get_prices(self, keys: List[str]=['Open', 'High', 'Low', 'Close']) -> Dict[str, np.ndarray]:
prices = {}
for symbol in self.trading_symbols:
get_price_at = lambda time: \
self.original_simulator.price_at(symbol, time)[keys]
if self.multiprocessing_pool is None:
p = list(map(get_price_at, self.time_points))
else:
p = self.multiprocessing_pool.map(get_price_at, self.time_points)
prices[symbol] = np.array(p)
return prices
def _process_data(self) -> np.ndarray:
data = self.prices
macd_features = []
for pair, ohlc_data in data.items():
open = ohlc_data[:, 0]
high = ohlc_data[:, 1]
low = ohlc_data[:, 2]
close = ohlc_data[:, 3]
pair_macd = calculate_macd_from_ohlc(open, high, low, close)
macd_features.append(pair_macd)
signal_features = np.column_stack(macd_features)
return signal_features
When I do exactly this I get the error: AttributeError: 'NoneType' object has no attribute 'shape'
. Any ideas? Sorry if this is a stupid question, my python knowledge is rather limited
Hi Amin,
On gym-anytradnig it's possible to override _process_data and add your own custom indicators (from Finta etc).
Is it possible to do the same with mtsim - or how should I be thinking about this? Currently I can't even see how to add and format my own training data.