AmiBroker 7.00.0 BETA released

A new BETA version (7.00.0) of AmiBroker is available now.

DOWNLOAD LINKS

32-bit version:
https://www.amibroker.com/members/download.php?AmiBroker.7.00.0.exe

64-bit version:
https://www.amibroker.com/members/download.php?AmiBroker.7.00.0.x64.exe

HIGHLIGHTS

Highlights are documented in What's new in AmiBroker 7.00

DOCUMENTATION

For the details see ReadMe.html and ReleaseNotes.html inside AmiBroker folder, F1 help, as well as in the on-line guide AmiBroker 7.00 User's Guide

UPGRADE POLICY

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

CHANGES FOR VERSION 7.00.0 (as compared to 6.93.0)

  1. Completely new AI-driven AFL Code Assistant integerated with AFL Editor
  2. AddMultiTextColumn could sometimes crash if barwidth argument was specified. Fixed.
  3. AFL Editor: new keyboard shortcut Ctrl+/ (slash) = line comment
  4. AFL/New Analysis: AddSummaryRows now supports asrAlways flag that allows summary rows (with sum/total/min/max/avg/stddev) to be added not only to exploration but also to any other mode (such as backtest, optimization)
  5. AFL: added asrTotal, asrAverage, asrMin, asrMax, asrCount, asrStdDev and asrAlways constants for AddSummaryRow calls
  6. AFL: added support for virtual category - categoryApplyTo to CategoryGetSymbols to retrieve list of symbols included in "ApplyTo" filter ( being currently analysed)
  7. AFL: CategoryAddSymbol supports categoryTag to add tag to symbol programmatically
  8. AFL: CategoryGetSymbols supports categoryTag to retrieve symbols having given tag assigned
  9. AFL: CategoryRemoveSymbol supports categoryTag to remove tag from symbol programmatically. Special case category == -1 removes ALL tags from symbol
  10. AFL: new function fappend( filename, text ) - thread-safe, atomic function to append string to a file (internally uses critical section so simultaneous calls from mulitple threads are perfectly safe and data are not lost)
  11. AFL: StrToDateTime now handles years beyond 2027 (upto 2037)
  12. Analysis: Backtest - add SetOption("MaxEntryRank", 10 ) // limit the number of entry signals per bar ("maxsetups") - decides how many entry signals per bar to track (ranked by positionscore) in non-rotational modes, allows to limit number of ranked entry
  13. ASCII importer two digit year YY is interpreted as 20YY if YY < 30 (previously it was < 25). Still two digit year format is OBSOLETE. Users must STOP using two digit year.
  14. Batch: added a way to define current working directory in ExecuteAndWait (optional parameter of ExecuteAndWait command now defines current working dir)
  15. Charts: Default Text Tool font (definable in Tools->Preferences->Text Box) is actually used as default if you place a new text on chart (instead of Axis font)
  16. Data: N-second interval do not need to be alligned to full minute as before
  17. Data: N-second time compression now supports N that 60 is not divisible by (where N is any number from 2...59)
  18. Database: color TAGs can be assigned to symbol for easy identification
  19. New Analysis: Show current trade arrows tries to place the arrow in the middle of the chart so equal number of bars before and after arrow appear, if possible
  20. New Analysis: UI: changed single Settings / Sync on select checkbox to multiple choices: On List Item Select -> Symbol / Show Arrows / Mark range / Sel quote
  21. NewAnalysis: Fix regression - custom date/time column AddColumn( DateTime(), "DT", formatDateTime ) sorting is bad in 6.93 (regression from 6.90)
  22. NewAnalysis: Fixed regression - since 6.90 SetChartOptions did not have any effect on Backtest Report Charts. It made it impossible to add say log style to equity chart. Fixed
  23. NewAnalysis: when low-level CBT was used with "raw" mode and user forgot to call bo.UpdateStats( bar, 0 ) at the beginning of each bar backtester could produce error message about reentry delay even though stops weren't used. Fixed.
  24. Now changing selection on Analysis result list not only synchronizes symbol but also displays arrows, marks range and can change selected date (depending on settings (On List Item Select))
  25. Support for unconstrained definition of parameter types in AFL plugins
  26. UI: Account window now displays numbers with upto 9 significant digits (instead of 7), so 20 million is displayed as 20000000 not scientific notation 2e7
  27. UI: added main menu items Edit->Range->Mark Begin/End/Clear
  28. UI: Fixed small flicker that could occur on very very long list view lines when content was scrolled sideways
  29. UI: Tags: Category tree shows tags as a leaf of category tree and allows filtering by tag
  30. UI: Tags: Symbol window now displays tags as icons in the left side of symbol name, right click on icon allows changing tags quickly. Multiple tags to single symbol can be assigned by CTRL+ click
  31. When RT plugin was active and system slept/hibernated multiple times the were multiple message boxes displayed. Now only one message box is displayed at a time (until it is dismissed)

