goldenChat base source add
This commit is contained in:
+73
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
package ta4jexamples.wyckoff;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.ta4j.core.BarSeries;
|
||||
import org.ta4j.core.indicators.wyckoff.WyckoffCycleAnalysisRunner;
|
||||
import org.ta4j.core.indicators.wyckoff.WyckoffCycleFacade;
|
||||
import org.ta4j.core.indicators.wyckoff.WyckoffCycleType;
|
||||
import org.ta4j.core.indicators.wyckoff.WyckoffPhase;
|
||||
import ta4jexamples.datasources.CsvFileBarSeriesDataSource;
|
||||
|
||||
/**
|
||||
* Demonstrates Wyckoff cycle indicator-suite and one-shot analysis entry
|
||||
* points.
|
||||
*/
|
||||
public final class WyckoffCycleIndicatorSuiteDemo {
|
||||
|
||||
private static final Logger LOG = LogManager.getLogger(WyckoffCycleIndicatorSuiteDemo.class);
|
||||
|
||||
/**
|
||||
* Creates a new WyckoffCycleIndicatorSuiteDemo instance.
|
||||
*/
|
||||
private WyckoffCycleIndicatorSuiteDemo() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes the demo entry point.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
BarSeries series = CsvFileBarSeriesDataSource.loadSeriesFromFile();
|
||||
|
||||
var numFactory = series.numFactory();
|
||||
WyckoffCycleFacade facade = WyckoffCycleFacade.builder(series)
|
||||
.withSwingConfiguration(3, 3, 1)
|
||||
.withVolumeWindows(5, 20)
|
||||
.withTolerances(numFactory.numOf(0.02), numFactory.numOf(0.05))
|
||||
.withVolumeThresholds(numFactory.numOf(1.5), numFactory.numOf(0.7))
|
||||
.build();
|
||||
|
||||
int begin = series.getBeginIndex() + facade.unstableBars();
|
||||
for (int i = begin; i <= series.getEndIndex(); i++) {
|
||||
WyckoffPhase phase = facade.phase(i);
|
||||
if (phase.cycleType() == WyckoffCycleType.UNKNOWN) {
|
||||
continue;
|
||||
}
|
||||
if (facade.lastPhaseTransitionIndex(i) != i) {
|
||||
continue;
|
||||
}
|
||||
var bar = series.getBar(i);
|
||||
var low = facade.tradingRangeLow(i);
|
||||
var high = facade.tradingRangeHigh(i);
|
||||
LOG.info("{} -> {} {} (confidence={}, range=[{}, {}])", bar.getEndTime(), phase.cycleType(),
|
||||
phase.phaseType(), String.format(Locale.US, "%.2f", phase.confidence()), low, high);
|
||||
}
|
||||
|
||||
var analysis = WyckoffCycleAnalysisRunner.builder()
|
||||
.withSwingConfiguration(3, 3, 1)
|
||||
.withVolumeWindows(5, 20)
|
||||
.withTolerances(0.02, 0.05)
|
||||
.withVolumeThresholds(1.5, 0.7)
|
||||
.build();
|
||||
|
||||
var result = analysis.analyze(series);
|
||||
result.baseAnalysis()
|
||||
.ifPresent(base -> LOG.info("One-shot analysis transitions: {}",
|
||||
base.cycleSnapshot().transitions().size()));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user