Gamestudio Links
Zorro Links
Newest Posts
EntryDelay Clarification
by Ger1
Yesterday at 22:11
strf length-limitation
by Grant
Yesterday at 18:49
Deformers struct in MDL7 abspeichern.
by tagimbul
Yesterday at 17:41
Compiling Trading Strategies with C++
by pascalx
Yesterday at 12:18
global breakeven of a portfolio inside tmf function
by kmerlo
08/19/17 12:21
AUM Magazine
Latest Screens
AckCon'17: Lotter vs The World
Triton Wing
ZeaL
Computer Repair Simulator
Collider (working title)
Who's Online
11 registered (3dgamelight, Grant, alibaba, Iglarion, jrath, JoFo, jyd, tagimbul, mk_1, 1 invisible), 447 Guests and 4 Spiders online.
Key: Admin, Global Mod, Mod
Newest Members
mqo, Aimak, Grant, Marce, pascalx
17719 Registered Users
Topic Options
Rate This Topic
#465353 - 04/21/17 10:28 Exporting data from multiple timeframe
gtell Offline
Junior Member

Registered: 07/17/16
Posts: 57
Dear all,
dear jcl,

I have a question regarding multiple timeframe indicator.
I am still using Zorro 1.50.
Suppose that I want to export the value of Alma indicator with a lag of 3 bars.
The following script does the job:

Code:
function run()
{
	StartDate = 20160101;
	EndDate = 20161231;
	BarPeriod = 60;
	LookBack = 200;
   
   
	set(RULES);
	set(LOGFILE);
	set(PLOTNOW);
	Spread = RollLong = RollShort = Commission = Slippage = 0;
	
	char line[300];	
        string Name = strf("DataTestMF2_%s%s.csv", strmid(Asset,0,3), strmid(Asset,4,3));
	
	vars CLOSE = series(priceClose());
	
        var alma = scale(ALMA(CLOSE,10),100)/100;
        vars ALMA = series(alma);
      
		
	if(is(INITRUN)) {		
		file_delete(Name);
                file_write(Name,"Date, Open, High, Low, Close, ALMA",0);
   }
	if(!is(LOOKBACK)) {
		sprintf(line,
			"n%04i-%02i-%02i %02i:%02i, %.5f, %.5f, %.5f, %.5f, %.5f",
	        year(),month(),day(),hour(),minute(),
	        priceOpen(),priceHigh(),priceLow(),priceClose(),ALMA[3]);
		
		if(frame(0)) file_append(Name, line);
   }
}




the following are the first lines of the export:

Code:
Date, Open, High, Low, Close, ALMA
2016-01-03 23:00, 1.08770, 1.08792, 1.08672, 1.08675, -0.54380
2016-01-04 00:00, 1.08658, 1.08675, 1.08458, 1.08544, -0.57637
2016-01-04 01:00, 1.08565, 1.08580, 1.08435, 1.08461, -0.57091
2016-01-04 02:00, 1.08463, 1.08621, 1.08273, 1.08599, -0.55041
2016-01-04 03:00, 1.08626, 1.08760, 1.08588, 1.08721, -0.53313
2016-01-04 04:00, 1.08729, 1.08733, 1.08672, 1.08722, -0.54062
2016-01-04 05:00, 1.08725, 1.08838, 1.08698, 1.08793, -0.57339
2016-01-04 06:00, 1.08792, 1.09053, 1.08739, 1.08964, -0.58233
2016-01-04 07:00, 1.08964, 1.09028, 1.08843, 1.08920, -0.54234
2016-01-04 08:00, 1.08957, 1.09207, 1.08820, 1.09127, -0.48632
2016-01-04 09:00, 1.09139, 1.09466, 1.09107, 1.09255, -0.43851
2016-01-04 10:00, 1.09251, 1.09331, 1.09129, 1.09307, -0.38145
2016-01-04 11:00, 1.09337, 1.09363, 1.09055, 1.09064, -0.31208
2016-01-04 12:00, 1.09059, 1.09204, 1.08976, 1.09187, -0.24255
2016-01-04 13:00, 1.09178, 1.09252, 1.08966, 1.09029, -0.14962
2016-01-04 14:00, 1.09012, 1.09051, 1.08461, 1.08534, -0.07119
2016-01-04 15:00, 1.08546, 1.08633, 1.08335, 1.08416, -0.05952
2016-01-04 16:00, 1.08443, 1.08482, 1.08013, 1.08033, -0.09868
2016-01-04 17:00, 1.08039, 1.08125, 1.07814, 1.08020, -0.14860
2016-01-04 18:00, 1.08024, 1.08234, 1.08002, 1.08198, -0.26521
2016-01-04 19:00, 1.08183, 1.08250, 1.08129, 1.08224, -0.43997
2016-01-04 20:00, 1.08223, 1.08283, 1.08159, 1.08273, -0.58506
2016-01-04 21:00, 1.08272, 1.08377, 1.08263, 1.08294, -0.66573
2016-01-04 22:00, 1.08296, 1.08374, 1.08289, 1.08336, -0.68048
2016-01-04 23:00, 1.08325, 1.08335, 1.08274, 1.08297, -0.66300



