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

Re: [amibroker] Amibroker Plugin C# template? Anyone?



PureBytes Links

Trading Reference Links



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-F47B99B7F18B"),
        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-D5B1F1AC76B7"),
        ProgId("csharp.amlib1"),
        ClassInterface(ClassInterfaceType.None),
        ComDefaultInterface(typeof(IMyAmPlugin1)),
        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@xxxxxxxxxxx>
To: amibroker@xxxxxxxxxxxxxxx
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@xxxxxxxxx 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/





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

__,_._,___