PureBytes Links
Trading Reference Links
|
Yup I got it using the Project / ClassLibrary3 Properties / ClassLibrary3 / Build in the menu, thanks! I've been looking for something like this for awhile, glad to finally be able to use C# directly with Ami!
--- In amibroker@xxxxxxxxxxxxxxx, Steve Wong <swstevewong38@xxx> wrote:
>
> Hello Janhaus
>
> already register the dll?
>
> I register it under the VS command prompt (run as administrator if Vista)
>
> regasm ClassLibrary3.dll /codebase /tlb
>
> That's it. (if you read COM interop there is also a tool called gacutil.exe for registering to the .NET GAC; but I tried and there is no need to register to the GAC for Amibroker to call.)
>
> By the way, since this is not through the Amibroker ADK, so no getpluginfo() is implemented.
>
> No need to copy the dll to the Amibroker plugin directory. (Because it's regasm'ed already)
>
> Rdgs
> SW
>
>
>
> ________________________________
> From: janhausd <janhaus.dresden@xxx>
> To: amibroker@xxxxxxxxxxxxxxx
> Sent: Monday, May 4, 2009 11:43:21 PM
> Subject: [amibroker] Re: Amibroker Plugin C# template? Anyone?
>
>
>
>
>
> Heya Steve,
>
> Thanks for providing this example, and I'd be very interested in working with C# through Amibroker! I've given this a go and it compiles but doesn't work as a plugin as-is. Did you have to implement the getplugininfo( ) functions for this to work?
>
> --- In amibroker@xxxxxxxxx ps.com, Steve Wong <swstevewong38@ ...> wrote:
> >
> > Hello,
> >
> > below is my experimental c# code to illustrate the original VB IIR2 example and the VExampleMA from the ADK.
> > from the Amibroker side the object creation in AFL will be:
> >
> > myobj = CreateObject( "csharp.amlib1" );
> > //call method
> > iir2 = myobj.IIR2(Close, 0.2,1.2,-0.4) ;
> > //calling Windows Forms
> > myobj.ShowDialog( "AFL called me");
> >
> > // c# below
> > using System;
> > using System.Runtime. InteropServices;
> > namespace ClassLibrary3
> > {
> > [
> > Guid("16308AFC- FB7E-4cc6- 9A3B-F47B99B7F18 B"),
> > InterfaceType( ComInterfaceType .InterfaceIsDual ),
> > ComVisible(true)
> > ]
> > public interface IMyAmPlugin1
> > {
> > [DispId(1)]
> > string HelloAmibroker( );
> > [DispId(2)]
> > int ShowDialog(string msg);
> > [DispId(3)]
> > object IIR2( object input, float f0, float f1, float f2);
> > [DispId(4)]
> > object MyExampleMA( object input, int range);
> > };
> > [
> > Guid("4328EB81- CFFF-423b- B1B4-D5B1F1AC76B 7"),
> > ProgId("csharp. amlib1"),
> > ClassInterface( ClassInterfaceTy pe.None),
> > ComDefaultInterface (typeof(IMyAmPlu gin1)),
> > ComVisible(true)
> > ]
> > public class Class1 : IMyAmPlugin1
> > {
> > private const float EMPTY_VAL = -1e10f;
> > public string HelloAmibroker( )
> > {
> > return "Hello Amibroker, I'm from C#";
> > }
> > public int ShowDialog(string msg)
> > {
> >
> > System.Windows.. Forms.MessageBox .Show(msg, "");
> > return 0;
> > }
> > public object IIR2(object input, float f0, float f1, float f2)
> > {
> > object[] inputArray = (object[]) input;
> > object[] outputArray = inputArray;
> > outputArray[ 0] = inputArray[0] ;
> > outputArray[ 1] = inputArray[1] ;
> > for (int i = 2; i < inputArray.Length; i++)
> > {
> > outputArray[ i] = f0 * Convert.ToSingle( inputArray[ i]) +
> > f1 * Convert.ToSingle( outputArray[ i - 1]) + f2 * Convert.ToSingle( outputArray[ i - 2]);
> > }
> > return outputArray ;
> > }
> > private int SkipEmptyValues( int nSize, object[] srcArray, object[] result)
> > {
> > int i;
> > for (i = 0; i < nSize && (Convert.ToSingle( srcArray[ i]) == EMPTY_VAL); i++)
> > {
> > result[i] = EMPTY_VAL;
> > }
> > return i;
> > }
> > public object MyExampleMA( object input, int range)
> > {
> > object[] inputArray = (object[]) input;
> > int nSize = inputArray.Length;
> > object[] result = new object[nSize] ;
> > int j = SkipEmptyValues( nSize, inputArray, result);
> > for (int i = j; i < nSize; i++)
> > {
> > if (i < j + range)
> > {
> > result[i] = EMPTY_VAL;
> > continue;
> > }
> > float sum = 0.0f;
> > for (int k = 0; k < range; k++)
> > {
> > sum += Convert.ToSingle( inputArray[ i - k]);
> > }
> > result[i] = sum / range;
> > }
> > return result;
> > }
> > }
> > }
> >
> > Regards
> > SW
> >
> >
> >
> > ____________ _________ _________ __
> > From: Yofa <jtoth100@ .>
> > To: amibroker@xxxxxxxxx ps.com
> > Sent: Monday, May 4, 2009 4:06:32 AM
> > Subject: Re: [amibroker] Amibroker Plugin C# template? Anyone?
> >
> >
> >
> >
> >
> > Hi Dan,
> >
> > 1. make the c# code a "COM visible" component.
> > 2. Register it on the AB machine.
> > 3. write c++ plugin to access it as a COM component. (Use ADK)
> >
> > Y
> >
> > ------------ --------- --------- --------- --------- --
> > From: "ccr1der" <dan@xxxxxxxx com>
> > Sent: Thursday, April 30, 2009 7:46 AM
> > To: <amibroker@xxxxxxxx u ps.com>
> > Subject: [amibroker] Amibroker Plugin C# template? Anyone?
> >
> > > Does anyone have a C# based template for AB plugins? Has anyone ever
> > > compiled a C# plugin for AB? I have a very important piece of code in C#
> > > that I need accessible from within AB, and while I'm not at all well
> > > versed in C#, I'm willing to take a stab at trying to get this to work....
> > > but I need some kind of a starting point?
> > >
> > > Any help would be greatly appreciated. Thanks.
> > >
> > > -Dan
> > >
> > >
> > >
> > >
> > > ------------ --------- --------- ------
> > >
> > > **** 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
> > >
> > >
> > >
> > >
> >
>
------------------------------------
**** 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:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto: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/
|