Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Financial Footprint Chart Renderer added. #415

Merged
merged 3 commits into from
May 14, 2021

Conversation

raven2cz
Copy link
Contributor

Footprint Chart Information
Footprint chart is a type of candlestick chart that provides additional information, such as trade volume and order flow, in addition to price. It is multi-dimensional in nature, and can provide an investor with more information for analysis, beyond just the security's price. This tool is a unique offering that is gaining popularity amongst leading charting software providers.

Bid/Ask Footprint: Adds color to the real-time volume, for easier visualization of buyers and sellers probing the bid or ask. With this footprint, traders can see whether the buyers or the sellers are the responsible parties, for influencing a price move.

@codecov
Copy link

codecov bot commented May 10, 2021

Codecov Report

Merging #415 (aab288b) into master (e992c27) will increase coverage by 0.42%.
The diff coverage is 93.89%.

Impacted file tree graph

@@             Coverage Diff              @@
##             master     #415      +/-   ##
============================================
+ Coverage     52.91%   53.33%   +0.42%     
- Complexity     7268     7359      +91     
============================================
  Files           383      386       +3     
  Lines         40349    40749     +400     
  Branches       6512     6574      +62     
============================================
+ Hits          21349    21733     +384     
- Misses        17461    17463       +2     
- Partials       1539     1553      +14     
Impacted Files Coverage Δ Complexity Δ
...rer/spi/financial/service/OhlcvRendererEpData.java 100.00% <ø> (ø) 1.00 <0.00> (ø)
...ava/de/gsi/dataset/spi/financial/OhlcvDataSet.java 90.90% <ø> (+0.58%) 20.00 <0.00> (ø)
...hart/renderer/spi/financial/FootprintRenderer.java 91.98% <91.98%> (ø) 54.00 <54.00> (?)
...derer/spi/financial/AbstractFinancialRenderer.java 98.68% <100.00%> (ø) 19.00 <2.00> (ø)
.../spi/financial/css/FinancialColorSchemeConfig.java 95.60% <100.00%> (+4.09%) 37.00 <0.00> (+3.00)
...service/footprint/FootprintRendererAttributes.java 100.00% <100.00%> (ø) 4.00 <4.00> (?)
...inancial/service/footprint/NbColumnColorGroup.java 100.00% <100.00%> (ø) 1.00 <1.00> (?)
...ataset/spi/financial/api/attrs/AttributeModel.java 96.90% <100.00%> (+0.24%) 53.00 <0.00> (+26.00)
... and 6 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e992c27...aab288b. Read the comment docs.

@raven2cz
Copy link
Contributor Author

Hi, it seems that there is some problem with configuration of codacy reporter.
The error is similar with my fork.

Can you help to pass pull request?

Codacy Coverage Reporter
######################################################################## 100.0%
--> Downloading the codacy reporter codacy-coverage-reporter-linux... (12.1.4)
######################################################################## 100.0%
2021-05-11 04:49:42.523Z error [CodacyCoverageReporter] Invalid configuration: Empty argument for --project-token - (CodacyCoverageReporter.scala:25)

@raven2cz raven2cz marked this pull request as ready for review May 11, 2021 06:34
@RalphSteinhagen
Copy link
Member

Hi,
thanks for the PR 👍. Regarding the missing --project-token: this is part of the GH repository key secrets that for security reasons cannot be accessed while doing an external PR.

Will look into this, also start the coverity scan action, and also review your PR.

@RalphSteinhagen RalphSteinhagen self-assigned this May 12, 2021
@RalphSteinhagen RalphSteinhagen self-requested a review May 12, 2021 06:18
@RalphSteinhagen RalphSteinhagen temporarily deployed to coverage May 12, 2021 07:59 Inactive
@RalphSteinhagen RalphSteinhagen temporarily deployed to coverity May 12, 2021 08:10 Inactive
@RalphSteinhagen
Copy link
Member

@raven2cz Coverity gave us the attached feedback. If possible, would you be able to analyse/fix this (and possibly also the one related to your earlier PR?) I will do the rest by Friday if this is OK with you (lots of meetings + public holidays over here) ...

Thanks again for your contribution.

N.B. will try to tackle some of the issues and notably the vertically stacked chart option as this is something that we'd like to use internally as well.

