Gamestudio Links
Zorro Links
Newest Posts
FXCM: "Can't connect to price server"
by jcl. 06/19/19 15:47
Data Execution Prevention Strikes Again
by Dooley. 06/19/19 15:38
assert
by jcl. 06/19/19 14:59
Bring the old grin back!
by Michael_Schwarz. 06/19/19 07:56
Help with calculation
by Qw3rty. 06/18/19 08:01
AUM Magazine
Latest Screens
The Space Between
Pogostuck: Rage With Your Friends
Worst Case Z
AckCon'18 - Lotter vs the World 2 - Preview Release
Who's Online Now
13 registered members (AndrewAMD, Kaga, JeyKey II, Dooley, Grat, kvm, alibaba, Ayumi, MatPed, 1 invisible), 632 guests, and 3 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Qw3rty, Dal, Carson, giantj, dh85
18236 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
LookBack mysteries #477094
05/16/19 11:29
05/16/19 11:29
Joined: Dec 2014
Posts: 130
Germany
sdh309795gaas Offline OP
Member
sdh309795gaas  Offline OP
Member

Joined: Dec 2014
Posts: 130
Germany
I'm having a headache for some time with Zorros LookBack variable and I finally would like to totally understand this. My current project is using a complex indicator, that's why I included an indicator function in my demo code. The most extreme TimeFrames in my Project are M15 and D1. So this is my demo code:

Code:
void indicator()
{
 vars internal = series(price());

 //int Cycle = DominantPeriod(internal,20);

 int n;
	
 for(n = LookBack - 2; n < LookBack; n++)
 {
   if(is(LOOKBACK)==0) printf("n%s Internal at index %d: %.5f, TimeFrame = %d", Asset, n, internal[n], TimeFrame);
 }
}

function run()
{
 StartDate = 20160101;
 EndDate = 20160107;
 BarPeriod = 15;

 LookBack = 200;
	
 int n;

 while(asset(loop("EUR/USD", "USD/JPY")))
 {
  TimeFrame = 1440 / BarPeriod; //D1
	
  vars Price_D1 = series(price());
  vars Trend_D1 = series(LowPass(Price_D1,200));
		
  for(n = LookBack - 2; n < LookBack; n++)
  {
   if(is(LOOKBACK)==0) printf("n%s External at index %d: %.5f, TimeFrame = %d", Asset, n, Price_D1[n], TimeFrame);
  }

  indicator();
		
  TimeFrame = 15 / BarPeriod; //M15
		
  vars Price_M15 = series(price());
  vars Trend_M15 = series(LowPass(Price_D1,200));
		
  for(n = (LookBack - 2); n < LookBack; n++)
		{
  if(is(LOOKBACK)==0) printf("n%s External at index %d: %.5f, 
  TimeFrame = %d", Asset, n, Price_M15[n], TimeFrame);
  }

  indicator();
 }
}



Mystery #1
My LowPass (Line 30 and 42) is using a period of only 200. Why does (my) Zorro demand LookBack = 288?? Why exactly 88 bars more?

Mystery #2
Please set LookBack = 288 now.
Why do I get identical prices with TimeFrame = 96 (D1)? I'd expect these prices to differ just like the M15 prices do.

Isn't the lookback mechanism clever enough to see that my highest timeframe is D1, go back 288 Days and then start filling all the series with 200 elements (overwriting the M15 series if necessary)?

Mystery#3
Please uncomment line 5 now (Cycle). Why is the needed LookBack period suddenly exploding to 9600 bars when the period value is just 20, much lower than the period of the LowPass filter???

Re: LookBack mysteries [Re: sdh309795gaas] #477104
05/16/19 14:12
05/16/19 14:12
Joined: Sep 2003
Posts: 836
Spirit Offline

Moderator
Spirit  Offline

Moderator

Joined: Sep 2003
Posts: 836
I can at least solve the mystery 3 because I know that DominantPeriod needs 100 bars lookback period. Multiplied with your timeframe, you get 9600 bars.

Re: LookBack mysteries [Re: Spirit] #477112
05/16/19 15:52
05/16/19 15:52
Joined: Dec 2014
Posts: 130
Germany
sdh309795gaas Offline OP
Member
sdh309795gaas  Offline OP
Member

Joined: Dec 2014
Posts: 130
Germany
oh, 96*100... I didn't see this relation but I still don't understand the reason behind this.

I also read this in the manual:

"Filter functions are normally cumulative and require a long-enough LookBack period before the filter data is stable. As a rule of thumb, allow about 200 bars lookback period for detecting dominant cycle/phase..."

By setting lookback = 200 I'd expect to have 200 bars in all series. If DominantPeriod needs only 100 bars as you stated, shouldn't it be fine with 200?

Re: LookBack mysteries [Re: sdh309795gaas] #477113
05/16/19 21:13
05/16/19 21:13
Joined: Sep 2003
Posts: 836
Spirit Offline

Moderator
Spirit  Offline

Moderator

Joined: Sep 2003
Posts: 836
Sure when you want the dominant period in bars and not in 96 bar units.

Re: LookBack mysteries [Re: Spirit] #477114
05/17/19 04:28
05/17/19 04:28
Joined: Dec 2014
Posts: 130
Germany
sdh309795gaas Offline OP
Member
sdh309795gaas  Offline OP
Member

Joined: Dec 2014
Posts: 130
Germany
Hm... this is how I think my code works (obviously it isn't, but why?):

1) TimeFrame is set in run()

2) TimeFrame gets passed on to indicator()

3) indicator() creates local series with 200 M15 or 200 D1 bars, depending on TimeFrame

4) DominantPeriod uses the last 100 M15 or 100 D1 bars. By the way, if 100 bars is needed, what's the value the manual is talking about then: "valid range = 10..60"


Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1