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

Re: [amibroker] Re: Help with filling array


  • Date: Thu, 24 Dec 2009 13:17:17 -0500
  • From: Herman <psytek@xxxxxxxx>
  • Subject: Re: [amibroker] Re: Help with filling array

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/





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

__,_._,___