** CID 322469:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 322469:  Null pointer dereferences  (FORWARD_NULL)
/chartfx-chart/src/test/java/de/gsi/chart/renderer/spi/financial/FootprintRendererTest.java: 173 in <lambda implementing org.junit.jupiter.api.function.Executable>.execute()
167             assertFalse(renderer.isPaintPoc());
168             assertFalse(renderer.isPaintPullbackColumn());
169         }
170    
171         @Test
172         public void noXyChartInstance() {
>>>     CID 322469:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing "null" to "render", which dereferences it.
173             assertThrows(InvalidParameterException.class, () -> rendererTested.render(null, new TestChart(), 0, null));
174         }
175    
176         @Test
177         void getThis() {
178             assertEquals(FootprintRenderer.class, rendererTested.getThis().getClass());
179         }

** CID 322468:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 322468:  Null pointer dereferences  (FORWARD_NULL)
/chartfx-chart/src/test/java/de/gsi/chart/renderer/spi/financial/FootprintRendererTest.java: 66 in de.gsi.chart.renderer.spi.financial.FootprintRendererTest.financialComponentTest(javafx.stage.Stage, java.lang.String)()
60                     true,
61                     true,
62                     true);
63             rendererTested.setComputeLocalRange(false);
64             rendererTested.setComputeLocalRange(true);
65    
>>>     CID 322468:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing "null" to "getPaintBarColor", which dereferences it.
66             assertNull(rendererTested.getPaintBarColor(null));
67    
68             final DefaultNumericAxis xAxis = new DefaultNumericAxis("time", "iso");
69             xAxis.setTimeAxis(true);
70             xAxis.setAutoRangeRounding(false);
71             xAxis.setAutoRanging(false);

** CID 322467:  Null pointer dereferences  (NULL_RETURNS)
/chartfx-chart/src/main/java/de/gsi/chart/renderer/spi/financial/FootprintRenderer.java: 253 in <lambda implementing java.lang.Runnable>.run()