it looks good.
Now, suppose that I want to add the value of an indicator calculated on a different timeframe.
What I expect is that the output starts from the same date and I should have 3 more columns. The following is the script:

Code:
function run()
{
    StartDate = 20160101;
    EndDate = 20161231;
    BarPeriod = 5;
    TimeFrame = 12;
    LookBack = 1200;
   
   
    set(RULES);
    set(LOGFILE);
    set(PLOTNOW);
    Spread = RollLong = RollShort = Commission = Slippage = 0;
    
    vars CLOSE = series(priceClose());
    
   var alma = scale(ALMA(CLOSE,10),100)/100;
   vars ALMA = series(alma);
   
   TimeFrame = 1;
   
   var PriceDiff = (priceClose(0)-priceClose(6))/priceClose(0);     
   PriceDiff = scale(PriceDiff, 100)/100;
   
   vars PD = series(PriceDiff);
   
   var pd0 = PD[0];
   var pd1 = PD[1];
   var pd2 = PD[2];
   
   TimeFrame = 12;
   
    char line[300]; 
   string Name = strf("DataTestMF1_%s%s.csv", strmid(Asset,0,3), strmid(Asset,4,3));
        
    if(is(INITRUN)) {       
        file_delete(Name);
      file_write(Name,"Date, Open, High, Low, Close, ALMA, ret1, ret1, ret1",0);
   }
    if(!is(LOOKBACK)) {
        sprintf(line,
            "n%04i-%02i-%02i %02i:%02i, %.5f, %.5f, %.5f, %.5f, %.5f, %.5f, %.5f, %.5f",
            year(),month(),day(),hour(),minute(),
            priceOpen(),priceHigh(),priceLow(),priceClose(),ALMA[3], pd0, pd1, pd2);
        
        if(frame(0)) file_append(Name, line);
   }
}



Basically this script export the value of lagged alma in the 60 minutes timeframe and the value of price change in 5 minutes timeframe.
The output is the following:

Code:
Date, Open, High, Low, Close, ALMA, pd0, pd1, pd2
2016-01-08 03:00, 1.08853, 1.08908, 1.08762, 1.08868, 0.41190, 0.28578, 0.34522, 0.21621
2016-01-08 04:00, 1.08869, 1.08894, 1.08804, 1.08827, 0.39879, 0.01907, -0.09674, -0.21776
2016-01-08 05:00, 1.08812, 1.08844, 1.08723, 1.08749, 0.38246, -0.11665, -0.12942, -0.27975
2016-01-08 06:00, 1.08744, 1.08854, 1.08734, 1.08777, 0.34529, -0.24808, 0.02944, 0.07264
2016-01-08 07:00, 1.08774, 1.08815, 1.08553, 1.08617, 0.29268, -0.69163, -0.66401, -0.81675
2016-01-08 08:00, 1.08595, 1.08889, 1.08551, 1.08874, 0.25388, 0.94465, 0.79819, 0.32647
2016-01-08 09:00, 1.08851, 1.09001, 1.08691, 1.08711, 0.23153, -0.17089, -0.38559, -0.33323
2016-01-08 10:00, 1.08724, 1.08830, 1.08671, 1.08716, 0.21211, -0.29672, -0.23913, -0.28216
2016-01-08 11:00, 1.08702, 1.08753, 1.08587, 1.08694, 0.19206, 0.26347, 0.52108, 0.33155
2016-01-08 12:00, 1.08706, 1.08768, 1.08615, 1.08725, 0.18528, -0.11513, 0.00355, 0.02372
2016-01-08 13:00, 1.08715, 1.08774, 1.08590, 1.08642, 0.19415, 0.09200, 0.09518, 0.33694
2016-01-08 14:00, 1.08624, 1.08710, 1.08034, 1.08466, 0.19029, -0.60163, -0.56962, -0.91718
2016-01-08 15:00, 1.08415, 1.08907, 1.08340, 1.08652, 0.18173, -0.32238, -0.00729, -0.30864
2016-01-08 16:00, 1.08697, 1.09093, 1.08644, 1.09059, 0.17844, 0.43507, 0.05261, -0.02440
2016-01-08 17:00, 1.09049, 1.09172, 1.08846, 1.08876, 0.17220, -0.45878, -0.20032, -0.09039
2016-01-08 18:00, 1.08843, 1.08924, 1.08704, 1.08893, 0.15538, 0.32946, 0.42800, 0.06519
2016-01-08 19:00, 1.08895, 1.09049, 1.08863, 1.08959, 0.14895, -0.07918, -0.18478, -0.08822
2016-01-10 23:00, 1.08942, 1.09466, 1.08900, 1.09455, 0.19131, 0.86701, 0.05060, 0.03761
2016-01-11 00:00, 1.09440, 1.09706, 1.09331, 1.09374, 0.24686, -0.15974, -0.18004, -0.39795
2016-01-11 01:00, 1.09367, 1.09413, 1.09242, 1.09376, 0.26194, 0.05265, 0.04224, 0.08446
2016-01-11 02:00, 1.09369, 1.09464, 1.09238, 1.09385, 0.27175, -0.00331, -0.07078, 0.16713
2016-01-11 03:00, 1.09372, 1.09382, 1.09180, 1.09213, 0.30866, 0.05294, 0.04687, 0.08110
2016-01-11 04:00, 1.09207, 1.09239, 1.09082, 1.09134, 0.35766, -0.21857, -0.31536, -0.33227
2016-01-11 05:00, 1.09126, 1.09157, 1.09083, 1.09142, 0.38023, 0.04102, 0.04465, 0.11003
2016-01-11 06:00, 1.09134, 1.09194, 1.09094, 1.09187, 0.37771, 0.07923, -0.02478, 0.12567
2016-01-11 07:00, 1.09188, 1.09342, 1.09146, 1.09272, 0.36237, 0.40401, 0.62812, 0.47816
2016-01-11 08:00, 1.09200, 1.09238, 1.08932, 1.09001, 0.33420, -0.39875, -0.30972, -0.83781
2016-01-11 09:00, 1.08988, 1.09009, 1.08726, 1.08836, 0.31216, -0.12036, -0.50657, -0.38999
2016-01-11 10:00, 1.08877, 1.08938, 1.08816, 1.08862, 0.30770, 0.12678, -0.14968, -0.12121
2016-01-11 11:00, 1.08868, 1.09019, 1.08849, 1.08995, 0.31188, 0.24670, 0.39044, 0.07744
2016-01-11 12:00, 1.08997, 1.09071, 1.08927, 1.08991, 0.29939, -0.02807, -0.14362, -0.31769



So the question is: why it does not start from January 3th?

Thanks for your time in reading this.
Cheers.




Edited by gtell (04/27/17 18:43)

Top
#465366 - 04/21/17 17:54 Re: Exporting data from multiple timeframe [Re: gtell]
jcl Offline

Chief Engineer

Registered: 07/22/00
Posts: 25661
Loc: Frankfurt
I've just tested your script and the lookback period indeed ends January 8, while it should end January 3. I will give this to the developers to check and fix. Apparently the lookback period ends too late when it goes back into the previous year.

Top
#465373 - 04/21/17 19:39 Re: Exporting data from multiple timeframe [Re: jcl]
gtell Offline
Junior Member

Registered: 07/17/16
Posts: 57
ok thanks. please let me know why this is happening because the script does not look back into historical data so long. Alma has 10 bars period which correspond to 120 on 5 mins chart and price difference has a period of 6 bars on 5 mins chart. scale has a period of 100. but 100 bars on 60 mins it should correspond to 1200 bars in the 5 mins timeframe.
So I suppose it should not happen but maybe I am wrong.
thanks again.

Top
#465442 - 04/27/17 18:46 Re: Exporting data from multiple timeframe [Re: gtell]
gtell Offline
Junior Member

Registered: 07/17/16
Posts: 57
Hi jcl,

there is one more problem here.
The problem is that in the second csv file I would expect that pd1 is the lagged value of pd0 and pd2 is the lagged valiue of pd1.
But from data, this it is not true.

Do you have any feedback from developers?
Thanks.
Best regards.

Top
#465458 - 04/28/17 14:58 Re: Exporting data from multiple timeframe [Re: gtell]
jcl Offline

Chief Engineer

Registered: 07/22/00
Posts: 25661
Loc: Frankfurt
You're only appending any 12th line to the file. So the lagged values are long gone.

Top



Gamestudio download | chip programmers | Zorro platform | shop | resources | magazine | manual | support faq | bugs | beta features

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) 3dgamestudio.net