As part of my own code development, I have put together a small efs which saves data. What I found nice about it is it can be used to trace the execution of an efs, thus the name (trace.efs).
I am currently using this to troubleshoot my own code. I typically will add trace(); on the same line as the data I am recording. Put the variable in the parenthesis.
When no longer required, you can remove the data from between the parenthesis, as this will no longer be recorded, and is not a significant performance hit.
I have uploaded this in my fileshare area
trace()
This efs is written to record all the data from the initial efs load and will continue in real time. Hopefully someone will find this useful.
PHP Code:
/************************************************
Steve Hare © January 2004
Use and/or modify this code freely. If you redistribute it
please include this and/or any other comment blocks and a
description of any changes you make.
*************************************************/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The purpose of this efs is to record the data from an efs wherever you choose to place "trace()" .The data
must be within the parenthesis. Care should be taken, as too much data can be overwhelming. Depending
on how your code is written, and how much branching is used, the order of the recorded information may vary.
Therefore, use spaces and labels to assist in helping understand where the data being recorded is from. The
recorded data is saved in the default formula output directory, change variable nStudy to match up with
the name of your code
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
var tracedata = new Array();
var tracefile = "";
var nStudy = "sample";
var barcount = 0;
var nLastRawTime = 0;
function preMain() {
tracefile = new File("Trace "+nStudy+".txt");
tracefile.open("wt+");tracefile.close();//opens and overwrites previous file
}
function main(){
if (/* getValue("rawtime",0) != nLastRawTime || */ getBarState() == BARSTATE_NEWBAR) {//runs portion of code every bar
nLastRawTime = getValue("rawtime",0);
barcount++;
//example usage
trace(barcount);//always record barcount first
trace(open());
trace("close:"+close());
trace("put text or description of code");// need to describe where in program the data is being recorded
trace(" long buy function");// use spaces to make identification of different sections of the code
trace("step 37");
trace();// blanks, or null values are not recorded
trace("save");//this saves the data accumulated as a line in the file, put right before end of main
return;
}
}
function trace(data1){//routine that saves the data
if(data1==null){return;}
tracedata.push(data1);//adds datapoint to array
if(data1 == "save"){//section saves data to a file
tracedata.pop();//removes "save" from array
tracefile.open("at+");tracefile.writeln(tracedata);tracefile.close();
var i;
var iend = tracedata.length;
for (i=0;i<=iend;i++){tracedata.pop();}//removes all data from array
}
}
PHP Code:
sto0=vMAofStoch1.getValue(MAStudy.MA);trace(sto0);
I have uploaded this in my fileshare area
trace()
This efs is written to record all the data from the initial efs load and will continue in real time. Hopefully someone will find this useful.
Comment