________________________________________________________________________________________________________
*** CID 322467:  Null pointer dereferences  (NULL_RETURNS)
/chartfx-chart/src/main/java/de/gsi/chart/renderer/spi/financial/FootprintRenderer.java: 253 in <lambda implementing java.lang.Runnable>.run()
247    
248                         for (int i = iMin; i < iMax; i++) {
249                             double x0 = xAxis.getDisplayPosition(ds.get(DIM_X, i));
250                             // get all additional information for footprints
251                             IOhlcvItem ohlcvItem = itemAware.getItem(i);
252                             IOhlcvItem lastOhlcvItem = itemAware.getLastItem();
>>>     CID 322467:  Null pointer dereferences  (NULL_RETURNS)
>>>     Calling a method on null object "lastOhlcvItem".
253                             boolean isLastBar = lastOhlcvItem.getTimeStamp().equals(ohlcvItem.getTimeStamp());
254                             if (!footprintRenderedApi.isFootprintAvailable(ohlcvItem)) {
255                                 continue;
256                             }
257                             synchronized (footprintRenderedApi.getLock(ohlcvItem)) {
258                                 drawFootprintItem(gc, yAxis, ds, i, x0, ohlcvItem, isEpAvailable, isLastBar, paintVolume);


________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, https://u15810271.ct.sendgrid.net/ls/click?upn=HRESupC-2F2Czv4BOaCWWCy7my0P0qcxCbhZ31OYv50ypk1BmhqanlBbE6KeNqVoa-2Bb7LJb3FuK-2Bf-2BcIK1v81s-2FkosXxHWwAxmcZMORdZ5Rhc-3DSfJ5_m2HYUw3zoGiFQzM8TDMKFMTySLxANOUZUfqcN5WuVuiyL52MqbtOtap0r8v17ENmLPFe8r6F6BhO-2BueM2JeFCXPraHvDh1pWC-2FvqP5MQEd3LrU7KctGBUfOmIjFMI-2Bd-2Fe-2FsEb4c6z4pe9nwzQN6Ctp-2Fp7Gp-2F87UqWi52AHunajKGad57IWG96EpnaX1lowbEckiIKo6ewxcS-2BlCvT-2B7nHw-3D-3D

There was also this earlier one:

7 new defect(s) introduced to chart-fx found with Coverity Scan.
1 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan.

New defect(s) Reported-by: Coverity Scan
Showing 7 of 7 defect(s)


** CID 309984:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 309984:  Null pointer dereferences  (FORWARD_NULL)
/chartfx-chart/src/main/java/de/gsi/chart/renderer/spi/financial/CandleStickRenderer.java: 233 in <lambda implementing java.lang.Runnable>.run()
227                                         candleShadowColor, shadowLineWidth, shadowTransPercent,
228                                         localBarWidth, barWidthHalf, x0, yOpen, yClose, yLow, yHigh, yDiff, yMin);
229                                 gc.setLineWidth(lineWidth);
230                             }
231    
232                             // choose color of the bar
>>>     CID 309984:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing "data" to "getPaintBarColor", which dereferences null "data.ohlcvItem".
233                             Paint barPaint = getPaintBarColor(data);
234    
235                             if (yDiff > 0) {
236                                 gc.setFill(barPaint != null ? barPaint : candleLongColor);
237                                 gc.setStroke(barPaint != null ? barPaint : candleLongWickColor);
238                             } else {

** CID 309983:  Resource leaks  (RESOURCE_LEAK)
/chartfx-generate/src/main/java/de/gsi/generate/CodeGenerator.java: 181 in de.gsi.generate.CodeGenerator.getSourceFiles(java.nio.file.Path, java.lang.String)()


________________________________________________________________________________________________________
*** CID 309983:  Resource leaks  (RESOURCE_LEAK)
/chartfx-generate/src/main/java/de/gsi/generate/CodeGenerator.java: 181 in de.gsi.generate.CodeGenerator.getSourceFiles(java.nio.file.Path, java.lang.String)()
175                 throw new MojoExecutionException("could not create directories", e);
176             }
177             return outputDirectory;
178         }
179    
180         private List<Path> getSourceFiles(final Path inputPath, final String protoUtilclassSuffix) throws MojoExecutionException {
>>>     CID 309983:  Resource leaks  (RESOURCE_LEAK)
>>>     Failing to save or close resource created by "java.nio.file.FileSystems.getDefault()" leaks it.
181             final PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:**" + protoUtilclassSuffix + JAVA_FILE_SUFFIX);
182             final List<Path> sources;
183             try {
184                 sources = Files.walk(inputPath).filter(matcher::matches).collect(Collectors.toList());
185             } catch (IOException e) {
186                 throw new MojoExecutionException("Could not enumerate files", e);

** CID 309982:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 309982:  Null pointer dereferences  (FORWARD_NULL)
/chartfx-chart/src/main/java/de/gsi/chart/renderer/spi/financial/HighLowRenderer.java: 223 in <lambda implementing java.lang.Runnable>.run()
217                                 double lineWidth = gc.getLineWidth();
218                                 paintHiLowShadow(gc, hiLowShadowColor, shadowLineWidth, shadowTransPercent, barWidthHalf, x0, yOpen, yClose, yLow, yHigh);
219                                 gc.setLineWidth(lineWidth);
220                             }
221    
222                             // choose color of the bar
>>>     CID 309982:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing "data" to "getPaintBarColor", which dereferences null "data.ohlcvItem".
223                             Paint barPaint = getPaintBarColor(data);
224    
225                             // the ohlc body
226                             gc.setStroke(barPaint != null ? barPaint : yOpen > yClose ? longBodyColor : shortBodyColor);
227                             gc.setLineWidth(bodyLineWidth);
228                             gc.strokeLine(x0, yLow, x0, yHigh);

** CID 309981:  API usage errors  (INVALIDATE_ITERATOR)
/chartfx-dataset/src/main/java/de/gsi/dataset/spi/financial/api/attrs/AttributeModel.java: 197 in de.gsi.dataset.spi.financial.api.attrs.AttributeModel.deepCopyAttributes()()


________________________________________________________________________________________________________
*** CID 309981:  API usage errors  (INVALIDATE_ITERATOR)
/chartfx-dataset/src/main/java/de/gsi/dataset/spi/financial/api/attrs/AttributeModel.java: 197 in de.gsi.dataset.spi.financial.api.attrs.AttributeModel.deepCopyAttributes()()
191         @SuppressWarnings({ "rawtypes", "unchecked" })
192         public synchronized AttributeModel deepCopyAttributes() {
193             //Cloner cloner = new Cloner();
194             //HashMap<AttributeKey<?>, Object> _attributes = (HashMap)cloner.deepClone(attributes);
195             AttributeModel copiedModel = (AttributeModel) clone();
196             // clone the included attribute models
>>>     CID 309981:  API usage errors  (INVALIDATE_ITERATOR)
>>>     Attempting to obtain another element from "copiedModel.getAttributes()" after it's been modified.
197             for (AttributeKey attributeKey : copiedModel.getAttributes()) {
198                 if (AttributeModel.class.isAssignableFrom(attributeKey.getType())) {
199                     AttributeModel attributeModel = (AttributeModel) copiedModel.getAttribute(attributeKey);
200                     attributeModel = attributeModel.deepCopyAttributes();
201                     copiedModel.setAttribute(attributeKey, attributeModel);
202                 }

** CID 309980:    (CHECKED_RETURN)
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 251 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 214 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 245 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 257 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 220 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 232 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 226 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 239 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()


________________________________________________________________________________________________________
*** CID 309980:    (CHECKED_RETURN)
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 251 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
245             fileChannel.read(bufferRecordULong);
246             bufferRecordULong.flip();
247             totalVolume = bufferRecordULong.getInt();
248             bufferRecordULong.clear();
249    
250             // bid volume
>>>     CID 309980:    (CHECKED_RETURN)
>>>     "read" is annotated as needs checking.
251             fileChannel.read(bufferRecordULong);
252             bufferRecordULong.flip();
253             bidVolume = bufferRecordULong.getInt();
254             bufferRecordULong.clear();
255    
256             // ask volume
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 214 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
208             dt = bufferRecordDouble.getDouble();
209             bufferRecordDouble.clear();
210    
211             // open
212             // In Sierra Chart version 1150 and higher, in the case where the data
213             // record holds 1 tick/trade of data, the Open will be equal to 0.
>>>     CID 309980:    (CHECKED_RETURN)
>>>     "read" is annotated as needs checking.
214             fileChannel.read(bufferRecordFloat);
215             // bufferRecordFloat.flip();
216             // open = bufferRecordFloat.getFloat();
217             bufferRecordFloat.clear();
218    
219             // high
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 245 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
239             fileChannel.read(bufferRecordULong);
240             bufferRecordULong.flip();
241             numTrades = bufferRecordULong.getInt();
242             bufferRecordULong.clear();
243    
244             // total volume
>>>     CID 309980:    (CHECKED_RETURN)
>>>     "read" is annotated as needs checking.
245             fileChannel.read(bufferRecordULong);
246             bufferRecordULong.flip();
247             totalVolume = bufferRecordULong.getInt();
248             bufferRecordULong.clear();
249    
250             // bid volume
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 257 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
251             fileChannel.read(bufferRecordULong);
252             bufferRecordULong.flip();
253             bidVolume = bufferRecordULong.getInt();
254             bufferRecordULong.clear();
255    
256             // ask volume
>>>     CID 309980:    (CHECKED_RETURN)
>>>     "read" is annotated as needs checking.
257             fileChannel.read(bufferRecordULong);
258             bufferRecordULong.flip();
259             askVolume = bufferRecordULong.getInt();
260             bufferRecordULong.clear();
261    
262             // timestamp conversion to date structure
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 220 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
214             fileChannel.read(bufferRecordFloat);
215             // bufferRecordFloat.flip();
216             // open = bufferRecordFloat.getFloat();
217             bufferRecordFloat.clear();
218    
219             // high
>>>     CID 309980:    (CHECKED_RETURN)
>>>     "read" is annotated as needs checking.
220             fileChannel.read(bufferRecordFloat);
221             bufferRecordFloat.flip();
222             high = bufferRecordFloat.getFloat();
223             bufferRecordFloat.clear();
224    
225             // low
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 232 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
226             fileChannel.read(bufferRecordFloat);
227             bufferRecordFloat.flip();
228             low = bufferRecordFloat.getFloat();
229             bufferRecordFloat.clear();
230    
231             // close
>>>     CID 309980:    (CHECKED_RETURN)
>>>     "read" is annotated as needs checking.
232             fileChannel.read(bufferRecordFloat);
233             bufferRecordFloat.flip();
234             close = bufferRecordFloat.getFloat();
235             open = close; // tick data only!
236             bufferRecordFloat.clear();
237    
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 226 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
220             fileChannel.read(bufferRecordFloat);
221             bufferRecordFloat.flip();
222             high = bufferRecordFloat.getFloat();
223             bufferRecordFloat.clear();
224    
225             // low
>>>     CID 309980:    (CHECKED_RETURN)
>>>     "read" is annotated as needs checking.
226             fileChannel.read(bufferRecordFloat);
227             bufferRecordFloat.flip();
228             low = bufferRecordFloat.getFloat();
229             bufferRecordFloat.clear();
230    
231             // close
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 239 in de.gsi.chart.samples.financial.service.SCIDByNio.loadOhlcvItemRealtime()()
233             bufferRecordFloat.flip();
234             close = bufferRecordFloat.getFloat();
235             open = close; // tick data only!
236             bufferRecordFloat.clear();
237    
238             // number of trades
>>>     CID 309980:    (CHECKED_RETURN)
>>>     "read" is annotated as needs checking.
239             fileChannel.read(bufferRecordULong);
240             bufferRecordULong.flip();
241             numTrades = bufferRecordULong.getInt();
242             bufferRecordULong.clear();
243    
244             // total volume

** CID 309979:  Null pointer dereferences  (NULL_RETURNS)
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 91 in de.gsi.chart.samples.financial.service.SCIDByNio.findPositionByTimestamp(java.util.Date)()


________________________________________________________________________________________________________
*** CID 309979:  Null pointer dereferences  (NULL_RETURNS)
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SCIDByNio.java: 91 in de.gsi.chart.samples.financial.service.SCIDByNio.findPositionByTimestamp(java.util.Date)()
85             long mid;
86             while (lo <= hi) {
87                 // Key is in a[lo..hi] or not present.
88                 mid = lo + (hi - lo) / 2;
89                 mid = ((mid - 56) / 40) * 40 + 56; // recalculate for nearest timestamp
90                 Date midTimestamp = loadTimestamp(mid);
>>>     CID 309979:  Null pointer dereferences  (NULL_RETURNS)
>>>     Dereferencing a pointer that might be "null" "midTimestamp" when calling "before".
91                 if (timestamp.before(midTimestamp)) {
92                     hi = mid - 40;
93                 } else if (timestamp.after(midTimestamp)) {
94                     lo = mid + 40;
95                 } else
96                     return mid;

** CID 309978:  Program hangs  (BAD_CHECK_OF_WAIT_COND)
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SimpleOhlcvReplayDataSet.java: 201 in <lambda implementing java.lang.Runnable>.run()


________________________________________________________________________________________________________
*** CID 309978:  Program hangs  (BAD_CHECK_OF_WAIT_COND)
/chartfx-samples/src/main/java/de/gsi/chart/samples/financial/service/SimpleOhlcvReplayDataSet.java: 201 in <lambda implementing java.lang.Runnable>.run()
195                         tick();
196                         fireInvalidated(new AddedDataEvent(SimpleOhlcvReplayDataSet.this, "tick"));
197                         // pause simple support
198                         if (paused) {
199                             try {
200                                 synchronized (pause) {
>>>     CID 309978:  Program hangs  (BAD_CHECK_OF_WAIT_COND)
>>>     The wait condition prompting the wait upon "SimpleOhlcvReplayDataSet.pause" is not checked correctly. This code can wait for a condition that has already been satisfied, which can cause a never-ending wait.
201                                     pause.wait();
202                                 }
203                             } catch (InterruptedException e) {
204                                 Thread.currentThread().interrupt();
205                             }
206                         }


________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, https://u15810271.ct.sendgrid.net/ls/click?upn=HRESupC-2F2Czv4BOaCWWCy7my0P0qcxCbhZ31OYv50ypk1BmhqanlBbE6KeNqVoa-2Bb7LJb3FuK-2Bf-2BcIK1v81s-2FkosXxHWwAxmcZMORdZ5Rhc-3Dl7lo_m2HYUw3zoGiFQzM8TDMKFMTySLxANOUZUfqcN5WuVujfeAY80kuYgmaGgNTTARdud0aOrMv7Ms-2BkodQ253whKbB9MDQtH5kQcJ4gj2RkVMFaUoB632w-2BldNk30SXlZN-2FC48lhmBCybNQL92ecBCcRrqQcZVXNS2PebwjBgEwZ2O-2FgEULNsOWckU0K5EbIuY6acKcI8Xc6noeI7AIzB3uXjAfipy4Vr53t3zjVhXnB98-3D

@raven2cz raven2cz temporarily deployed to coverage May 12, 2021 12:50 Inactive
@raven2cz raven2cz temporarily deployed to coverage May 12, 2021 12:50 Inactive
@raven2cz raven2cz temporarily deployed to deploy May 12, 2021 12:54 Inactive
@raven2cz
Copy link
Contributor Author

Coverity is done now.
Except older
SCIDByNio - return is not used, and not relevant.
CodeGenerator - It is not mine, I don't know why this class is in the coverity with my commit.
SimpleOhlcvReplayDataSet - I'm not sure with it. I will think about it.

@RalphSteinhagen RalphSteinhagen temporarily deployed to coverage May 14, 2021 07:41 Inactive
@RalphSteinhagen RalphSteinhagen temporarily deployed to coverage May 14, 2021 07:41 Inactive
@RalphSteinhagen RalphSteinhagen temporarily deployed to deploy May 14, 2021 07:46 Inactive
Copy link
Member

@RalphSteinhagen RalphSteinhagen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not have the necessary financial domain expertise to assess the complexity or conciseness of the display and trust @raven2cz et al. assessments in that respect.

However, the implementation is very good and I appreciated that the code abided by the style/simplicity of the rest of the code-base and in particular the excellent unit-tests and samples which will certainly prove usefull to users!

LGTM as is! 👍

@RalphSteinhagen RalphSteinhagen merged commit 8984113 into fair-acc:master May 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants