Hello,

Yes there is:
http://www.amibroker.com/at/

(all listed are methods, as this object has no properties)

Best regards,
Tomasz Janeczko
amibroker.com

On 2010-04-28 14:57, tiedemj wrote:
> Still struggling with this! Is there an object overview (methods and 
> properties) available on IB Controller - as with "AmiBroker's OLE Automation 
> Object Model" overview?
>
> Best regards
> Jens
>
> --- In amibroker@yahoogroups.com, "tiedemj"<h...@...>  wrote:
>    
>> Really excellent information Jules - thank you for taking time out to 
>> explain! I does look a bit involved - but if thats what it takes, I will go 
>> that route.
>>
>> Only one last question to Tomasz before diving in - would you suggest an 
>> alternative approach? - or do you have additional hints in regards to IB 
>> Controller since Jules example is for AmiBroker?
>>
>> Best regards
>> Jens
>>
>>
>>
>> --- In amibroker@yahoogroups.com, "jooleanlogic"<jooleanl@>  wrote:
>>      
>>>
>>>
>>> If you've never worked with com before Jens, then no it's probably not 
>>> trivial. At least it wasn't for me.
>>> I haven't used the IB interface at all and am no com expert, but I've 
>>> managed to interface with Amibroker so will outline how I went about it.
>>>
>>> Here's a useful tute on it
>>> http://www.relisoft.com/win32/auto.html
>>> all done with OO and strict resource management. That's where I started and 
>>> then it took me a lot of testing and googling from there.
>>>
>>> Here's the basic steps and I've put some of my code to match below. It's 
>>> based on objects used from the tute above.
>>>
>>> 1. Initialise/Uninitialise COM. This is done using ::OleInitialize and 
>>> ::OleUnInitialize which I have as constructor and destructor calls in the 
>>> ComClass used below.
>>> 2. Get the ClassID for the com object you want. "BrokerIB.Application" as 
>>> paultsho said.
>>> 3. Get IDispatch interface to object using a call to ::CoCreateInstance. 
>>> This call is wrapped in the constructor of DispObject.
>>> 4. Use DispObject.GetProperty to access properties and functions of the com 
>>> object. COM data types are passed via the VARIANT union data type.
>>> 5. I don't know if the IB interface has child objects but to access a 
>>> different com object, you get a VARIANT.pdispVal to it via 
>>> DispObject.GetProperty and then pass that VARIANT into the DispObject 
>>> constructor. I.e. you access other com objects from existing ones. This is 
>>> shown below when getting the Amibroker Stocks object from the Application 
>>> object.
>>>
>>> // Basic wrapper code
>>>
>>> // 1. Initialises OLE.
>>> ComClass comClass;
>>>
>>> // 2. Retrieve Class ID.
>>> CLSID clsIdAmibroker;
>>> HRESULT hr = ::CLSIDFromProgID (L"Broker.Application",&clsIdAmibroker);
>>>
>>> // 3. Get IDispatch interface to Amibroker Application object.
>>> // This calls ::CoCreateInstance internally
>>> DispObject amibroker(clsIdAmibroker);
>>>
>>> // 4. Get the Version property of the Application object
>>> VARIANT varResult;
>>> amibroker.GetProperty(L"Version", varResult);
>>> // Convert VARIANT datatype to a normal string
>>> string version(_bstr_t(varResult.bstrVal));
>>>
>>> // 5. Access Stock object IDispatch interface using existing Application 
>>> interface
>>> ::VariantInit(&varResult);
>>> amibroker.GetProperty(L"Stocks", varResult);
>>> DispObject stocks(varResult);
>>>
>>> There's plenty more to it but I wouldn't want to spoil the fun for you.
>>>
>>> Here's some useful links
>>> VARIANT Data Type
>>> http://msdn.microsoft.com/en-us/library/ms221627.aspx
>>>
>>> IDispatch Interface
>>> http://msdn.microsoft.com/en-us/library/ms221608.aspx
>>>
>>> COM string conversions
>>> http://www.codeguru.com/cpp/cpp/string/conversions/article.php/c5639/
>>>
>>> Most of what you'll need can be found at msdn by just following the links 
>>> from one function to another.
>>>
>>> Hope that helps a bit.
>>>
>>> Jules.
>>>
>>>
>>>
>>> --- In amibroker@yahoogroups.com, "tiedemj"<home@>  wrote:
>>>        
>>>>
>>>> Hello Tomasz
>>>>
>>>> I would be nowhere without the simplicity - yet unparalleled power of AFL.
>>>>
>>>> However, over time, refinement of "checks and balances" deployed for a 
>>>> (real money) automated trendline trading system had grown quite complex. 
>>>> Long story short - in order to improve entegrity of the system I went from 
>>>> "procedural" to "real oo" (abstraction using classses, inheritance etc.), 
>>>> by moving some functionability into plugin (thus using C++ to provide the 
>>>> OO aspects).
>>>>
>>>> For the TWS link, I'm quite happy with IB Controller, and in particular 
>>>> the "window" into what goes on between AmiBroker and TWS - but I'm unhappy 
>>>> with my (own) interface to IB Controller (from plugin through AFL and 
>>>> feedback to plugin again - since plugin has a static part keeping track of 
>>>> real trades - that have dynamic exit points - so they need to be "managed" 
>>>> throughout the trade).
>>>>
>>>> So if you can give me some hints on how to interface with IB Controller (a 
>>>> COM object - right?) so that methods and attributes are exposed in C++ 
>>>> plugin (I'm using visual studio 2008), I would be very grateful indeed!
>>>>
>>>> Regards
>>>>
>>>> Jens
>>>>
>>>>
>>>>
>>>>
>>>> --- In amibroker@yahoogroups.com, Tomasz Janeczko<groups@>  wrote:
>>>>          
>>>>> Hello,
>>>>>
>>>>> First and foremost: why would you like to do that ?? (it is possible,
>>>>> but why make things harder when you can do this
>>>>> from AFL?)
>>>>>
>>>>> Best regards,
>>>>> Tomasz Janeczko
>>>>> amibroker.com
>>>>>
>>>>> On 2010-04-09 19:03, tiedemj wrote:
>>>>>            
>>>>>> Tx, but nothing in TWSAPI forum about how to call IB Broker interface 
>>>>>> directly from a C++ Amibroker plugin. Also, not possible to call user 
>>>>>> defined functions (in afl) from C++ Amibroker plugin using 
>>>>>> gSite.CallFunction() - so I'm stuck...
>>>>>>
>>>>>> Anybody?
>>>>>>
>>>>>> Best regards
>>>>>> Jens Tiedemann
>>>>>>
>>>>>> --- In amibroker@yahoogroups.com, "reefbreak_sd"<reefbreak_sd@>   wrote:
>>>>>>
>>>>>>              
>>>>>>> There is a Yahoo! discussion group TWSAPI that talks about the IB TWS 
>>>>>>> interface.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --- In amibroker@yahoogroups.com, "tiedemj"<home@>   wrote:
>>>>>>>
>>>>>>>                
>>>>>>>> bump - anybody?
>>>>>>>>
>>>>>>>> I've seen this question asked before - but can't find any answers. Can 
>>>>>>>> somebody just give a hint (if the explanation is not trivial...)
>>>>>>>>
>>>>>>>> best regards
>>>>>>>>
>>>>>>>> Jens Tiedemann
>>>>>>>> --- In amibroker@yahoogroups.com, "tiedemj"<home@>   wrote:
>>>>>>>>
>>>>>>>>                  
>>>>>>>>> Assume it's possible to call IB Controller directly from an AmiBroker 
>>>>>>>>> c++ plugin. Can anybody show how to do it in native c++?
>>>>>>>>>
>>>>>>>>> Best regards
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                    
>>>>>>>>
>>>>>>>>                  
>>>>>>>
>>>>>>>                
>>>>>>
>>>>>>
>>>>>> ------------------------------------
>>>>>>
>>>>>> **** 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
>
>
>
>
>    

Reply via email to