Gamestudio Links
Zorro Links
Newest Posts
Specular Shader
by Dooley
Yesterday at 18:17
is 3dgs byDirextX or Opengl?
by Dooley
Yesterday at 18:09
Tensorflow and Python 32 bit
by jcl
Yesterday at 13:28
New Zorro version 2.12
by jcl
05/21/19 17:23
Mixed frequency history (M1+D)
by jcl
05/20/19 12:21
This is my fault-tolerant ATR indicator for you
by OptimusPrime
05/18/19 16:35
missing trade variables
by AndrewAMD
05/18/19 12:37
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
6 registered (kvm, Tavasy, Michael_Schwarz, Ayumi, Dooley, 1 invisible), 474 Guests and 6 Spiders online.
Key: Admin, Global Mod, Mod
Newest Members
Reza65, Pritamchakra, h4h4rd, ccm, Pippo
18224 Registered Users
Topic Options
Rate This Topic
#477094 - 05/16/19 13:29 LookBack mysteries
sdh309795gaas Offline
Member

Registered: 12/07/14
Posts: 126
Loc: 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???
_________________________
Skype: simeon.p@web.de

Top
#477104 - 05/16/19 16:12 Re: LookBack mysteries [Re: sdh309795gaas]
Spirit Offline
Moderator

Registered: 09/02/03
Posts: 830
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.

Top
#477112 - 05/16/19 17:52 Re: LookBack mysteries [Re: Spirit]
sdh309795gaas Offline
Member

Registered: 12/07/14
Posts: 126
Loc: 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?
_________________________
Skype: simeon.p@web.de

Top
#477113 - 05/16/19 23:13 Re: LookBack mysteries [Re: sdh309795gaas]
Spirit Offline
Moderator

Registered: 09/02/03
Posts: 830
Sure when you want the dominant period in bars and not in 96 bar units.

Top
#477114 - 05/17/19 06:28 Re: LookBack mysteries [Re: Spirit]
sdh309795gaas Offline
Member

Registered: 12/07/14
Posts: 126
Loc: 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"
_________________________
Skype: simeon.p@web.de

Top



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

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