function continueStats(string filename)
{
if(!is(TRADEMODE)) return; //only load/save state info when live trading
static int numOpenLastCheck; //track changes in trade open/closes
char path[100]; //full path to parameter .ini file
if(is(INITRUN)) //load previously saved trade stats (if any) upon Zorro start
{
numOpenLastCheck=0;
char param[30]; //asset-labeled parameter .ini file
char fcontent[2500]; //file content from parameter .ini file
sprintf(path,"Strategy\\%s",filename);
if(!file_date(path)) msg("#>>WARNING<< no stats file found!\nThis is normal if this is the very first run of a new strategy");
string fcontent = file_content(path);
//load from disk current state info for each asset
ASSETLOOP
{
sprintf(param,"%s_NumWinLong",Asset);
NumWinLong = strvar(fcontent,param);
sprintf(param,"%s_NumWinShort",Asset);
NumWinShort = strvar(fcontent,param);
sprintf(param,"%s_NumLossLong",Asset);
NumLossLong = strvar(fcontent,param);
sprintf(param,"%s_NumLossShort",Asset);
NumLossShort = strvar(fcontent,param);
sprintf(param,"%s_WinLong",Asset);
WinLong = strvar(fcontent,param);
sprintf(param,"%s_WinShort",Asset);
WinShort = strvar(fcontent,param);
sprintf(param,"%s_LossLong",Asset);
LossLong = strvar(fcontent,param);
sprintf(param,"%s_LossShort",Asset);
LossShort = strvar(fcontent,param);
}
printf("\nRead trade stats from disk");
}
else if((NumOpenLong+NumOpenShort) != numOpenLastCheck) //save stats to disk upon trade count changes
{
FILE *out;
char line[2500], tmp[2500]; //line of data for .ini file
sprintf(path,"Strategy\\%s",filename);
if (!(out = fopen(path, "w")))
{
printf("\nERROR trying to open file for write:\n%s\n",path);
return;
}
//store to disk current state info for each asset
ASSETLOOP
{
sprintf(line,"%s_NumWinLong = %i\n",Asset,NumWinLong);
sprintf(tmp,"%s_NumWinShort = %i\n",Asset,NumWinShort);
strcat(line,tmp);
sprintf(tmp,"%s_NumLossLong = %i\n",Asset,NumLossLong);
strcat(line,tmp);
sprintf(tmp,"%s_NumLossShort = %i\n",Asset,NumLossShort);
strcat(line,tmp);
sprintf(tmp,"%s_WinLong = %f\n",Asset,WinLong);
strcat(line,tmp);
sprintf(tmp,"%s_WinShort = %f\n",Asset,WinShort);
strcat(line,tmp);
sprintf(tmp,"%s_LossLong = %f\n",Asset,LossLong);
strcat(line,tmp);
sprintf(tmp,"%s_LossShort = %f\n",Asset,LossShort);
strcat(line,tmp);
if (!fwrite(line, sizeof(char), strlen(line), out))
{
printf("\nWRITE ERROR:\n%s\n",path);
fclose(out);
return;
}
else printf("\nSaved trade stats to disk");
}
fclose(out);
numOpenLastCheck = NumOpenLong+NumOpenShort; //track changes in real and phantom trades
}
}