AmiBroker 6.30.0 RC released

UPDATE 2019: This version is now OFFICIAL RELEASE.

A new Release Candidate version (6.30.0) of AmiBroker, with lots of new functionality has been released.

DOWNLOAD LINKS

32-bit version:
http://www.amibroker.com/members/bin/AmiBroker6300.exe
(10 246 288 bytes)

64-bit version:
http://www.amibroker.com/members/bin/AmiBroker6300x64.exe
(10 978 624 bytes)

DOCUMENTATION

DevLog announcement:
http://www.amibroker.com/devlog/2018/11/19/amibroker-6-30-0-release-candidate/

Read Me:
http://www.amibroker.com/devlog/wp-content/uploads/2018/11/readme6300.html

This version comes with updated Users' Manual with all new functions now added to AFL reference and new tutorial on using GUI controls. Check out http://www.amibroker.com/guide/whatsnew.html and http://www.amibroker.com/guide/h_gui.html

UPGRADE POLICY

This version is a free upgrade only for users who registered AmiBroker after November 18, 2016. Users who registered earlier, would need to purchase license upgrade. To find out the version you currently have use Account Information page at http://www.amibroker.com/members/info.php

CHANGES FOR VERSION 6.30.0 (as compared to 6.29.0)

  1. AFL: GfxSelectPen function - added support for geometric pens (including flat endcap)
  2. AFL: GuiEnable( id, enable ) - enables / disables GUI control. Disabled control can not be clicked and has "grayed" look
  3. AFL: GuiGetValue( id ) - gets the value of GUI control (for example slider position). For non-slider controls value is number representing control text converted to number)
  4. AFL: GuiSetValue( id, value ) - sets the value of GUI control (for example slider position). For non-slider control value will be converted to text and assigned as GuiSetText( id, NumToStr( value ) )
  5. AFL: GuiSetVisible( id, visible ) - shows/hides GUI control
  6. AFL: Hexadecimal numbers can be now written using 0x prefix (as in C/C++)
  7. AFL: In 6.29 GfxSelectPen function was not functioning without geometric style. Fixed.
  8. AFL: InternetOpenURL( url, flags = 0 ) - added support for 'flags' for example "no cache"
  9. AFL: new function GuiSetRange( min, max, step, ticfreq ) - sets the min-max range of slider control
  10. AFL: new function GuiSlider( id, x, y, width, height, notifyflags ) - creates slider control
  11. AFL: new function remap( x, fromMin, fromMax, toMin, toMax ) - performs re-mapping from one range to another, works on scalars and arrays
  12. AFL: When OLEDATE type (read from OLE objects) is assigned to AFL variable it gets converted to string using ISO format (YYYY-MM-DD HH:MM:SS). Time part only appears for records within non-zero time component
  13. ASCII import: Aux1/2 fields can now be imported separately from two different files (combined) when using $HYBRID
  14. In 6.29 estimated number of optimization steps displayed in 'warning' in case of tiny (fractional) step increment may be lower than actual number of steps
  15. In 6.29, due to changes, some chart Gui* controls (owner draw) did not repaint on window resize. Fixed.
  16. UI: File->New Database-> Create button now recursively creates all missing directories if multiple nested non-existing dirs were typed in
  17. UI: new databases are now created in separate "databases" subfolder by default

This thread continues from AmiBroker 6.29.0 BETA released

11 Likes

@Tomasz thank you very much for the new release and all the new features! Now we have lots of additional possibilities in the "Gui arena" :wink:


If I may, I would like to ask you about the new InternetOpenURL() flags:

  1. Is using INTERNET_FLAG_RELOAD - 0x80000000 an alternative to IE Temporary Internet files settings --> Check for newer versions of stored pages Every time I visit the webpage as shown in this post ?

  2. Is using INTERNET_FLAG_NO_COOKIES - 0x00080000 an alternative to corresponding IE settings?

  3. Or maybe these flags have nothing to do with IE settings which affect InternetOpenURL ?


