Notes Pro

zcsoka
Posts: 290
Joined: Thu Dec 19, 2019 7:50 pm
Has thanked: 2 times
Been thanked: 28 times

Notes Pro

Post by zcsoka » Wed Oct 27, 2021 6:38 am

The Notes Pro reads and aggregates notes from local files and/or from cloud resources, offers a single column display and draws the levels on the chart. 
 Have you ever wanted to
  • draw lines automatically for notes with fore-, or background colour?
  • merge multiple note sources into a single one?
  • update notes from files regularly?
  • update cloud notes with sub-minute intervals?
If yes, Notes Pro is for you. (Latest bug fix version is 
notespainter-1.0.3.jar
(31.48 KiB) Downloaded 128 times
The add-on lets you configure multiple local CSV file and multiple Cloud Notes URLs, periodically fetch those resources on a configurable interval, merge them into a single source , offer it as a single Cloud Notes URL and draw the levels on the chart.

(Quick intro video is on Youtube)

After adding and enabling the plugin the configuration panel will be shown:

NotesPro_config_1.png
NotesPro_config_1.png (137.91 KiB) Viewed 8161 times

Refresh Interval defines how often the notes sources will be refreshed and the lines redrawn. It can be configured from 5 seconds to 10 minutes. It defines the data collection, so if you have local files, they will be re-read in every interval, if you have cloud resources, they will be fetched and processed on this interval.
Use Background Color decides if the lines on the chart are drawn with the foreground or background colour defined in the note item.
Notes server address is the local address of the server the add-on will create for your instrument. It is a display only field, it will come handy later, when you configure the Cloud Notes column in Bookmap. The number at the end (so called port number) is deduced from the instrument alias (in the example "NQZ21@GF"). If you use the plugin on many different instruments, it should be different on each and every one, if not, please report it below. 
CSV Notes is the manager for the list of local CSV files you want to read and merge. There is no limit on the number of files you can read and merge, but the more you have the bigger the impact is on the performance of the add-on. Use the Add Notes Files button to open the local CSV file. When chosen, it will be added to a small list below the button. If you decide to remove it, click on it in the list and click Remove. You can add multiple files here.
Notes URLs section has a text field, where you can paste or type the location of your cloud notes address (URL). Clicking the Add Notes URL button will add it to a list below. If you want to remove a URL from the list, click on it and click the Remove button.
Line width lets you change the thickness of the line on the chart in price terms (not pixels)

After configuring one file and one URL the config looks like:

NotesPro_config_2.png
NotesPro_config_2.png (129.71 KiB) Viewed 8161 times

This configuration will every 10 seconds:
  • re-read the file 
  • re-read the cloud URL
  • merge the notes
  • draw them to the chart with the fore-, or background color
  • refresh the data on the local notes server served on the Notes server address
The last part of the configuration takes place in the cloud notes, so the Configure addons window can be closed.
Add a Cloud Notes column to Bookmap and configure the Notes server address for the source (in the example - as above-, it is http://localhost:8083):

NotesPro_config_CLN.png
NotesPro_config_CLN.png (115.12 KiB) Viewed 8159 times

The refresh interval is irrelevant, the data is sent on a way, that it forces the CLN column to be refreshed every 5 seconds. Since it refreshes from a local server (running on your computer), it should not cause any clogs. 

An example of the working example is:

NotesPro_full_2.png
NotesPro_full_2.png (381.85 KiB) Viewed 8156 times

If any of the resources (local or cloud) are not available, levels around that trading price will be painted and the error message displayed in the notes:

NotesPro_error_message.png
NotesPro_error_message.png (246.25 KiB) Viewed 8144 times


PS: Please remark, that the Bookmap Cloud Notes do not work in replay mode!
 
Attachments
notespainter-1.0.2.jar
(31.23 KiB) Downloaded 301 times
NotesPro_full_1.png
NotesPro_full_1.png (352.47 KiB) Viewed 8156 times
Last edited by zcsoka on Thu Jul 20, 2023 9:07 am, edited 3 times in total.

zcsoka
Posts: 290
Joined: Thu Dec 19, 2019 7:50 pm
Has thanked: 2 times
Been thanked: 28 times

Re: Notes Pro

Post by zcsoka » Wed Nov 10, 2021 10:44 pm

A bug was detected in the Bookmap and the add-on, if the add-on is added to multiple tabs, then changing tabs might crash Bookmap. Bookmap is working on a fix, the add-on fix with a workaround is here:

Please check next Post
Attachments
notespainter-1.0.1.jar
(31.2 KiB) Downloaded 220 times
Last edited by zcsoka on Wed Nov 17, 2021 8:10 am, edited 2 times in total.

zcsoka
Posts: 290
Joined: Thu Dec 19, 2019 7:50 pm
Has thanked: 2 times
Been thanked: 28 times

Re: Notes Pro

Post by zcsoka » Wed Nov 17, 2021 8:09 am

Some other formatting bugs were detected, the fixes are here:
notespainter-1.0.2.jar
(31.23 KiB) Downloaded 398 times

kneeland31
Posts: 2
Joined: Thu Sep 01, 2022 4:36 am

Re: Notes Pro

Post by kneeland31 » Thu Sep 01, 2022 4:42 am

I am thinking of getting ProNotes, so you probably get this question frequently. I trade only the ES and wondered if there were any real-time servers that automatically fill in your levels (like pHOD, pVAL, IBH, ONH, etc) or is the only way to manually enter these levels on your CSV file? If there are such servers/sources, are there fees?     Thanks!

zcsoka
Posts: 290
Joined: Thu Dec 19, 2019 7:50 pm
Has thanked: 2 times
Been thanked: 28 times

Re: Notes Pro

Post by zcsoka » Thu Sep 01, 2022 9:41 am

The plugin can handle multiple online and multiple file based levels, but those are all 3rd party, I do not provide any such service. Maybe you could ask on the Bookmap Discord channel, the users might now about those services.

kneeland31
Posts: 2
Joined: Thu Sep 01, 2022 4:36 am

Re: Notes Pro

Post by kneeland31 » Thu Sep 01, 2022 10:43 pm

Thanks so much.  I'm asking around, I am in several Bookmap Discord rooms.

commoncents097
Posts: 4
Joined: Thu Jun 02, 2022 3:30 pm

Re: Notes Pro

Post by commoncents097 » Mon Mar 06, 2023 6:20 pm

Hi,

Can you please provide a template for the .csv file. I trade ES using Rithmic.
I watched the youtube video and there's 2 version of the csv, "Symbol","Price Level,Note" vs one without quotes, not sure which one to use so it would be helpful if you can provide a template for the local notes and the cloud notes.

I keep getting these errors after I added to Bookmap:




java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because "<parameter1>" is null
    at java.base/java.lang.Integer.decode(Unknown Source)
    at java.desktop/java.awt.Color.decode(Unknown Source)
    at com.zoli.api.notespainter.indicators.SSPClass$2.update(SSPClass.java:184)
    at com.zoli.api.notespainter.indicators.SSPClass$2.onHeatmapPriceHeight(SSPClass.java:114)
    at velox.api.layer1.exceptionwrapper.a.b.generated.velox_____api_____layer1_____layers_____strategies_____interfaces_____ScreenSpacePainter___I___velox_____api_____layer1_____exceptionwrapper_____b_____e.onHeatmapPriceHeight(velox_____api_____layer1_____layers_____strategies_____interfaces_____ScreenSpacePainter___I___velox_____api_____layer1_____exceptionwrapper_____b_____e.java)
    at velox.bookmap.no.a(SourceFile:185)
    at velox.bookmap.no.a(SourceFile:144)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)



this error appeared after I removed it and re-added:

java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at com.zoli.api.notespainter.indicators.PaintServer.onInterval(PaintServer.java:222)
    at velox.api.layer1.simplified.InstanceWrapper.setTime(InstanceWrapper.java:583)
    at velox.api.layer1.simplified.SimplifiedL1ApiLoader.onUserMessage(SimplifiedL1ApiLoader.java:440)
    at velox.api.layer1.layers.aa.onUserMessage(SourceFile:371)
    at velox.api.layer1.layers.z.onUserMessage(SourceFile:191)
    at velox.api.layer1.layers.bt.a(SourceFile:230)
    at velox.api.layer1.layers.b.a(SourceFile:87)
    at velox.api.layer1.layers.bt.onUserMessage(SourceFile:230)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:335)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.ak.onUserMessage(SourceFile:266)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.p.onUserMessage(SourceFile:244)
    at velox.api.layer1.layers.r.onUserMessage(SourceFile:503)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.aN.onUserMessage(SourceFile:212)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.bookmap.mQ.onUserMessage(SourceFile:1359)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.y.onUserMessage(SourceFile:106)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.ax.onUserMessage(SourceFile:117)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.bu.onUserMessage(SourceFile:74)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.bookmap.cE.onUserMessage(SourceFile:602)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.bookmap.co.onUserMessage(SourceFile:923)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.bookmap.cn.onUserMessage(SourceFile:561)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.A.onUserMessage(SourceFile:18)
    at velox.api.layer1.layers.aa.onUserMessage(SourceFile:371)
    at velox.api.layer1.layers.z.onUserMessage(SourceFile:191)
    at velox.api.layer1.layers.aa.onUserMessage(SourceFile:371)
    at velox.api.layer1.layers.z.onUserMessage(SourceFile:191)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.ak.onUserMessage(SourceFile:266)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.C.b(SourceFile:119)
    at velox.api.layer1.layers.q.a(SourceFile:36)
    at velox.api.layer1.layers.C.onUserMessage(SourceFile:119)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.B.onUserMessage(SourceFile:27)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.i.onUserMessage(SourceFile:130)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.aJ.onUserMessage(SourceFile:116)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.aI.onUserMessage(SourceFile:419)
    at velox.api.layer1.providers.t.onUserMessage(SourceFile:1026)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Z.onUserMessage(SourceFile:83)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.C.a(SourceFile:123)
    at velox.api.layer1.layers.aK.a(SourceFile:24)
    at velox.api.layer1.layers.aK.b(SourceFile:102)
    at velox.api.layer1.layers.aK.c(SourceFile:132)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)


