Very kindly posted by Chalton on T2w
Belflan
I would advise you to use Global Variables (GV). They are extremely powerful and allow you to store and pass values across windows and radar screens, including between symbols and timeframes. You can find a document on global variables on the TS support sites.
The pre-requisite is to have a copy of globalvariable.dll sitting in the program directory where you have installed Tradestation. Again copies of this file are available on the TS support site and I believe there are copies floating around T2W.
The code below is a simple example to illustrate how you can pick up the value (in this case the closing price) from 1200 and compare it to the current bar. This example was created after the market closed, so I also included yesterday's date as a filter. The first if statement is creating a global variable called 1200_close and storing the closing price when the time is 1200.
The second if statement compares for each bar (provided we have passed 1200 hours, the close of that bar and the contents of the GV. If the current close is larger it plots the result on the chart and also sends a print statement out to the Easylanguage Output bar, which is useful when you are developing code.
Now you could replace the date filter with current date and you could also make the name of the GV dynamic. For example you can include the symbol name automatically, which is useful if you want to do calculations based on data from several symbols or indicators.
Anyway this should start you off
Charlton
Vars:
initialise_GV(0);
if time = 1200 and date = ELDate(10,29,2009) then
initialise_GV =gvsetnamedint("1200_close", close) ;
if close > gvgetnamedint("1200_close",2) and date = ELDate(10,29,2009) and time > 1200 then begin
plot1(close - gvgetnamedint("1200_close",0));
print(time, " Time 1200 value ", gvgetnamedint("1200_close",2 ), " current value ", close, " Diff ",(close - gvgetnamedint("1200_close",0)) );
end
//replace ELDate(10,29,2009) with ELDate(CurrentDate) - to do the test for the current date
//Could replace the name of the GV by one which contains the symbol being processed e.g. gvsetnamedint(getsymbolname + "_1200_close) would create
//If the symbol was, say IBM, the GV would then be called IBM_1200_close
Here is what the print output looks like (this is running on symbol $INDU):
1230.00 Time 1200 value 9872.00 current value 9898.80 Diff 26.80
1300.00 Time 1200 value 9872.00 current value 9914.74 Diff 42.74
1330.00 Time 1200 value 9872.00 current value 9919.28 Diff 47.28
1400.00 Time 1200 value 9872.00 current value 9928.57 Diff 56.57
1430.00 Time 1200 value 9872.00 current value 9928.27 Diff 56.27
1500.00 Time 1200 value 9872.00 current value 9957.29 Diff 85.29
1530.00 Time 1200 value 9872.00 current value 9950.64 Diff 78.64
1600.00 Time 1200 value 9872.00 current value 9962.88 Diff 90.88
__________________
Onwards and Upwards