Add m_runTimestamp to all export filenames (YYMMDD_HHMMSS) — ogni backtest genera file unici
This commit is contained in:
@@ -171,6 +171,7 @@ private:
|
||||
double m_riskPerTrade;
|
||||
double m_riskTotal;
|
||||
string m_symbol;
|
||||
string m_runTimestamp;
|
||||
|
||||
// --- History cache ---
|
||||
BarSnapshot history[MAX_HISTORY];
|
||||
@@ -299,8 +300,12 @@ public:
|
||||
m_nnHidden = nnHidden;
|
||||
m_riskPerTrade = riskPerTrade;
|
||||
m_riskTotal = riskTotal;
|
||||
m_symbol = _Symbol;
|
||||
m_neuralNet = NULL;
|
||||
m_symbol = _Symbol;
|
||||
datetime rn = TimeLocal();
|
||||
m_runTimestamp = StringFormat("%04d%02d%02d_%02d%02d%02d",
|
||||
TimeYear(rn), TimeMonth(rn), TimeDay(rn),
|
||||
TimeHour(rn), TimeMinute(rn), TimeSeconds(rn));
|
||||
m_neuralNet = NULL;
|
||||
m_trainBuffer = NULL;
|
||||
|
||||
if(m_useNeural || m_trainMode) {
|
||||
@@ -673,7 +678,7 @@ UpdateCorrelation(i, openTrades[idx].entryZScores[i], actualReturnZ);
|
||||
if(m_trainBuffer.Count() % 50 == 0 && m_trainBuffer.Count() >= 20) {
|
||||
if(m_useNeural) {
|
||||
TrainNN();
|
||||
string nnFn = (m_modelFilename != "") ? m_modelFilename : "TR_Agent_NN_v1.dat";
|
||||
string nnFn = (m_modelFilename != "") ? m_modelFilename : "TR_Agent_NN_v1_" + m_runTimestamp + ".dat";
|
||||
m_neuralNet.Save(nnFn);
|
||||
Print(" NN auto-saved to ", nnFn, " after ", m_trainBuffer.Count(), " samples");
|
||||
}
|
||||
@@ -1157,17 +1162,17 @@ UpdateHealth(actualReturn);
|
||||
Print(" ", m_neuralNet.LossHistorySummary());
|
||||
|
||||
// CSV dump per debug
|
||||
m_trainBuffer.SaveCsv("NN_TrainingSamples_" + Symbol() + "_" + EnumToString(Period()) + ".csv");
|
||||
m_neuralNet.SaveLossCsv("NN_LossHistory_" + Symbol() + "_" + EnumToString(Period()) + ".csv");
|
||||
m_trainBuffer.SaveCsv("NN_TrainingSamples_" + Symbol() + "_" + EnumToString(Period()) + "_" + m_runTimestamp + ".csv");
|
||||
m_neuralNet.SaveLossCsv("NN_LossHistory_" + Symbol() + "_" + EnumToString(Period()) + "_" + m_runTimestamp + ".csv");
|
||||
|
||||
return loss;
|
||||
}
|
||||
|
||||
bool SaveNNModel() {
|
||||
if(m_neuralNet == NULL || !m_neuralNet.IsInitialized()) return false;
|
||||
string fn = (m_modelFilename != "") ? m_modelFilename
|
||||
: "TR_Agent_NN_" + Symbol() + "_" + EnumToString(Period()) + ".dat";
|
||||
bool ok = m_neuralNet.Save(fn);
|
||||
string fn = (m_modelFilename != "") ? m_modelFilename
|
||||
: "TR_Agent_NN_" + Symbol() + "_" + EnumToString(Period()) + "_" + m_runTimestamp + ".dat";
|
||||
bool ok = m_neuralNet.Save(fn);
|
||||
if(ok) Print("NN model saved: ", fn);
|
||||
else Print("NN model save FAILED: ", fn);
|
||||
return ok;
|
||||
@@ -1201,7 +1206,7 @@ UpdateHealth(actualReturn);
|
||||
|
||||
// Salva summary CSV con learning stats di ogni agente
|
||||
void SaveAgentLearningCsv() const {
|
||||
string fn = "AgentLearning_" + Symbol() + "_" + EnumToString(Period()) + ".csv";
|
||||
string fn = "AgentLearning_" + Symbol() + "_" + EnumToString(Period()) + "_" + m_runTimestamp + ".csv";
|
||||
int fh = FileOpen(fn, FILE_TXT|FILE_WRITE|FILE_COMMON);
|
||||
if(fh == INVALID_HANDLE) return;
|
||||
FileWriteString(fh, "agent,bias,bias_n,rho_learn,rho_learn_n,weight\n");
|
||||
@@ -1221,7 +1226,7 @@ UpdateHealth(actualReturn);
|
||||
|
||||
// --- Serializzazione ---
|
||||
string ModelFilename(string symbol, ENUM_TIMEFRAMES tf) const {
|
||||
return "MultiAgentTest_" + symbol + "_" + EnumToString(tf) + ".model";
|
||||
return "MultiAgentTest_" + symbol + "_" + EnumToString(tf) + "_" + m_runTimestamp + ".model";
|
||||
}
|
||||
|
||||
void SaveState(string symbol, ENUM_TIMEFRAMES tf) const {
|
||||
@@ -1368,7 +1373,7 @@ UpdateHealth(actualReturn);
|
||||
|
||||
// Salva CSV con TUTTI i parametri derivati per analisi periodica
|
||||
void SaveAnalysisCSV(string symbol, ENUM_TIMEFRAMES tf) const {
|
||||
string fn = "TR_Agent_Analysis_" + symbol + "_" + EnumToString(tf) + ".csv";
|
||||
string fn = "TR_Agent_Analysis_" + symbol + "_" + EnumToString(tf) + "_" + m_runTimestamp + ".csv";
|
||||
int fh = FileOpen(fn, FILE_TXT|FILE_WRITE|FILE_COMMON);
|
||||
if(fh == INVALID_HANDLE) { Print("SaveAnalysis: errore apertura ", fn); return; }
|
||||
|
||||
@@ -1494,7 +1499,7 @@ UpdateHealth(actualReturn);
|
||||
|
||||
// ===================== SAVE BAR HISTORY CSV =====================
|
||||
void SaveBarHistoryCSV(string symbol, ENUM_TIMEFRAMES tf) const {
|
||||
string fn = "BarHistory_" + symbol + "_" + EnumToString(tf) + ".csv";
|
||||
string fn = "BarHistory_" + symbol + "_" + EnumToString(tf) + "_" + m_runTimestamp + ".csv";
|
||||
int fh = FileOpen(fn, FILE_TXT|FILE_WRITE|FILE_COMMON);
|
||||
if(fh == INVALID_HANDLE) { Print("BarHistoryCSV: errore apertura ", fn); return; }
|
||||
|
||||
@@ -1528,7 +1533,7 @@ UpdateHealth(actualReturn);
|
||||
|
||||
// ===================== SAVE TRADE HISTORY CSV =====================
|
||||
void SaveTradeHistoryCSV(string symbol, ENUM_TIMEFRAMES tf) const {
|
||||
string fn = "TradeHistory_" + symbol + "_" + EnumToString(tf) + ".csv";
|
||||
string fn = "TradeHistory_" + symbol + "_" + EnumToString(tf) + "_" + m_runTimestamp + ".csv";
|
||||
int fh = FileOpen(fn, FILE_TXT|FILE_WRITE|FILE_COMMON);
|
||||
if(fh == INVALID_HANDLE) { Print("TradeHistoryCSV: errore apertura ", fn); return; }
|
||||
|
||||
@@ -1596,7 +1601,7 @@ UpdateHealth(actualReturn);
|
||||
|
||||
// ===================== SAVE AGENT INTERACTION CSV =====================
|
||||
void SaveAgentInteractionCSV(string symbol, ENUM_TIMEFRAMES tf) const {
|
||||
string fn = "AgentInteraction_" + symbol + "_" + EnumToString(tf) + ".csv";
|
||||
string fn = "AgentInteraction_" + symbol + "_" + EnumToString(tf) + "_" + m_runTimestamp + ".csv";
|
||||
int fh = FileOpen(fn, FILE_TXT|FILE_WRITE|FILE_COMMON);
|
||||
if(fh == INVALID_HANDLE) { Print("AgentInteractionCSV: errore apertura ", fn); return; }
|
||||
|
||||
@@ -1629,7 +1634,7 @@ UpdateHealth(actualReturn);
|
||||
|
||||
// ===================== SAVE DECISION LOG CSV =====================
|
||||
void SaveDecisionLogCSV(string symbol, ENUM_TIMEFRAMES tf) const {
|
||||
string fn = "DecisionLog_" + symbol + "_" + EnumToString(tf) + ".csv";
|
||||
string fn = "DecisionLog_" + symbol + "_" + EnumToString(tf) + "_" + m_runTimestamp + ".csv";
|
||||
int fh = FileOpen(fn, FILE_TXT|FILE_WRITE|FILE_COMMON);
|
||||
if(fh == INVALID_HANDLE) { Print("DecisionLogCSV: errore apertura ", fn); return; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user