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

[amibroker] Re: barcount



PureBytes Links

Trading Reference Links

They're not simple questions to answer Sidhartha because there's many issues involved, but I'll try explain as briefly as I can.
In short, yes it's doable. How long it would take depends on various factors, but a month for a decent programmer would be about right.

Performance wise, the only issue is the speed of GDI. Logistically, the only issue is data. 

GDI is slow, but that's not necessarily a problem as long as it's fast enough for the purpose. How fast do you want it? How fast does Market Delta update? You could write your own drawing routines for GDI but I don't know if it'd make much difference to using Tomasz gfx calls. If you wanted 50+ fps updates you could use DirectX. These things are always a matter of effort vs practicality vs cost. The easiest cheapest solution is generally to just buy a faster computer.:)
As it stands, my comp is five years old and the performance isn't much of an issue for my use. I'd simply upgrade before I wasted a second coding my own GDI or DirectX routines.

The biggest problem is data. The only place to get Bid/Ask data within AB is the Time & Sales window. You can do this either directly or via the clipboard. There are pros and cons to both. You also need an historical source for which I use QCollector. This can update in realtime but that also has some issues with how fast you can access it. They're all imperfect solutions and frankly a headache. If money wasn't an issue, the best solution would be to just pay for the eSignal ADK and get the data straight from the horses mouth.

You'd be struggling for realtime performance in anything other than C. There's no real point using anything else. The instrument I trade is low volume and that has around 1 million trades per 3 month contract. The US futures could have well over 10 times that amount, then at least triple that for the bid/ask data. You need a horsepower language to process that much data.
The only thing I have in afl are the settings from the Parameters window. A single call to the plugin does everything else.
Once the trade data is in memory, I then process on this for whatever I need, pivot/interval footprints, volume profiles, block trades etc, then render it. You generally only need to process a subset of this data in realtime, but even a million trades only takes maybe 50ms depending on the routine. For large datasets, you just cache the results. Realtime updates from then on are literally a 0-1ms affair.
This is why rendering is the only performance bottleneck.

Hope that helps. I've seen Market Delta pictures but haven't used it so don't know where it's limitations are. Writing your own is useful cos you can get whatever you want from the data and display it however you want. But I'd seriously consider the need if you already have Market Delta as it's not necessarily an easy task.

I've got mine to a working stage but I'll likely be making fixes and changes to it for weeks as I find out what suits. If you paid someone else to code it, I don't know how that would work out in practical terms in regards to making changes and what not. It'd be massively expensive.

Regards,
Jules.



--- In amibroker@xxxxxxxxxxxxxxx, "sidhartha70" <sidhartha70@xxx> wrote:
>
> Reason I ask Jules is that I currently use AB and MarketDelta concurrently... Obviously it would be nice to migrate to one platform and really take control of the output in ways I probably couldn't even manage under MarketDelta.
> I hadn't taken on the task you seem to have because,
> 
> 1. I wasn't convinced it could be done logistically or with enough speed to make it a goer without it being written natively by TJ.
> 
> 2. I wasn't sure, and still aren't, just how big a task it would be. Do you think the bulk has to be written in C++...? For a decent one man programmer are we talking 1 month or 4 months time requirement...? 
> 
> Any feedback would be great...
> 
> Cheers
> 
> 
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "jooleanlogic" <juliangoodsell@> wrote:
> >
> > It took a while Sidharta.:)
> > 
> > Depends how fast you mean by realtime? The chart in the picture takes around 70ms on my p4 3.2ghz.
> > The only real bottleneck is the GDI drawing so performance is almost entirely dependent on how much is being rendered. 
> > If you turn "Display chart timing on" in Preferences->Miscellaneous, the following code should give you an idea of the cost of rendering. You'll see it's highly variable.
> > 
> > 
> > GfxSelectFont("", 8, 400);
> > GfxSetBkMode(1);
> > 
> > rows = Param("Rows", 50, 0, 500);
> > Cols = Param("Cols", 50, 0, 500);
> > showText = ParamToggle("Show Text", "No|Yes");
> > fastText = ParamToggle("Fast Text", "No|Yes");
> > switchColors = ParamToggle("Switch Colors", "No|Yes");
> > bswitch = True;
> > 
> > cellHeight = Status("pxchartheight") / rows;
> > cellWidth = Status("pxchartwidth") / Cols;
> > 
> > for (row=0; row<rows; row++){
> > 	y = row * cellHeight;
> > 	for (Col=0; Col<Cols; Col++){
> > 		x = Col*CellWidth;
> > 	
> > 		if (switchColors){
> > 			bswitch = !bswitch;
> > 			if (bswitch)
> > 				GfxSelectSolidBrush(colorLightBlue);
> > 			else
> > 				GfxSelectSolidBrush(colorLightOrange);
> > 		}
> > 
> > 		GfxRectangle(x, y, x+CellWidth, y+CellHeight);
> > 		if (showText){
> > 			if (fastText)
> > 				GfxTextOut("blah", x, y);
> > 			else
> > 				GfxDrawText("blah", x, y, x+CellWidth, y+CellHeight);
> > 		}
> > 	}
> > }
> > 
> > 
> > 
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "sidhartha70" <sidhartha70@> wrote:
> > >
> > > Jules, out of interest 2 questions if I can...
> > > 
> > > 1. How long did it take you to write...?
> > > 2. Does it run fast enough to be fully operational in real time trading...?
> > > 
> > > Thanks
> > > 
> > > --- In amibroker@xxxxxxxxxxxxxxx, "jooleanlogic" <juliangoodsell@> wrote:
> > > >
> > > > Thanks. Yes I'm aware of Market Delta and yes, c++ and gfx.
> > > >
> > >
> >
>




------------------------------------

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