I'm on an Apple Macbook Pro M1 Ventura 13.1 64GB memory and running the Apple Silicon BETA of Bookmap

Please advise.
Thanks!
-LK

zcsoka
Posts: 290
Joined: Thu Dec 19, 2019 7:50 pm
Has thanked: 2 times
Been thanked: 28 times

Re: Notes Pro

Post by zcsoka » Mon Mar 06, 2023 8:05 pm

Could you please confirm that you are using the version:notespainter-1.0.2.jar

If yes, please send me the file you are using. Basically you can create a note in the Bookmap Note column, export it to  csv and modify that file. 

commoncents097
Posts: 4
Joined: Thu Jun 02, 2022 3:30 pm

Re: Notes Pro

Post by commoncents097 » Tue Mar 07, 2023 2:23 am

Hi,

I exported the notes as you suggested. Although I am still getting an error even after using the file you included in your response.


java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at com.zoli.api.notespainter.indicators.PaintServer.onInterval(PaintServer.java:222)
    at velox.api.layer1.simplified.InstanceWrapper.setTime(InstanceWrapper.java:583)
    at velox.api.layer1.simplified.SimplifiedL1ApiLoader.onUserMessage(SimplifiedL1ApiLoader.java:440)
    at velox.api.layer1.layers.aa.onUserMessage(SourceFile:371)
    at velox.api.layer1.layers.z.onUserMessage(SourceFile:191)
    at velox.api.layer1.layers.bt.a(SourceFile:230)
    at velox.api.layer1.layers.b.a(SourceFile:87)
    at velox.api.layer1.layers.bt.onUserMessage(SourceFile:230)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:335)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.ak.onUserMessage(SourceFile:266)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.p.onUserMessage(SourceFile:244)
    at velox.api.layer1.layers.r.onUserMessage(SourceFile:503)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.aN.onUserMessage(SourceFile:212)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.bookmap.mQ.onUserMessage(SourceFile:1359)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.y.onUserMessage(SourceFile:106)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.ax.onUserMessage(SourceFile:117)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.bu.onUserMessage(SourceFile:74)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.bookmap.cE.onUserMessage(SourceFile:602)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.bookmap.co.onUserMessage(SourceFile:923)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.bookmap.cn.onUserMessage(SourceFile:561)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.A.onUserMessage(SourceFile:18)
    at velox.api.layer1.layers.aa.onUserMessage(SourceFile:371)
    at velox.api.layer1.layers.z.onUserMessage(SourceFile:191)
    at velox.api.layer1.layers.aa.onUserMessage(SourceFile:371)
    at velox.api.layer1.layers.z.onUserMessage(SourceFile:191)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.ak.onUserMessage(SourceFile:266)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.C.b(SourceFile:119)
    at velox.api.layer1.layers.q.a(SourceFile:36)
    at velox.api.layer1.layers.C.onUserMessage(SourceFile:119)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.B.onUserMessage(SourceFile:27)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.i.onUserMessage(SourceFile:130)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.aJ.onUserMessage(SourceFile:116)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Layer1ApiInjectorRelay.onUserMessage(SourceFile:224)
    at velox.api.layer1.layers.aI.onUserMessage(SourceFile:419)
    at velox.api.layer1.providers.t.onUserMessage(SourceFile:1026)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.Z.onUserMessage(SourceFile:83)
    at velox.api.layer1.layers.Layer1ApiUpstreamRelay.onUserMessage(SourceFile:330)
    at velox.api.layer1.layers.C.a(SourceFile:123)
    at velox.api.layer1.layers.aK.a(SourceFile:24)
    at velox.api.layer1.layers.aK.b(SourceFile:102)
    at velox.api.layer1.layers.aK.c(SourceFile:132)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
 

zcsoka
Posts: 290
Joined: Thu Dec 19, 2019 7:50 pm
Has thanked: 2 times
Been thanked: 28 times

Re: Notes Pro

Post by zcsoka » Tue Mar 07, 2023 4:51 am

Please find attached the latest bug fix version:

notespainter-1.0.3.jar
(31.48 KiB) Downloaded 197 times

If it still does not work, please post me the csv file that I could reproduce the issue.

 

Post Reply