PureBytes Links
Trading Reference Links
|
Dear Tomasz,
Is it possible to have a fast access of the database for any
security within the plugin !
Something like:
LoadSecurity(ticker, field, startDay,
endDay)
This could allow us to build optimize composite indicator
!
Jon.
<BLOCKQUOTE
>
----- Original Message -----
<DIV
>From:
Tomasz Janeczko
To: <A title=amibroker@xxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Sent: Monday, November 12, 2001 8:26
AM
Subject: Re: [amibroker] Re: Plugin
dll
Dear Stephane,The documentation you are askingfor
will be a partof upcoming ADK (AmiBroker Development Kit).I am
writing it currently.BTW: One thing I can not understand is why
writing documentationis slower than coding :-)))Best
regards,Tomasz Janeczkoamibroker.com----- Original Message
-----From: "Stephane Carrasset" <nenapacwanfr@xxxx>To:
<amibroker@xxxxxxxxxxxxxxx>Sent: Monday, November 12, 2001 2:12
PMSubject: [amibroker] Re: Plugin dll>
Tomacz,>> Thanks,> Do you think, you'll write a Helpfile
for plugin's dlls.> or as I wrote , you'll provide some more
examples.>> stephane> >> > Please note that
O, H, L, C, OI variables are available> > directly to the DLL (no
need for passing them as arguments):> >> > void
GetStockArrays( struct StockArrays *sa )> > {> >
Size = gSite.GetArraySize();> > Open = gSite.GetStockArray( 0
);> > High = gSite.GetStockArray( 1 );> >
Low = gSite.GetStockArray( 2 );> > Close =
gSite.GetStockArray( 3 );> > Volume = gSite.GetStockArray( 4
);> > }> >> > Best regards,> > Tomasz
Janeczko> > amibroker.com> >> > ----- Original
Message -----> > From: <cliffelion@xxxx>> > To:
<amibroker@xxxx>> > Sent: Monday, November 12, 2001 3:19
AM> > Subject: [amibroker] Re: Plugin dll> >>
>> > > HI Stephanie,> > >> > > Maybe
this will help??> > > It is a calculation of Wilders Swing Index
... takes O/H/L/C> arrays> > > as input. See in
'FunctionTag gFunctionTable[]' below that the> number> >>
of arrays is defined as 4.... then you can access each array byu> >
> their index [ .. ].> > >> > > Cliff
Elion> > >> > >> > >> > >
AmiVar SI_si( int NumArgs, AmiVar *ArgsTable )> > > {>
> > int i, j, L1;> >
> double si, K1, R1, R2, R3, R;> >
> AmiVar result;> > >> >
> result = gSite.AllocArrayResult();>>
>> > > int nSize = gSite.GetArraySize();> > > int
nLookBack = 1; file://number of> > > lookback bars in
function> > >> > > float *O = ArgsTable[ 0
].array;> > > float *H = ArgsTable[ 1 ].array;> > >
float *L = ArgsTable[ 2 ].array;> > > float *C = ArgsTable[ 3
].array;> > >> > > j = SkipEmptyValues( nSize, C,
result.array );> > >> > > L1 = 3;> >
>> > > for( i = j; i < nSize; i++ )> >
> {> > > if(i<(j+nLookBack))
{result.array[i] => > > EMPTY_VAL;continue;}> >
>> > > K1 = max ( fabs( H[i] - C[i-1] ), fabs( L[i] -
C[i-> > > 1] ) );> > > R1 = fabs ( H[i] - C[i-1]
);> > > R2 = fabs ( L[i] - C[i-1] );> > > R3 = fabs
( H[i] - L[i] );> > >> > > if ( (R1 > R2) &
(R1 > R3) )> > > R =
fabs(H[i]-C[i-1])-.5*fabs(L[i]-C[i-1])> > >
+.25*fabs(C[i-1]-O[i-1]);> > > else if ( (R2 > R1) & (R2
> R3) )> > > R =
fabs(L[i]-C[i-1])-.5*fabs(H[i]-C[i-1])> > >
+.25*fabs(C[i-1]-O[i-1]);> > > else if ( (R3 > R1) & (R3
> R2) )> > > R =
fabs(H[i]-L[i])+.25*fabs(C[i-1]-O[i-1]);> > >> > >
si = C[i]-C[i-1] + 0.5*(C[i]-O[i]) + 0.25*(C[i-1]-O[i-> > >
1]);> > > si = (50 * si / R) * (K1/L1);> > >>
> > result.array[i] = (float) si;> > > }> >
> return result;> > > }> >
>> > >> > > FunctionTag gFunctionTable[] =
{> > >> > > "SI", { SI_si, 4, 0, 0, 0, NULL
},> > >> > > "SI_System", { SI_System, 4, 0, 2,0,
NULL }> > > };> > >> > >> >
>> > >> > >> > >> >
>> > >> > >> > >> >
>> > >> > >> > > --- In
amibroker@xxxx, "Stephane Carrasset" <nenapacwanfr@xxxx>>
wrote:> > > > Tomacz,> > > >> >>
> is it possible that you give us some more example of plugin>
dlls,> > > > today I want to write a dll with two
"arrays"> > > > myatr(array, K)> > > > where
array is close ot low or..> > > > and K is a numeric
value in fact an atr value.> > > >> > >
> with the relation below :> > > >> > > >
(float) stop ;> > > > if(L[i] < prev1)> > >
> (float) stop= SrcArray[i] - k ;> > > > else>
> > > (float) stop= prev1;> > > >
if((SrcArray[i] - k) > prev2)> > > > (float) stop=
SrcArray[i] - k;> > > > else> > > >
(float) stop=prev3;> > > >> > > >> >
> >> > > > /******************full
code**************************/> > > > AmiVar VMyAtr( int
NumArgs, AmiVar *ArgsTable )> > > > {> > >
> int i,j,k;> > > > float
prev1,prev2,prev3,stop;> > > > AmiVar
result;> > > >> > > >
result = gSite.AllocArrayResult();> > > >> > >
> int nSize = gSite.GetArraySize();> > > >> >
> > float *L = ArgsTable[ 0 ].array;> > > > float
*SrcArray = ArgsTable[ 1 ].array;> > > >> > >
> int nRange = (int) ArgsTable[ 1 ].val;> > > >>
> > > j = SkipEmptyValues( nSize, SrcArray, result.array );>
> > >> > > > for( i =
j; i < nSize; i++ )> > > >
{> > > > ////////////////////////////> > > >
// check if there is enough data to calculate average> > > >
// skip elsewhere> > > > ////////////////////////////>
> > > if( i < j + nRange )> > > > {> >
> > result.array[ i ] = EMPTY_VAL;> > > >
continue;> > > > }> > > > for( k = 0; k<
nRange; k++ )> > > > ////////////////////////////////>
> > > // calculate Stop> > > >
////////////////////////////////> > > > {> > >
> prev1=0;> > > > prev2=0;> > > >
prev3=0;> > > >> > > > (float) stop ;>
> > > if(L[i] < prev1)> > > > (float) stop=
SrcArray[i] - k ;> > > > else> > > >
(float) stop= prev1;> > > > if((SrcArray[i] - k) >
prev2)> > > > (float) stop= SrcArray[i] - k;>
> > > else> > > > (float) stop=prev3;> >
> >> > > > prev3 = prev2;> > > > prev2 =
prev1;> > > > prev1 = stop;> > > > }>
> > > /////////////////////////////////> > > >
result.array[ i ] = (float) stop;> > >
> }> > > >
return result;> > > > }> > >> >
>> > >> > >> > >> > >
Your use of Yahoo! Groups is subject to> <A
href="">http://docs.yahoo.com/info/terms/>
> >> > >> >
>>>>>> Your use of Yahoo! Groups is
subject to <A
href="">http://docs.yahoo.com/info/terms/>>>Your
use of Yahoo! Groups is subject to the <A
href="">Yahoo! Terms of Service.
|