PureBytes Links
Trading Reference Links
|
you can create arrays of any dimension using static variables or
Varget(0 and varSet();
Just embed the coordinates in the name, like VarSet( "x"+x+"y"+y+"z"+z,
value). Where xyz are three dimensions.
herman
dbwyatt_1999 wrote:
I think what you are after is a 2-dimensional array where each array contains a slope of a specific look-back period (i.e. 40,41,42,etc.) for each bar in your dataset. Unfortunately, AFL does not support multi-dimensional arrays (at least as far as I know...). Maybe using a function would be a way to reduce programming overhead:
function CalcSlope(Periods)
{
AvgSum = Sum(C,Periods)/Periods;
Slope = (AvgSum - Ref(AvgSum,-1)) / C * 100;
return Slope;
}
The function returns your slope as an array based on your specified look-back period. You'll probably still need to use a separate array variable for each slope:
Slope40 = CalcSlope(40);
Slope41 = CalcSlope(41);
// ...
Slope52 = CalcSlope(52);
Also, AB has a linear regression slope function which might be similar to your formulation and save your from needing your own function:
linregslope(ARRAY, periods)
Regards,
David
--- In amibroker@xxxxxxxxxxxxxxx, "Marty J" <prog200@xxx> wrote:
--- In amibroker@xxxxxxxxxxxxxxx, Graham <kavemanperth@> wrote:
You are only defining the values for bars between 5 and 50, not a full
array. ie slope[40] is the value for the 40th bar (per barindex()
count) of the history.
You need to explain what you are actually trying to achieve before any
help can be given
--
Cheers
Graham Kav
AFL Writing Service
http://www.aflwriting.com
2009/12/24 Marty J <prog200@>:
--- In amibroker@xxxxxxxxxxxxxxx, Aron <aron.groups@> wrote:
|*for*(i=5;i<51;i++)
{
AvgSum = Sum(*C*,i)/i;
ry= Ref(AvgSum ,-1);
array = (AvgSum - ry)/*C* *100;
slope[i] = array[i];
}
|
On 12/23/2009 1:43 AM, Marty J wrote:
I'm having trouble with the following code
Like to fill the array.
for(i=5;i<51;i++)
{
AvgSum = Sum(C,i)/i;
ry= Ref(AvgSum ,-1);
slope[i] = (AvgSum - ry)/C *100;
}
The following error occurs
Error 8. Type mismatch, the value assigned to the array element has to be a number. You can not use array on the right-side of this assignment.
Is there another way of doing this?
Thnx
------------------------------------
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
Yahoo! Groups Links
Still not working correctly.
for(i=45;i<51;i++)
{
AvgSum = Sum(C,i)/i;
ry= Ref(AvgSum ,-1);
array = (AvgSum - ry)/C *100;
slope[i] = array[i];
printf("array = %f\n" ,array );
printf("slope1[%g] = %f\n",i, slope[i] );
}
array = 0.543919 <==== this is what the value should be
slope[45] = 0.073096 <==== This is wrong. Why?
array = 0.562687
slope[46] = 0.068811
array = 0.441399
slope[47] = 0.088211
array = 0.372907
slope1[48] = 0.094559
array = 0.432736
slope[49] = 0.096924
array = 0.454843
slope[50] = 0.094987
array = 0.454843
Thnx
------------------------------------
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
Yahoo! Groups Links
What I want to do is fill an array (40,41,42...50) instead of writing code for each one. This code calculate the slope.
Avg40 = Sum(C,40)/40;
ry = Ref(Avg40,-1);
savg40 = (Avg40- ry)/ C *100;
Avg41 = Sum(C,41)/41;
ry = Ref(Avg41,-1);
savg41 = (Avg41- ry)/ C *100;
.
.
.
Avg50 = Sum(C,50)/50;
ry = Ref(Avg50,-1);
savg50 = (Avg50 - ry)/ C *100;
Like the above code to be shorten into a single for statement
for(i=40;i<51;i++)
{
AvgSum = Sum(C,i)/i;
ry= Ref(AvgSum ,-1);
array = (AvgSum - ry)/C *100;
slope[i ] = array[i];
printf("slope1[%g] = %f\n",i, slope[i] );
}
where slope[40] = savg40
where slope[41] = savg41
.
.
where slope[50] = savg50
Thnx
------------------------------------
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
amibroker-digest@xxxxxxxxxxxxxxx
amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
__._,_.___
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
__,_._,___
|
|