CHANGES FOR VERSION 6.93.0 (as compared to 6.92.0)

  1. New integrated software updater/downloader/installer. A new menu Help->Check for and Install updates allows to check for AmiBroker software updates and install them directly from AmiBroker
  2. AFL Editor: Ctrl+C (Edit->Copy) without selection copies now entire line. Then if entire line is present in the clipboard, Ctrl+V (Paste) will perform whole line paste (instead at the selection)
  3. AFL Editor: new key commands implemented Alt-UP arrow - Move selected lines UP, Alt-DOWN arrow - Move selected lines DOWN
  4. UI: copy to clipboard from any listview now respects selection so only selected rows (if any) are copied instead of all rows as before. If nothing is selected, entire list is copied

CHANGES FOR VERSION 6.92.0 (as compared to 6.91.0)

  1. Added 'Warning 904' when SetOpacity is called without proper settings ("Multithreaded charts" and "QuickGFX" must be turned on in the Preferences)
  2. Charts (formula) treeview now uses Dark Mode when it is selected in the Customize/Appearance dialog
  3. Interpretation window now uses Dark Mode when it is selected in the Customize/Appearance dialog
  4. Layers list now uses Dark Mode when it is selected in the Customize/Appearance dialog
  5. Layout treeview now uses Dark Mode when it is selected in the Customize/Appearance dialog
  6. Notepad window uses Dark Mode when it is selected in the Customize/Appearance dialog
  7. Symbol Information window now uses Dark Mode when it is selected in the Customize/Appearance dialog
  8. Symbol list and category tree now use Dark Mode when it is selected in the Customize/Appearance dialog

CHANGES FOR VERSION 6.91.0 (as compared to 6.90.6)

  1. AFL: AddColumn supports 2 new formats: formatDateOnly and formatTimeOnly to display DateTime() values
  2. AFL: SetOpacity( opacity = 1 ); to change opacity level (0..1) for subsequent Plot() calls. Opacity = 1 means totally opaque, 0.5 - half-transparent (translucent) 0 - completely transparent (invisible)
  3. QuickGFX: Improved rendering of line plots with width>1 to better align with GDI output
  4. QuickGFX: Opacity / Alpha blending implemented for styleBar plots
  5. QuickGFX: Opacity / Alpha blending implemented for styleCandle plots
  6. QuickGFX: Opacity / Alpha blending implemented for styleDashed plots
  7. QuickGFX: Opacity / Alpha blending implemented for styleDots plots
  8. QuickGFX: Opacity / Alpha blending implemented for styleLine plots
  9. QuickGFX: Opacity / Alpha blending implemented for styleStaircase plots
  10. QuickGFX: Opactity / Alpha blending implemented for styleArea plots
  11. QuickGFX: Opactity / Alpha blending implemented for styleHistogram plots
  12. UI: Column widths in Plugins window scale to DPI
  13. UI: Parameter dialog now keeps the collapsed state of sections, individually on per-chartID basis (for as long as AmiBroker is running)

Previous version AmiBroker 6.93.0 Official release

21 Likes

Excited for the latest AmiBroker BETA! Thanks for the update and fantastic work, @Tomasz

1 Like

Quite a release !
Could you elaborate on the quote above ? It could be important to something I've done and am doing.

P.S. #6, virtual category - categoryApplyTo was a bonus along with #11 - StrToDateTime upto 2037. Everyone has their own wish list, but those were on mine for quite while.

This is special, new way of specifying arguments in plugin DLLs.
Previously you had to specify how many array, string, float and float default arguments your function received, now in addition to old style, you can use new style that does not have constraints on ordering and types.
To do so set arrayQty, stringQty and defaultQty to 0 (zero) and floatQty to -1, then defaultValue pointer to const char* that specifies actual argument types, like in this example:

FunctionTag gFunctionTable[] = {
"FreeArgsFunction",		{ VFreeArgs, 0, 0, -1, 0, "vsv" }
}

In the string, you can specify argument types freely. Each character represents argument type. "vsv" for example means 3 arguments: vector, string, vector.

