[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [AmiBroker] Array Problem - two questions



PureBytes Links

Trading Reference Links

Hello,
 
As I wrote there is NO 1:1 scale because units are DIFFERENT (time vs price).
It is a matter of ASSUMPTION. You need to ASSUME that
say one dollar is equivalent to one day. Or 10 pips is equivalent to one minute bar.
 
It is purely subjective and personal assumption that one needs to make if you want to come up with
"angle" in time vs price chart.
 
It is the same as you draw for example chart of fuel consumption vs speed.  Units are unrelated. How come with an "angle" in chart
that shows gallons per milesperhour ?
 
 
And you don't need to modify your LineArray AT ALL - it is all correct as it is because AmiBroker displays it correctly.
 
What you need is to change the calculation of NUMERIC ANGLE.
 
Angle is NOT:
ANGLE= atan((Y1-Y0)/(X1-X0));
 
Angle is:
 
ANGLE= atan(FACTOR * (Y1-Y0) / (X1-X0));
 
where
FACTOR depends on your arbitrary decision.
If you are using EOD charts and *assume* that one dollar is equivalent to one day, then the factor will be 1.
 
If you are using minute charts and *assume* that 10 pips is equivalent to one minute, then the factor is 10.
 
If you want to see correspondence between what you see ON SCREEN - i.e. the "visual angle" (which is NOT constant)
you need to perform FACTOR calculations based on
a) PIXEL dimensions of chart window
b) number of bars currently displayed
c) Ymin/max range of Y axis
 
The calculations are shown below
 
//Var = CCI(20); // Comment out this line
Var =
MA(C,20);Plot(Var,"",1,128);  // Uncomment and try this line instead


START=
34;END=1
;
ARRAY= Var ;
L1=
LastValue(Cum(1
));
X0=L1-START;
X1=L1-END;
Y0=ARRAY[X0];
Y1=ARRAY[X1];

PixelFactor =
Status("pxheight")/Status("pxwidth"
);
XYFactor = (
Status("axismaxy")-Status("axisminy"))/(Status("lastvisiblebarindex")-Status("firstvisiblebarindex"
));

FACTOR = PixelFactor / XYFactor;

ANGLE=
atan
(FACTOR*(Y1-Y0)/(X1-X0));
Color =
IIf(Y1 > Y0,5,4); // Green = Positive    Red = Negative

Title1=
"ANGLE="+WriteVal(ANGLE)+" RADS"+", ["+WriteVal(45*ANGLE/atan(1),1.0)+" DEGS]"
;
Plot(ARRAY,"",12,1
);
Plot(LineArray(X0,Y0,X1,Y1),Title1 + "\nLine to Last Value of End Point Value",Color ,1
);
Plot(LineArray(X0,Y0,X1,Y0),"Horizontal",2,1
);
Plot(LastValue(Y0),"\nBegin at This point in the Array",10,1)

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
From: Mr. Valley
Sent: Thursday, November 22, 2007 9:15 AM
Subject: RE: [AmiBroker] Array Problem - two questions

 
Ok, two questions:
How does one scale the chart "as a default programmatically" to a 1:1 scale ratio, just like graph paper?
How does one calculate the degree angle of a moving average?
I tried using 4 points but I can't seem to figure out what the LineArray() is asking for...
It errors out on me...
 

/*EMA Angle */

Var = Close;

START=34;

END=1;

ARRAY= Var ;

//L1=LastValue(Cum(1));

L1=EMA(C,34);

START = Ref(EMA(C,34),-34);

END = EMA(C,34);

//X0=L1- START;

//X1=L1 - END;

//Y0=ARRAY[X0];

//Y1=ARRAY[X1];

ARRAY = EMA(C,34);

Plot(Close,"Close",1,128);

//Plot(ARRAY,"",2,1);

Plot(LineArray(X0,Y0,X1,Y1),"",4,1);

Plot(LineArray(X0,Y0,X1,Y0),"",4,1);

Plot(Y0,"",10,1);

Plot(Y1,"",11,1);

Plot(X0,"",10,1);

Plot(X1,"",11,1);

ANGLE= atan((Y1-Y0)/(X1-X0));

Title="ANGLE="+WriteVal(ANGLE)+" RADS"+", ["+WriteVal(45*ANGLE/atan(1),1.0)+" DEGREES]";

 
-----Original Message-----
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]On Behalf Of Tomasz Janeczko
Sent: Thursday, November 22, 2007 12:28 AM
To: amibroker@xxxxxxxxxxxxxxx
Subject: Re: [AmiBroker] Array Problem

