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

Re: [amibroker] Re: Ehlers.dll



PureBytes Links

Trading Reference Links

yes,

you can use only indicators.dll and remove ehlers.dll of plugin folder, 
as all the codes of ehlers written by stefan sbondorovith if i remember 
correctly his name is included in indicators.dll
for the source code, it is written in c++ and it is a translation of EL 
code of tradestation

for ex  the sinewave is below but you can't use directly in amibroker, 
but only in a compiler via a plugin

stephane

AmiVar sbSine( int NumArgs, AmiVar *ArgsTable )
{
    int i, j,count;
    int nSize = gSite.GetArraySize();

    AmiVar SineWave = gSite.AllocArrayResult();
    AmiVar LeadSine = gSite.AllocArrayResult();
    AmiVar DCPhase = gSite.AllocArrayResult();

    double Qmult = 0.338;
    double Imult = 0.635;
   
    double* InPhase = new double[nSize];
    double* Phase = new double[nSize];
    double* DeltaPhase = new double[nSize];
    double* InstPeriod = new double[nSize];
    double* Period = new double[nSize];
    double* Quadrature = new double[nSize];
    double* Value3 = new double[nSize];
    double* Value5 = new double[nSize];

    float *Price = ArgsTable[ 0 ].array;
    j = SkipEmptyValues( nSize, Price, SineWave.array );

    for(i = j; i < 50; i++)
    {
        InPhase[i] = 0.0;
        Phase[i] = 0.0;
        DeltaPhase[i] = 0.0;
        InstPeriod[i] = 0.0;
        Period[i] = 0;
        Quadrature[i] = 0.0;
        Value3[i] = 0.0;
        Value5[i] = 0.0;
        SineWave.array[i] = LeadSine.array[i]= EMPTY_VAL;
    }

    for( i =  j + 6; i < nSize; i++ )
    {

            // Detrend Price
        Value3[i] = Price[i] - Price[i-7];

        // Compute Inphase and Quadrature
        InPhase[i] = 1.25 * (Value3[i-4] - Imult * Value3[i-2]) + Imult 
* InPhase[i-3];
        Quadrature[i] = Value3[i-2] - Qmult * Value3[i] + Qmult * 
Quadrature[i-2];


        //Use ArcTangent to compute the current phase
        if( dabs(InPhase[i] +InPhase[i-1]) > 0)
            Phase[i] = ArcTangent( dabs((Quadrature[i]+Quadrature[i-1]) 
/ (InPhase[i]+InPhase[i-1])) );


        //Resolve the ArcTangent ambiguity
        if( (InPhase[i] < 0 ) && (Quadrature[i] > 0))
            Phase[i] = 180 - Phase[i];
        if( (InPhase[i] < 0) && (Quadrature[i] < 0))
            Phase[i] = 180 + Phase[i];
        if( (InPhase[i] > 0) && (Quadrature[i] < 0))
            Phase[i] = 360 - Phase[i];

        //Compute a differential phase, resolve phase wraparound, and 
limit delta phase errors
        DeltaPhase[i] = Phase[i-1] - Phase[i];
        if( (Phase[i-1] < 90) && (Phase[i] > 270))
            DeltaPhase[i] = 360 + Phase[i-1] - Phase[i];
        if( (DeltaPhase[i] < 1))
            DeltaPhase[i] = 1;
        if( DeltaPhase[i] > 60)
            DeltaPhase[i] = 60;
    }

    for( i =  j + 50; i < nSize; i++ )
    {

        //Sum DeltaPhases to reach 360 degrees. The sum is the 
instantaneous period.
        double Value4 = 0.0;
        InstPeriod[i] = 0.0;
        for( count = 0; count < 50; count++)
        {
            Value4 = Value4 + DeltaPhase[i-count];
            if( (Value4 > 360.0) && (InstPeriod[i] == 0.0))
                InstPeriod[i] = (double)count;
        }

        //Resolve Instantaneous Period errors and smooth}
        if( InstPeriod[i] == 0.0)
            InstPeriod[i] = InstPeriod[i-1];
        Value5[i] = 0.25 * InstPeriod[i] + 0.75 * Period[i-1];

        //Compute Dominant Cycle Phase, Sine of the Phase Angle and 
Leadsine}
        Period[i] = floor(Value5[i]);
        double RealPart = 0.0;
        double ImagPart = 0.0;

        for( count = 0; count < Period[i]; count++) {
            RealPart = RealPart + Sine( 360 * count / Period[i] ) * 
Price[i-count];
            ImagPart = ImagPart + Cosine( 360 * count / Period[i]) * 
Price[i-count];
        }
   
        if( dabs(ImagPart) > 0.001)
            DCPhase.array[i] = (float)ArcTangent( RealPart / ImagPart );
           
        if( dabs(ImagPart) <= 0.001)
        {
            int Sign;
            if( RealPart < 0)
                Sign = -1;
            else
                Sign = 1;
            DCPhase.array[i] = (float) (90 * Sign);
        }
       
        DCPhase.array[i] = DCPhase.array[i] + 90;
        if( ImagPart < 0 )
            DCPhase.array[i] = DCPhase.array[i] + 180;
        if( DCPhase.array[i] > 315)
            DCPhase.array[i] = DCPhase.array[i] - 360;


        SineWave.array[ i ] = (float)(Sine( DCPhase.array[i] ));
        LeadSine.array[i] = (float)(Sine( DCPhase.array[i] + 45 ));

    }
    delete [] InPhase;
    delete [] Phase;
    delete [] DeltaPhase;
    delete [] InstPeriod;
    delete [] Period;
    delete [] Quadrature;
    delete [] Value3;
    delete [] Value5;

    gSite.SetVariable( "sbDCPhase", DCPhase );
    gSite.SetVariable( "sbLeadSine", LeadSine );
    return SineWave;
}
for ex