BTW. If someone would like to learn more about the new Remap() function (which is not described in details in the readme file) he/she can find a detailed description with an example usage under this link:

http://www.amibroker.com/guide/afl/remap.html

Regards

Thanks Tomasz for the new release. Remap function will help me a lot.

These flags are documented @Microsoft site: https://docs.microsoft.com/en-us/windows/desktop/api/wininet/nf-wininet-internetopenurla

INTERNET_FLAG_RELOAD - Forces a download of the requested file, object, or directory listing from the origin server, not from the cache.

INTERNET_FLAG_NO_COOKIES - Does not automatically add cookie headers to requests, and does not automatically add returned cookies to the cookie database.

They work independently of IE settings. As IE is so deeply hardwired into operating system, its settings may affect Windows Internet API but it is better not to rely on user-changeable settings. Any flag that you use directly in InternetOpenURL has precedence.

1 Like

Thanks for the update. Have a question. Seems like a lot of work has been put into the GUI type features the last few years. I have not used them or taken advantage of them. It seems with all that functionality you could build out an entire interface. Are there any examples that can be shared in terms of what people are doing with all these GUI functions or tools? It would be great to see how people are using this functionality?

Thanks tomasz for this update. Wanted this aux1/2 field fix. Also have a similar question to mike regarding GUI features, since there has been so many new features on GUI side, how are most of the users using them..since in my personal testing and usage i have not used much of GUI features.

@mike @akshay.gupta55 you can find many examples of using Gui functions on the forum. Here are just a few of them:

These examples were written over a year ago. Now we have additional possibilities...

3 Likes

No, all GUI functions were added just over few last recent betas (few months, not years). 6.30 brings many other functionalities and improvements too.

