Thank you, that's clear now. In order to train different models for each asset, I've done this:

Code:
if(mode == NEURAL_TRAIN) {
	file_write("Data\\signals.csv",Data,0); // export batch training data to R
    Rx(strf("Data <- read.csv('%sData/signals.csv',header=F)",slash(ZorroFolder)));
   
    if(!Rx(strf("Model_%s <- <<machine learning algorithm>>)", strx(Asset,"/","")))) return 0;



which works as I expected. I've verified in R that each model is actually trained on the correct data too. I'll load the models in the NEURAL_LOAD function via a string that is dynamically created to accommodate each asset in the loop.

One final comment: the manual states that NEURAL_TRAIN is called at the end of any WFO cycle, however I have verified that it is in fact called at the end of any loop() cycle, as you stated. That misleading statement in the manual was a source of some confusion for me. If that could be updated, I'd really appreciate it.

Thanks for looking into this for me, jcl.