Hello,
 
Please note that "visual angle" has nothing to do with the "angle" you are computing using your formula.
 
What you are doing in the formula is to calculate "angle" from chart that has completely *different* X/Y units.
The X unit is time , the Y unit is price. These two can not give you ANGLE. Angle can only be given
if you have *SAME* units for X and Y. Therefore the concept of "angle" in TIME vs PRICE chart is flawed from the start.
 
The reason why you are getting non-zero for *JPY currencies is simply because delta Y is in range 30-40
so it "corresponds" with 34 bars you have selected.
 
Now if you apply the formula to say EURUSD the y delta will be in 0.01 range so you will divide 0.01 $/ 34 and the
"angle" will be close to zero.
 
The "visual angle" you see on the chart is the result of scaling. Again note that X and Y units are completely unrelated
(time vs price) so to fill the window area you need to apply the scaling.
The scaling is different when
a) your window size changes
b) you zoom in/zoom out 
c) display symbol with different min Y max Y dynamic range
 
Happy Thanksgiving.

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
From: Mr. Valley
Sent: Thursday, November 22, 2007 8:13 AM
Subject: FW: [AmiBroker] Array Problem

Chart3 is a better one it looks like about 40 degrees, but it sure isn't zero.
Is there something in the Precision as it is on FX symbol?
 
 
-----Original Message-----
From: amibroker@xxxxxxxxxps.com [mailto:amibroker@yahoogroups.com]On Behalf Of Mr. Valley
Sent: Thursday, November 22, 2007 12:00 AM
To: amibroker@xxxxxxxxxps.com
Subject: RE: [AmiBroker] Array Problem

I tried SetBarsRequired and that didn't do it, but it can't be right.
See attached.
 
-----Original Message-----
From: amibroker@xxxxxxxxxps.com [mailto:amibroker@yahoogroups.com]On Behalf Of Mr. Valley
Sent: Wednesday, November 21, 2007 11:46 PM
To: amibroker@xxxxxxxxxps.com
Subject: RE: [AmiBroker] Array Problem

TJ,
Yes and indeed both "work", but the subtle difference is that that in the title line on the CCI(20) it will display the angle and degrees whereas the other does not and displays 0 on my end...
Do they both display the values on your end?
Thanks for the reply and Happy Thanksgiving to you and yours.
Mr. Valley
 
-----Original Message-----
From: amibroker@xxxxxxxxxps.com [mailto:amibroker@yahoogroups.com]On Behalf Of Tomasz Janeczko
Sent: Wednesday, November 21, 2007 11:41 PM
To: amibroker@xxxxxxxxxps.com
Subject: Re: [amibroker] Array Problem

Both work OK on my end. Do you have at least 54 bars in your data set ?

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
From: Mr. Valley
Sent: Thursday, November 22, 2007 7:25 AM
Subject: [amibroker] Array Problem

resend with subject line
 
-----Original Message-----
From: Mr. Valley [mailto:valleymj@comcast.net]
Sent: Wednesday, November 21, 2007 11:23 PM
To: amibroker@xxxxxxxxxps.com
Subject:

What am I doing wrong?

/* Angle Test v2 */

// I don't understand why the array created by "Var" cannot be used as CCI(20) built-in works ???
// Comment out the Var below and use the other to see what I mean.
// Angle and Degrees don't read in the Title Line like they do with CCI(20)

Var = CCI(20); // Comment out this line
//Var = MA(C,20);Plot(Var,"",1,128);  // Uncomment and try this line instead

START=34;END=1;
ARRAY= Var ;
L1=LastValue(Cum(1));
X0=L1-START;
X1=L1-END;
Y0=ARRAY[X0];
Y1=ARRAY[X1];
ANGLE=atan((Y1-Y0)/(X1-X0));
Color = IIf(Y1 > Y0,5,4); // Green = Positive    Red = Negative
Title1="ANGLE="+WriteVal(ANGLE)+" RADS"+", ["+WriteVal(45*ANGLE/atan(1),1.0)+" DEGS]";
Plot(ARRAY,"",12,1);
Plot(LineArray(X0,Y0,X1,Y1),Title1 + "\nLine to Last Value of End Point Value",Color ,1);
Plot(LineArray(X0,Y0,X1,Y0),"Horizontal",2,1);
Plot(LastValue(Y0),"\nBegin at This point in the Array",10,1);

Thanks,

Mr. Valley

__._,_.___

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html




Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___