Hello, I would like to ask about whether EFS supports integration across scripts. Just like what we do in other languages, such as C++ or VB, we are able to use other local variables declared in other scripts within the same project (or you call the methods or functions of other objects). I am wondering whether it is possible to use variables in a different script from where these variables are declared. And if we do, it will be very helpful if you can simply describe how. Thank you very much!
Announcement
Collapse
No announcement yet.
Integration problem
Collapse
This topic is closed.
X
X
-
Hi,
You can pass values from one script to another via "setGlobalValue()" & "getGlobalValue()" .
Not an expert on global variable but try a search for "setGlobalValue()" & "getGlobalValue()" in the knowledge base and forum.
Alternatively you can have one efs write to a text file and another read from it. Do a search for "file object" in the knowledgebase.
Wayne
-
Dynamic global values
Dear all,
I have a problem with the set/getGlobalValue(). If the variable I would like to return is an array rather than a constant, is it possible to indicate the element within the array? Currently I could only get the last item of the array from one script to another. Thank you!
Comment
-
Teresa,
You should be able to access anything you place into global memory. I've done quite a bit of work with these features and I've passed entire arrays of structures into global memory, then sucked them into other scripts as needed.
I don't know how you are trying to accomplish your project, but anything you place into global memory should be instantly available to the other efs scripts.
If you are passing an array (or structured array), then the entire array will be available.
let me know if you need more help and I'll try to post some examples for you?Brad Matheny
eSignal Solution Provider since 2000
Comment
-
Dear Doji3333
Thank you for your reply, and I would appreciate if you can show me a simple example about passing an array from one script to another, including the way declaring the global values, setting the values, and get the values from another script. I would like to have an array contains all the data about the trading time of one security, and pass them one by one to another script to control simultaneous trades on another security. Thank you very much!
Comment
-
OK. Here you go.
This is an example of a FEEDER and a READER. The FEEDER feeds data to the reader.
PHP Code:
var myArray = new Array();
var myObj = new Object;
myObj.Item1 = 1;
myObj.Item2 = 100;
myObj.Item3 = "LONG";
myArray.push(myObj);
var myObj = new Object;
myObj.Item1 = -1;
myObj.Item2 = 100;
myObj.Item3 = "SHORT";
myArray.push(myObj);
var myObj = new Object;
myObj.Item1 = 0;
myObj.Item2 = 0;
myObj.Item3 = "FLAT";
myArray.push(myObj);
/* The above completes a simple THREE item array containing the three unique ITEMS as a structure. Now we'll pass this info to another efs using the GLOBAL VARIABLE feature.
*/
setGlobalValue("FeederID1", myArray);
PHP Code:
var ReaderData = getGlobalValue("FeederID1");
if (ReaderData != null) { // Retrieved the array.
var MALength = ReaderData.length; // Gets the length of the array
var x = 0;
while (x <= MALength-1) {
// Output the array data to the FOW window
debugPrintln("["+x+"] "+ReaderData[x].Item1+" "+ReaderData[x].Item2+" "+ReaderData[x].Item3);
x++; // increment x
}
}
Remember, as you change the contents of the array in the first file, you need to continue to "setGlobalValue" to place the new updated array data into memory. This process is SET to update the global variable, then GET to retrieve it from memory.
Hope this helps?Brad Matheny
eSignal Solution Provider since 2000
Comment
-
you are very welcome Wayne. I've learned many things about EFS over the 10+ years I've been working with it. Wish I could share all of my knowledge to help others, but it would take me about 10 years to do that. LOL
Let me know if you need more help?Brad Matheny
eSignal Solution Provider since 2000
Comment
Comment