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

[amibroker] Re: Trading platform + AB



PureBytes Links

Trading Reference Links

Tomasz,

No matter how I may come across at times whether it's out of 
ignorance of how Amibroker does certain things or some things 
overlooked as implemented but they weren't (e.g., colored candle 
bodies), just remember that we're all on the same side...to help make 
Amibroker be a better product.

Steve

--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> 
wrote:
>
> Hello,
> 
> I appreciate your feedback. Yes I fully agree about code examples.
> Thank you for your kind words about AB.
> 
> As to last paragraph - with current inflation I guess it would not 
be very
> wise move to sell profitable and expanding company as $$$ offered 
today
> will be dilluted pretty fast. I belive that on the long run a good 
business is
> the most safe, profitable and enjoyable way to grow your wealth. 
> I would paraphase "you don't sell the goose that lays the olden 
eggs".
> 
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message ----- 
> From: "scourt2000" <stevehite@xxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Thursday, January 31, 2008 3:05 AM
> Subject: [amibroker] Re: Trading platform + AB
> 
> 
> > 
> > Thanks for the clarification Tomasz.  
> > 
> > You would get a lot of new business with direct chart trading 
> > capabilities.
> > 
> > I think once all of the pieces are finally in place, you just 
need to 
> > put something together that's one level of abstraction up so 
common 
> > users aren't left with a bunch of basic parts and don't know 
exactly 
> > what to do with them.   Formalize some templates that have some 
meat 
> > to them and you'll get all kinds of interest in this idea that 
> > equates to more subscriptions.
> > 
> > The suggestions by Dennis were excellent too.  People would want 
to 
> > use modifier keys in addition to mouse clicks so they could 
change 
> > the the type of order being placed.
> > 
> > Tomasz, the one thing I love about your product is that you 
aren't 
> > extracting a pound of flesh from me on a monthly basis.  Think of 
all 
> > of your competitors out there who are doing just that.  You've 
been 
> > more than fair with your upgrade policies and you would certainly 
get 
> > more market share taken away from them by getting Amibroker into 
the 
> > chart-trading-with-multiple-brokerages world. 
> > 
> > Our only problem at that point would be a big company who would 
want 
> > to buy you out and you couldn't say 'no' to all of that money 
being 
> > thrown at you.
> > 
> > 
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@> 
> > wrote:
> >>
> >> Hello,
> >> 
> >> The point is that you don't understand execution model of AB.
> >> If you click on ANY place chart pane, all panes belonging to 
given 
> > chart are
> >> refreshed. This is so because the SELECTED date/time changed for 
> > all panes
> >> and you want your custom Title, chart values,
> >> and indicators recalculated. There are many formulas that use 
> > SelectedValue()
> >> to display things that depend on the selected date.
> >> 
> >> AFL execution is ALREADY _event_ driven. It is NOT polled. It 
> > executes ONLY when there is an event
> >> (mouse click, real-time refresh, zoom in/out, change of current 
> > symbol, user-defined timer (RequestTimedRefresh) etc).
> >> 
> >> The callback idea on the surface looks attractive, but once 
> > implemented you wil
> >> see yourself repeating lots of code or calling the same global 
> > functions over and over
> >> again and this would inefficient.
> >> 
> >> For example, let's say that your indicator that you use for 
trading 
> > takes 0.5 second
> >> to execute.
> >> 
> >> With current design, when mouse click occurs your indicator is 
> > calculated ONCE
> >> and you can use its values stored in a variable for anything 
(draw 
> > chart, handle mouse clicks,
> >> auto-trade, display alarms, perform more calculations) - all 
with 
> > ONE calculation
> >> of your time-consuming indicator.
> >> 
> >> If your call-back driven model was implemented after mouse click 
> > the following call back
> >> functions would be called:
> >>  
> >> OnLButtondDown
> >> OnChartRefresh
> >> OnNewDateTimeSelected
> >> 
> >> And you would need to calculate your indicator THREE times in 
each 
> > function 
> >> if you want its values. This is because the callback approach 
> > assumes that
> >> there is NO "global" code executed always. And this would be 
three 
> > times slower.
> >> 
> >> Actually the whole distinction about this call-back thing is 
> > rather "philosophical"
> >> because in practice in Windows the application has SINGLE 
> > application message loop (per thread)
> >> and messages from ALL sources land in ONE queue that is handled
> >> by one simple loop (see PeekMessage/GetMessage/DispatchMessage)
> >> The message is pumped to active window.
> >> All those call-backs and what you see in higher-level languages 
are
> >> just functions called from big switch and/or message map (which 
is 
> > also switch / if-like construct)
> >> that is inside WindowProc function that receives all messages.
> >> 
> >> http://msdn2.microsoft.com/en-us/library/aa452701.aspx
> >> 
> >> This has NOTHING to do with interrupts.  Interrupts exist on PC 
> > platform on HARDWARE level
> >> and are used by operating system only. Interrupts are 
asynchronous 
> > and one interrupt can
> >> actually stop the execution of other code to handle the 
interrupt.
> >> Message processing (what software applications do) is fully 
> > sequential and message processing is
> >> NOT interrupted (i.e. one message must be fully processed before 
> > processing next one).
> >> I am of course speaking what happens on single thread level (not 
> > couting that your app may be switched out by pre-emptive OS)
> >> 
> >> For this reason, you can implement your "callback" approach by 
> > yourself, just write a switch
> >> 
> >> Store code below in "myCallbackHandler.afl" file in the Include 
> > folder so you can use it whenever you want
> >> 
> >> function EventHandler() 
> >> { 
> >> local b, x, y; 
> >> b = GetCursorMouseButtons(); 
> >> x = GetCursorXPosition(); 
> >> y = GetCursorYPosition(); 
> >> 
> >> if( b & 1 ) OnLMouseButton( x, y ); 
> >> if( b & 2 ) OnRMouseButton( x, y ); 
> >> if( b & 4 ) OnMMouseButton( x, y ); 
> >> } 
> >> 
> >> 
> >> EventHandler(); 
> >> 
> >> Then in your formula put #include <mycallbackhandler.afl> at the 
> > END of the formula:
> >> 
> >> function OnLMouseButton(x, y) 
> >> { 
> >>    _TRACE("LButton x = " + DateTimeToStr( x ) + " y = " + y ); 
> >> } 
> >> 
> >> function OnRMouseButton(x, y) 
> >> { 
> >>    _TRACE("RButton x = " + DateTimeToStr( x ) + " y = " + y ); 
> >> } 
> >> 
> >> function OnMMouseButton(x, y) 
> >> { 
> >>    _TRACE("MButton x = " + DateTimeToStr( x ) + " y = " + y ); 
> >> } 
> >> 
> >> Graph0=C; 
> >> 
> >> #include <mycallbackhandler.afl>
> >> 
> >> 
> >> And Herman is CORRECT in his response. The only thing needed to 
> > actually know to make it work
> >> perfectly is window handle that received the mouse click 
(chartID 
> > is not enough as there can be
> >> two panes shareing the same). The ability to know window handle 
> > that received mouse click will be added.
> >> 
> >> Best regards,
> >> Tomasz Janeczko
> >> amibroker.com
> >> ----- Original Message ----- 
> >> From: "scourt2000" <stevehite@>
> >> To: <amibroker@xxxxxxxxxxxxxxx>
> >> Sent: Wednesday, January 30, 2008 2:51 AM
> >> Subject: [amibroker] Re: Trading platform + AB
> >> 
> >> 
> >> > 
> >> > "This can be done now using GetCursorMouseButtons(), 
> >> > GetCursorXPosition() and GetCursorYPosition() . HOWEVER there 
is 
> > no 
> >> > function that returns the ChartID for the chartpane over which 
> > the 
> >> > mouse is clicked"
> >> > 
> >> > Hi Herman,
> >> > 
> >> > All of that chartID stuff would not be necessary if you tied 
the 
> >> > mouse button clicks to well-known event routines (like that 
ones 
> > I 
> >> > mentioned as an example) which get called specifically from 
the 
> > AFL 
> >> > code behind a chart pane.
> >> > 
> >> > You want this type of facility event-driven, not polled.  
Polling 
> >> > puts more work on the user's side and brings up other 
unpleasant 
> > side-
> >> > effects like what you just described.  
> >> > 
> >> > Which would you rather do?  
> >> > 
> >> > 1) Code a rats nest of polling inline with your other AFL code
> >> > 
> >> > -or-
> >> > 
> >> > 2) Have a well-known function called on a mouse click with all 
of 
> > the 
> >> > information you need provided as the function parameters 
directed 
> > to 
> >> > the script already bound to a particular chart pane?
> >> > 
> >> > Anyone who chooses #1 last seriously programmed a computer 
more 
> > than 
> >> > 20 years ago.
> >> > 
> >> > "That's available now - check the list of functions, duude."
> >> > 
> >> > No it's not...duude [sic]
> >> > 
> >> > 
> >> > 
> >> > Please note that this group is for discussion between users 
only.
> >> > 
> >> > To get support from AmiBroker please send an e-mail directly 
to 
> >> > SUPPORT {at} amibroker.com
> >> > 
> >> > For NEW RELEASE ANNOUNCEMENTS and other news always check 
DEVLOG:
> >> > http://www.amibroker.com/devlog/
> >> > 
> >> > For other support material please check also:
> >> > http://www.amibroker.com/support.html
> >> > 
> >> > Yahoo! Groups Links
> >> > 
> >> > 
> >> >
> >>
> > 
> > 
> > 
> > 
> > Please note that this group is for discussion between users only.
> > 
> > To get support from AmiBroker please send an e-mail directly to 
> > SUPPORT {at} amibroker.com
> > 
> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> > 
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> > 
> > Yahoo! Groups Links
> > 
> > 
> >
>




Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
 
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/