Supported type encodings are:

  • 'a' - array with type coercion from float
  • 'v' - vector (strict - without coercion)
  • 'f' - float
  • 'n' - numeric (array or float)
  • 'm' - matrix
  • 's' - string
  • 'i' - integer (for the future)
  • 'x' - any type
  • 'y' - yoke (combines numeric (arrays, floats) and strings, used by AFL2DLL compiler)
  • 'z' - varargs
  • 'd' - dictionary / map

In addition to lowercase letters you can specify upper case letters which means variable passed by reference.

4 Likes

Appreciate the details - begs a question or two but is more than enough to evaluate and test. Impressed that you maintained backward compatibility - for example, this signature still worked - (for a example function meant to take single parm scalar or array)

FunctionTag gFunctionTable[] = {
"XYZ",		{ VXYZ, 0, 0, -1, 0, NULL }
}

Will look forward to a new ADK someday.

Yes I am trying to do my best. In fact for the plugin to be most compatible with old and new
you can pass for example this:

FunctionTag gFunctionTable[] = {
"XYZ",		{ VXYZ, 0, 0, -3, 0, "xxx" }
}

Old AmiBroker would interpret that as allowing 3 arrays or scalar arguments, new AmiBroker would interpret this as allowing 3 arguments of ANY type. Now if your plugin checks variant type it actually gets in a call, it would be able to work with both old and new AmiBroker versions only offering extended functionality for new AmiBroker (accepting any type), while safely continuing to work with old AmiBroker versions.

3 Likes

There is one known issue with 7.00.0 BETA: StrToDateTime applied to an empty string like this StrToDateTime(""); produces an error. To avoid that don’t pass empty string to StrToDateTime, or use

function StrToDateTime2( input ) 
{ 
  retval = Null; 
  if( input != "" ) retval = StrToDateTime( input );
  return retval;
}
3 Likes

This is crazy!!!!

1 Like

Tomasz,
Thank you so much for the great work you've done and for this release. Special thanks for the Tag.

1 Like

ODBC Pluggin behaviour - Possibly a pleaseant surprise

Dear Mr. @Tomasz - Thank You very much for the new version.
I use ODBC Pluggin to view some data from VFP DBF Tables.

I update the VFP DBF Tables periodically - may be once a week.
While updating these VFP DBF Tables, I needed to close AmiBroker - else would get error.

Yesterday, I forgot to close AmiBroker - and Updated the VFP DBF Tables - and got no error.
Then, tried the same many times - No error.
and AmiBroker is displaying Updated data from VFP DBF Tables.
It seems that sometime has changed for better in handling ODBC inputs.

Would be nice - if you please manage to conform the same.

With Regards
Sanjiv Bansal

Hi Tomasz, I didn't see this post and was about to ask about this, as It affects many files on me. Will it be fixed in future betas? Otherwise, I'll have to change a lot of code. thanks!

And Tomasz, Thanks for the TAG label we talked about. It's Great for categorizing Tickets and mark behaviors!

Yes StrToDateTime issue will be fixed

3 Likes

Hi Mr.Tomasz , Great to Hear about the features, i would like to know What is the Difference between using the AI assistance directly from gemini/OpenAI or etc for AFL when compared to the AFL wizard ? Does any modification or any trained llm is behind from Amibroker's Side?

1 Like

There is significant difference. You can try yourself. AFL assistant edits the code. You can see what is added what is deleted and where on line by line level. This alone makes a whole world of difference. Also intelligent prompting that happens behind the scenes is changing the game completely. Also it can see detailed error messages that makes error fixing reliable. Without all these things standalone LLMs perform poorly with AFL.

6 Likes

Tomasz, is the next release 7.0 final (non beta) or 7.1?

It will be like 7.00.x

6 Likes

@Tomasz finally upgraded to 7.00 Beta. Thanks for adding the Tags! Still familiarizing myself with the other upgrades you've incorporated. Great job yet again. Thank you!

@Tomasz
Sometime before v6.43, I had suggested "multiple selection in symbol pane" when "Delete Range" is first selected.

in AmiBroker 6.49.1 #28 it was introduced.
One improvement we can have is that the delete process continues regardless if symbol has no data or partial data in that range.

Currently, the delete process halts when symbol is empty for example. With many symbols blank or old, I face alot of premature deletion. and have to redo from next symbol.

The earlier purpose was to do cleanup, so I export older data to daily TF, delete 1-min quotes and then import higher TF to keep DB light for the charting/exploration instance. (lightweight local DB)
The OLE JS delete script used prior was even slower as it iterates over each quote externally.

Thanks.

Tomasz, forgive me for asking the following question I know you don't like to talk about release dates, however I need to do some development planning. Is 7.00.x slated to be release this year or next.