The "what's new" document lists just a few most 'visible' improvements and as GUI is definitely visible, it may create impression that is all about GUI. But if you check the CHANGE LOG or ReleaseNotes.html you will see a whole lot more beyond GUI. Let me mention few examples of non-GUI features not prominently displayed in "what's new":

  • there are changes under the hood in AFL that are not that obvious (like passing by reference and static declaration) that are quite powerful, yet it will only show when other parts in the puzzle will be put in place (things that are planned like for example high-performance in-place matrix block operations that won't need to reallocate anything).
  • another example, added HTML5 support for those people who use WebResearch window is day and night difference: it gives them ability to actually display pages that were unacessible for them before.
  • enhanced error reporting and "notices" given by Analysis window is another improvement for beginners that protects them against many not-so-obvious mistakes.
  • ApplyStop has new parameter 'ActivationFloor' allowing you to implement stops that were not possible before without writing complex loops.
  • lets not forget performance improvements that you only notice if you actually take a stopwatch and measure. The fact that certain function works 50% faster is not immediately "obvious" to you unless you run optimization that uses such function. And last but not least,
  • AmiQuote has underwent several cycles of updates because some data sources stopped working and many new data sources were added. Urgent forced changes like those in AmiQuote unfortunately "eat into" normal development cycle, but are crucial to majority of AmiBroker/AmiQuote users.

As I wrote "what's new" document shows just a narrow selection of new things.

GUI functions, like Matrix functions introduced in version 6.10, or batch processor in 6.20 are advanced features that were requested by (relatively small) group of users who wanted to improve their workflow beyond what is normally offered by technical analysis program.

In my opinion 99% of users don't need those GUI functions as their needs are perfectly served by much easier Param* functions that serve similar purpose (user-definable GUI) but in much "easier to use" format. But if you want to dig into you can simply use forum search with GUI as a keyword to find out what other people are doing.

8 Likes

@Tomasz,

AmiBroker users are very privileged to have the owner / developer of the program continue with such a high level of dedication, time and effort into the further development / enhancements of the program. Not to mention the added benefits of owner posts such as this one. :grinning:

Any insights on what may be introduced in the next release?

9 Likes

@Tomasz I think, that the percentage of users making use of GUI functions will increase. Those functions are relatively new. The latest ones (like very useful GUI slider) were introduced only a few days ago. Besides quite a lot of users still prefer using only official releases - for this reason until now, they haven't been able to use them.

I agree, that the majority of users might easily do without GUI functions, but such functionality is extremely useful for the more advanced users. I really appreciate them. By the way, when it comes to investing, it usually pays off to be in the minority :wink:


In my opinion there is at least one additional function which was implemented in this cycle which was not mentioned in the "what's new" document or above, but is definitely worth noting. It is a RequestMouseMoveRefresh(). I quote from: source

RequestMouseMoveRefresh() - request formula execution / refresh when mouse is moved INSIDE given chart pane (so it only triggers for ONE window under the cursor)
This provides less resource consuming way to handle chart graphics that depends on mouse hovering over chart pane than using RequestTimedRefresh as it only triggers one window currently under the cursor and only does not trigger refreshes when mouse does not move. Mouse move refreshes come "as fast as possible". If your code is fast you can get butter smooth animation (even 50fps)

Some users might wonder - what's the big deal? - it's just another way of refreshing the chart... At the beginning I have also underestimated it when it was introduced, but then quickly realized the possibilities it brings. Thanks to it we can easily capture mouse movements (mouse hovering over the chart) and draw or modify gfx objects depending on the current mouse cursor position in real-time in a very smooth way - and without the need of forcing regular refreshes or clicking on the chart. This small feature actually opened a brand new - very dynamic (and at the same time effective) way of interacting with the chart pane and presenting the results.

BTW another extremely effective way of detecting mouse hovering is using Gui notify flags: notifyMouseEnter and notifyMouseLeave.

So one more time, thank you for implementing such useful features (in most cases not available in other technical analysis programs). These things make AmiBroker so universal and unique :slight_smile:

Regards

1 Like

If someone is playing with GuiSlider() he/she might have noticed, that after using the slider, it's not possible to scroll the chart using a mouse wheel (even when the slider has lost focus). To overcome this, we can add this line to the code:

SetOption("GuiEnableKeyboard", True );

It makes scrolling the chart (with a mouse wheel) possible as soon as the Gui slider loses focus (simply click anywhere else on the chart). Starting from AB 6.26 keyboard navigation is by default turned off.

2 Likes

Continuing the discussion from AmiBroker 6.30.0 RC released:

Sir, what is the diff between official "official release" and "release candidate"

Thank you @TrendSurfer for your kind words. It is really appreciated.

And answering @prabudaisy question: the difference is that "release candidate" is the candidate to become official release. If no issues are found in the "release candidate" during week or two, then it becomes official release.
6.30.0 apparently causes no problems at all, so it will become official release next week or so.

2 Likes

Hi everyone, I am one of the noobs to Amibroker that's learning. I'm a fan of tradingview's gui, my question is how would I enable the mouse scroll wheel to zoom Amibrokers charts and 'mouse click down then move the mouse' for panning...like in tradingview.com charts?

Simply click on a chart, press and hold Ctr key and use mouse wheel to zoom in / zoom out. A quote from: AB 6.03

Chart zoom via Ctrl+mouse wheel now works so it attempts to current mouse position as a “center” point of zoom when possible. (Previously it always worked so right border was the ‘center’).

See here:

To pane or scroll the chart, you can use a slider below the chart or a mouse wheel... You can also enable/disable Scroll bar zoom. See here:

1 Like

When The AB 6.3 official version will release?

Existing 6.30.0 is official. There are no problems with 6.30.0 and it comes with updated docs like every other official version.

1 Like

7 posts were split to a new topic: RFC: InternetPostRequest

Since Microsoft had detected some bugs in the C++ compiler and released a new version recently https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes#15.9.7 , there will be maintenance release available soon compiled with newly updated compiler and few additions including InternetPostRequest.

10 Likes

Tomasz,

You and Amibroker are awesome. I salute you and can not wait for the never ending improvements of this great product.

Regards,
John

1 Like