> Stephane,
>
> Thanks much for you reply, especially since the author is no longer
> here.  I will make sure that my code contains the SetbarsRequired
> line and test.
>
> So can i assume that I can get rid of Ehlers.dll and utilize your
> Indicators.dll instead?
>
> In addition, would you be willing to share the source code?  Want to
> get tips on translating easylanguage to afl.
>
> Chris
>
> --- In amibroker@xxxxxxxxxxxxxxx, "s.carrasset" <s.carrasset@xxxx>
> wrote:
> > the man who has written the dll is not still active , but he gave
> me its
> > sorce code and I have included it in indicators dll.
> > I am remembering I have modified some code because of crash.
> > so you must load indicators.dll and perhaps add
> > SetBarsRequired(10000,10000); at the begin of  the code like
> > SetBarsRequired(10000,10000);
> >
> > Plot(sbDC(scMp()),"CGO",colorRed,1);
> >
> > stephane
> >
> >
> >
> > Christoper wrote:
> >
> > > Hi,
> > >
> > > Is the author for Ehlers.dll still around?  I'm having some
> trouble
> > > with it, Amibroker is crashing every once in a while when I'm
> running
> > > a scan.
> > >
> > > Can I get the formula for "Dominant Cycle"?
> > >
> > > Thanks,
> > > Chris
> > >
> > >
> > >
> > > Check AmiBroker web page at:
> > > http://www.amibroker.com/
> > >
> > > Check group FAQ at:
> > > http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> > >
> > >
> > > *Yahoo! Groups Sponsor*
> > > ADVERTISEMENT
> > > click here
> > >
> <http://us.ard.yahoo.com/SIG=129rdjo41/M=295196.4901138.6071305.300117
> 6/D=groups/S=1705632198:HM/EXP=1096427260/A=2128215/R=0/SIG=10se96mf6/
> *http://companion.yahoo.com>
> > >
> > >
> > >
> > > ------------------------------------------------------------------
> ------
> > > *Yahoo! Groups Links*
> > >
> > >     * To visit your group on the web, go to:
> > >       http://groups.yahoo.com/group/amibroker/
> > >       
> > >     * To unsubscribe from this group, send an email to:
> > >       amibroker-unsubscribe@xxxxxxxxxxxxxxx
> > >       <mailto:amibroker-unsubscribe@xxxxxxxxxxxxxxx?
> subject=Unsubscribe>
> > >       
> > >     * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > >       Service <http://docs.yahoo.com/info/terms/>.
> > >
> > >
> > >
> > >
> > > __________ NOD32 1.879 (20040927) Information __________
> > >
> > > This message was checked by NOD32 antivirus system.
> > > http://www.nod32.com
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
>
>
>
> Check AmiBroker web page at:
> http://www.amibroker.com/
>
> Check group FAQ at: 
> http://groups.yahoo.com/group/amibroker/files/groupfaq.html
>
>
> *Yahoo! Groups Sponsor*
> ADVERTISEMENT
> click here 
> <http://us.ard.yahoo.com/SIG=129sqeemp/M=298184.5285298.6392945.3001176/D=groups/S=1705632198:HM/EXP=1096572661/A=2319498/R=0/SIG=11thfntfp/*http://www.netflix.com/Default?mqso=60185352&partid=5285298> 
>
>
>
> ------------------------------------------------------------------------
> *Yahoo! Groups Links*
>
>     * To visit your group on the web, go to:
>       http://groups.yahoo.com/group/amibroker/
>        
>     * To unsubscribe from this group, send an email to:
>       amibroker-unsubscribe@xxxxxxxxxxxxxxx
>       <mailto:amibroker-unsubscribe@xxxxxxxxxxxxxxx?subject=Unsubscribe>
>        
>     * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
>       Service <http://docs.yahoo.com/info/terms/>.
>
>
>
>
> __________ NOD32 1.880 (20040928) Information __________
>
> This message was checked by NOD32 antivirus system.
> http://www.nod32.com




[Non-text portions of this message have been removed]



------------------------ Yahoo! Groups Sponsor --------------------~--> 
Make a clean sweep of pop-up ads. Yahoo! Companion Toolbar.
Now with Pop-Up Blocker. Get it for free!
http://us.click.yahoo.com/L5YrjA/eSIIAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~-> 

Check AmiBroker web page at:
http://www.amibroker.com/

Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> 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/