Create your Java crypto trading bot in minutes. Our Spring boot starter takes care of exchange connections, accounts, orders, trades, and positions so you can focus on building your strategies.

Overview

Quick Start | Documentation | Discord | Twitter

Cassandre trading bot logo


Create and run your java crypto trading bot in minutes

Our Spring boot starter takes care of exchange connections, accounts, orders, trades, and positions so you can focus on building your strategies.

Cassandre trading bot on discord Cassandre trading bot on codacy Cassandre trading bot on codacy Cassandre trading bot continuous integration Cassandre trading bot on Maven Central repository

Features

  • Get into trading with minimum fuss: Available as a Spring boot starter, Cassandre takes care of exchange connection, accounts, orders, trades, and positions, so you can focus on building your strategy.
  • Create your strategy in minutes: Just code when you want to create short/long positions, set the rules, and we take care of everything (buying, selling, rules management, orders, trades, and tickers).
  • Several exchanges supported: Cassandre uses XChange library to connect to multiple exchanges. We test each Cassandre releases with Kucoin, Coinbase & Binance to be sure it works for you.
  • Dry mode: We provide a dry mode to simulate a virtual exchange replying to your orders, so you can easily test your strategy. This way, you can simulate your gains/loss over a period of time.
  • Backtesting: We provide a spring boot starter to backtest your bot on historical data. With this, during tests, Cassandre will import your data and push them to your strategy.
  • Technical Analysis support: Cassandre provides a specific class (BasicTa4jCassandreStrategy) to help you build a strategy based on the open source technical analysis library ta4j.

Quick Start | Documentation | Discord | Twitter

Comments
  • Ticker no Timestamp

    Ticker no Timestamp

    Hi, when the Ticker returrned by exchange has timestamp field to null, only the first value is posted to the strategy. This happens because the timestamp on the object is null and in the TickerFlux class there is a check on TickerDTO that compare the previuous timestamp with the new one but the getTimestamp method returns now for both instances.

    Maybe you could set the timestamp directly in the mapper when the exchange doesn't.

    Thanks, Michele

    bug help wanted 
    opened by eRfO 48
  • Kucoin - Your strategies specifies a trading account that doesn't exist

    Kucoin - Your strategies specifies a trading account that doesn't exist

    Release number Cassandre v5.0.5

    Describe the bug I'm trying to learn how to use this so I started with the Quick Start. First I setup a Binance account with no issue. Then I try with Kucoin (real thing, not the sandbox) and I get:

    ***************************
    APPLICATION FAILED TO START
    ***************************
    
    Description:
    
    Your strategies specifies a trading account that doesn't exist
    
    Action:
    
    Check your getTradeAccount(Set<AccountDTO> accounts) method as it returns an empty result - Strategies in error : class ar.com.sebasira.anttrader.strategy.MyFirstStrategy
    

    I place a breakpoint inside the method getTradeAccount, this is it's body:

    @Override
    public Optional<AccountDTO> getTradeAccount(Set<AccountDTO> accounts) {
        // From all the accounts we have on the exchange, we must return the one we use for trading.
        if (accounts.size() == 1) {
            return accounts.stream().findAny();
        } else {
            return accounts.stream()
                    .filter(a -> "trade".equals(a.getName()))
                    .findFirst();
        }
    }
    

    And I can see that the accounts is empty, so that triggers the error. What I do not know is why are they empty. It's a newly created account (Kucoin) I've create just to test it. It has zero balance, but in the kucoin site I can see there are: Main account, Trading Account, and Pool-X Account

    To Reproduce The demo in the QuickStart with Cassanfre v5.0.5 and XChange v5.0.8 or v5.0.9 (for newer version of XChange I get another issue)

    bug help wanted 
    opened by sebasira 29
  • Allow historical data importation

    Allow historical data importation

    Is your feature request related to a problem? Please describe. Some strategies require historical data to be able to start taking positions. For example, some strategies requires to analyse 21 days of historical data... So, if your bot starts now, nothing will happened for 21 days which is quite a problem...

    enhancement 
    opened by straumat 26
  • Position not closed - Invalid quantity

    Position not closed - Invalid quantity

    Release number v5.0.7-SNAPSHOT

    Describe the bug When trying to close a Position, I get the following message:

    s.PositionServiceCassandreImplementation : Position 2 not closed: TradeService - Error calling createMarketOrder for 0.00040000 BTC/USDT: Invalid quantity. (HTTP status code: 400)

    I have sufficient amount to sell

    Expected behavior I would expect the Position to be closed

    Screenshots This is how the Position looks like in the DB Screen Shot 2021-12-20 at 19 10 01

    Additional context I'm using Binance Exchange. When trying to create the Position I was getting error saying something about the LOT_SIZE:

    .t.b.s.TradeServiceXChangeImplementation : TradeService - Error calling createMarketOrder for 0.000408 BTC/USDT: Filter failure: LOT_SIZE (HTTP status code: 400)

    And several others like this, with different decimals. So I try to reduce the decimal places to 5, and the order was created for 0.00040 BTC.

    I was also having the same error before with 8 decimal places, I reduce it to 6 and create an other few days ago, and then I need to reduce it to 5 for the order to be created.

    bug 
    opened by sebasira 23
  • Error in cancelOrder in TradeService class

    Error in cancelOrder in TradeService class

    when i tried to loanch method

        /**
         * Cancel order.
         *
         * @param orderId order id
         * @return true if cancelled
         */
        boolean cancelOrder(String orderId);
    

    in TradeService

    i got the next error

    2021-05-04 20:45:31,536 ERROR [boundedElastic-5] tech.cassandre.trading.bot.service.xchange.TradeServiceXChangeImplementation: TradeService - Error canceling order 130285696 : You need to provide the currency pair to cancel an order.

    opened by Tempys 20
  • Position not closed - Account has insufficient balance

    Position not closed - Account has insufficient balance

    Release number v5.0.6

    Describe the bug I get this error when trying to close a Position

    2021-12-12 00:34:18.444 ERROR 7746 --- [cassandre-flux-3] s.PositionServiceCassandreImplementation : Position 1 not closed: TradeService - Error calling createMarketOrder for 0.00037000 BTC/USDT: Account has insufficient balance for requested action. (HTTP status code: 400)

    As I was not able to test in dry mode because of #843, I've decided to test this out with little real money. I'm using Binance exchange, I put 20 USDT in the account and buy some BTC with a LongPosition. I've set stop gain at 1% just to test and the Position could not be closed because of the error above.

    I don't know why it says I have not enough balance, right now the amount in the wallet is 0.00039029 BTC, so I should be able to sell 0.00037000.

    To Reproduce I guess it should be enough to open a LongPosition with a Binance account

    Expected behavior I would expect the Order to be created and the Position closed

    Screenshots This is how the Position looks in the DB: Screen Shot 2021-12-11 at 21 40 24

    Additional context

    bug duplicate 
    opened by sebasira 18
  • [Kucoin Sandbox] Sample application startup fails due to http error 403 thrown during Exchange initialization

    [Kucoin Sandbox] Sample application startup fails due to http error 403 thrown during Exchange initialization

    Release number 5.0.1

    Describe the bug I get an http error 403 with response body {"code":"400007","msg":"Access denied, require more permission."} from Kucoin Sandbox while calling the endpoint https://openapi-sandbox.kucoin.com/api/v1/base-fee at Exchange initialization during the sample application startup. The Kucoin Sandbox account used is brand new.

    To Reproduce

    • Create a new project using the cassandre 5.0.1 artifact
    • Create a new API on Kucoin Sandbox as described in https://trading-bot.cassandre.tech/ressources/how-tos/how-to-create-a-kucoin-account.html#get-api-credentials
      • permissions enabled: 'General' and 'Trade'
    • Configure API passphrase, key and secret in application.properties (I double checked all the information and they are OK).
    • Startup the Sample application.
    • A 403 is error is returned calling the endpoint https://openapi-sandbox.kucoin.com/api/v1/base-fee (see attached logs below)

    Expected behavior The application should start up correctly and the sample strategy should start to run.

    Screenshots

    Additional context Attaching the full application startup log with logging level for 'si.mazi.rescu' set to TRACE (API Information hidden).

    cassandre-app-startup.log

    bug 
    opened by lucarosellini 18
  • Wrong bar data in backtesting

    Wrong bar data in backtesting

    Release number 5.0.5

    Describe the bug

    When backtesting with given data from a file, we have useful information per ticker about Open Price, Close Price, Low, High and Volume. When aggregating the tickers into bars these values are ignored and recalculated in the DurationBarAggregator. Here the low and high are calculated from the latestPrice in relation to previous tickers from the same bar timeframe. All other already available ticker informations are ignored. This leads to wrong bars in the BarSeries, which lead to some wrongly calculated Indicators.

    To Reproduce Run the Backtest from the default SimpleTa4JStrategy and get an output of the last bar in the onTickersUpdates like so

    if (getSeries().getBarCount()>0) {
         System.out.println(getSeries().getLastBar());
    } 
    

    In this extreme case we have one ticker for one bar, which leads to Open= Close=Low=High. Set the duration higher (more tickers per duration) to see how lows and highs from the ticker-data are ignored.

    Expected behavior BarSeries consists of bar with correct information (Open, Close, High, Low, Volume) given by the backtesting data.

    Additional context The live tickers differ from the backtesting tickers: they provide 24hour highs, lows and volumes, as they send out live data and not OHLC candles. The current calculation of lows and highs may work for very short ticker intervals as the highs and lows are near the opening and closing prices and therefore we should get a good enough approximation. A distinction between backtesting with already established data from the exchange and using live tickers where the necessity exists to calculate lows and height from unknown data would help.

    bug help wanted 
    opened by hmtts 15
  • On the efficiency of back testing?

    On the efficiency of back testing?

    Hello, may I ask you two questions? :)

    1.How to improve the back test efficiency? tickers-xrp-usdt. There are 47073 pieces of data in the TSV file. It is estimated that you can run 8 pieces in one second, which takes a total of 100 minutes. How can you improve the efficiency?

    2.BackTesting a policy will load all *.tsv files must be run and completed before the back test is completed. Can you change it to back test only one currency pairs?

    My code: `@Autowired private TickerFluxMock tickerFluxMock;

    /** Dumb strategy. */ @Autowired private SimpleTa4jStrategy strategy;

    @Test @DisplayName("Check gains") public void gainTest() { await().forever().until(() -> tickerFluxMock.isFluxDone());

    final Map<CurrencyDTO, GainDTO> gains = strategy.getGains();
    
    System.out.println("Cumulated gains:");
    gains.forEach((currency, gain) -> System.out.println(currency + " : " + gain.getAmount()));
    
    System.out.println("Position closed:");
    strategy.getPositions()
            .values()
            .stream()
            .filter(p -> p.getStatus().equals(OrderStatusDTO.CLOSED))
            .forEach(p -> System.out.println(" - " + p.getDescription()));
    
    System.out.println("Position not closed:");
    strategy.getPositions()
            .values()
            .stream()
            .filter(p -> !p.getStatus().equals(OrderStatusDTO.CLOSED))
            .forEach(p -> System.out.println(" - " + p.getDescription()));
    
    assertTrue(gains.get(strategy.getRequestedCurrencyPair().getQuoteCurrency()).getPercentage() > 0);
    

    }`

    My config: test\java\resources .....application.properties .....tickers-btc-usdt.tsv .....tickers-xrp-usdt.tsv .....user-main.tsv .....user-trade.tsv

    enhancement 
    opened by hlevel 14
  • CSV file for DryMode not found when executing from .jar

    CSV file for DryMode not found when executing from .jar

    Release number v5.0.6

    Describe the bug I've created a .jar file and when executing it like

    java -jar test.jar

    There's a log entry saying that the user-trade.csv file can not be found

    2021-12-04 21:58:43.194 ERROR 26366 --- [           main] t.c.t.b.util.dry.UserServiceDryModeAOP   : user-trade.csv not found !
    

    I have no problem when debugging from the IDE. What's strange is that the file is present inside the .jar and I've also put it outside the .jar, in the same directoy

    To Reproduce I can only reproduce it when running the external jar

    Expected behavior I would expect the file to be picked up and the fake account will be configured

    Screenshots Here you can see the CSV inside the .jar Screen Shot 2021-12-04 at 19 04 20

    enhancement help wanted 
    opened by sebasira 14
  • position stucked in OPENING state

    position stucked in OPENING state

    I'm in dry/sandbox mode with my kucoin account.

    Not sure if it's a bug or misunderstanding but none position are OPENED logs only show OPENING state for me.

    what can cause order not to be fulfilled ? Can i have more logs from cassandre ?

    bug 
    opened by awikatchikaen 13
  • Bump @vuepress/plugin-docsearch from 2.0.0-beta.53 to 2.0.0-beta.60 in /docs

    Bump @vuepress/plugin-docsearch from 2.0.0-beta.53 to 2.0.0-beta.60 in /docs

    Bumps @vuepress/plugin-docsearch from 2.0.0-beta.53 to 2.0.0-beta.60.

    Release notes

    Sourced from @​vuepress/plugin-docsearch's releases.

    v2.0.0-beta.60

    Please refer to CHANGELOG.md for details.

    v2.0.0-beta.59

    Please refer to CHANGELOG.md for details.

    v2.0.0-beta.58

    Please refer to CHANGELOG.md for details.

    v2.0.0-beta.57

    Please refer to CHANGELOG.md for details.

    v2.0.0-beta.56

    Please refer to CHANGELOG.md for details.

    v2.0.0-beta.55

    Please refer to CHANGELOG.md for details.

    v2.0.0-beta.54

    Please refer to CHANGELOG.md for details.

    Changelog

    Sourced from @​vuepress/plugin-docsearch's changelog.

    2.0.0-beta.60 (2022-12-28)

    Bug Fixes

    • markdown: avoid extracting headers in nested blocks by bumping mdit-vue (close #1201) (ecd3716)
    • theme-default: fix word breaking (close #1209) (#1210) (1e7761f)
    • theme-default: preserve url params when switching language (#1211) (941b2fe)

    Features

    • client: improve default head title resolver (c688270)
    • plugin-docsearch: add injectStyles option (close #948) (#1208) (34fb6c2)

    2.0.0-beta.59 (2022-12-14)

    Bug Fixes

    • bundler-webpack: fix order of extensionAlias (close #1082) (28eeb9b)

    2.0.0-beta.58 (2022-12-10)

    Bug Fixes

    • bundler-webpack: avoid duplicated style preload (e484a55)
    • bundler-webpack: fix module identifier matching (9d8d645)
    • bundler-webpack: partially fix ssr dependencies issue (83e7b6c)

    2.0.0-beta.57 (2022-12-09)

    Bug Fixes

    Build System

    • bump to vite 4 and rollup 3 (5fac2e6)

    ... (truncated)

    Commits
    • 5f3bbee build: publish v2.0.0-beta.60
    • 34fb6c2 feat(plugin-docsearch): add injectStyles option (close #948) (#1208)
    • 941b2fe fix(theme-default): preserve url params when switching language (#1211)
    • 666257a build: bump dependencies
    • 1e7761f fix(theme-default): fix word breaking (close #1209) (#1210)
    • bba63ea docs: add PR template
    • 5ea3425 build: bump dependencies
    • ecd3716 fix(markdown): avoid extracting headers in nested blocks by bumping mdit-vue ...
    • c688270 feat(client): improve default head title resolver
    • 480886d build: publish v2.0.0-beta.59
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump @vuepress/plugin-google-analytics from 2.0.0-beta.53 to 2.0.0-beta.60 in /docs

    Bump @vuepress/plugin-google-analytics from 2.0.0-beta.53 to 2.0.0-beta.60 in /docs

    Bumps @vuepress/plugin-google-analytics from 2.0.0-beta.53 to 2.0.0-beta.60.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump @vuepress/plugin-back-to-top from 2.0.0-beta.58 to 2.0.0-beta.60 in /docs

    Bump @vuepress/plugin-back-to-top from 2.0.0-beta.58 to 2.0.0-beta.60 in /docs

    Bumps @vuepress/plugin-back-to-top from 2.0.0-beta.58 to 2.0.0-beta.60.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump vuepress from 2.0.0-beta.58 to 2.0.0-beta.60 in /docs

    Bump vuepress from 2.0.0-beta.58 to 2.0.0-beta.60 in /docs

    Bumps vuepress from 2.0.0-beta.58 to 2.0.0-beta.60.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump spring-boot-starter-parent from 2.7.5 to 3.0.1

    Bump spring-boot-starter-parent from 2.7.5 to 3.0.1

    Bumps spring-boot-starter-parent from 2.7.5 to 3.0.1.

    Release notes

    Sourced from spring-boot-starter-parent's releases.

    v3.0.1

    :lady_beetle: Bug Fixes

    • Fix typo in LocalDevToolsAutoConfiguration logging #33615
    • No warning is given when <springProfile> is used in a Logback <root> block #33610
    • Auto-configure PropagationWebGraphQlInterceptor for tracing propagation #33542
    • WebClient instrumentation fails with IllegalArgumentException when adapting to WebClientExchangeTagsProvider #33483
    • Reactive observation auto-configuration does not declare order for WebFilter #33444
    • Web server fails to start due to "Resource location must not be null" when attempting to use a PKCS 11 KeyStore #33433
    • Actuator health endpoint for neo4j throws NoSuchElementException and always returns Status.DOWN #33428
    • Anchors in YAML configuration files throw UnsupportedOperationException #33404
    • ZipkinRestTemplateSender is not customizable #33399
    • AOT doesn't work with Logstash Logback Encoder #33387
    • Maven process-aot goal fails when release version is set in Maven compiler plugin #33382
    • DependsOnDatabaseInitializationPostProcessor re-declares bean dependencies at native image runtime #33374
    • @SpringBootTest now throws a NullPointerException rather than a helpful IllegalStateException when @SpringBootConfiguration is not found #33371
    • bootBuildImage always trys to create a native image due to bootJar always adding a META-INF/native-image/argfile to the jar #33363

    :notebook_with_decorative_cover: Documentation

    • Improve gradle plugin tags documentation #33617
    • Improve maven plugin tags documentation #33616
    • Fix typo in tomcat accesslog checkExists doc #33512
    • Documented Java compiler level is wrong #33505
    • Fix typo in documentation #33453
    • Update instead of replace environment in bootBuildImage documentation #33424
    • Update the reference docs to document the need to declare the native-maven-plugin when using buildpacks to create a native image #33422
    • Document that the shutdown endpoint is not intended for use when deploying a war to a servlet container #33410
    • Reinstate GraphQL testing documentaion #33407
    • Description of NEVER in Sanitize Sensitive Values isn't formatted correctly #33398

    :hammer: Dependency Upgrades

    • Upgrade to AspectJ 1.9.19 #33586
    • Upgrade to Byte Buddy 1.12.20 #33587
    • Upgrade to Couchbase Client 3.4.1 #33588
    • Upgrade to Dropwizard Metrics 4.2.14 #33589
    • Upgrade to Elasticsearch Client 8.5.3 #33590
    • Upgrade to Hibernate 6.1.6.Final #33591
    • Upgrade to HttpClient 4.5.14 #33592
    • Upgrade to HttpCore 4.4.16 #33593
    • Upgrade to Infinispan 14.0.4.Final #33594
    • Upgrade to Jaybird 4.0.8.java11 #33595
    • Upgrade to Jetty 11.0.13 #33596
    • Upgrade to jOOQ 3.17.6 #33597
    • Upgrade to Kotlin 1.7.22 #33598
    • Upgrade to Lettuce 6.2.2.RELEASE #33599
    • Upgrade to MongoDB 4.8.1 #33600
    • Upgrade to MSSQL JDBC 11.2.2.jre17 #33601
    • Upgrade to Native Build Tools Plugin 0.9.19 #33602

    ... (truncated)

    Commits
    • 837947c Release v3.0.1
    • 5929d95 Merge branch '2.7.x'
    • b10b788 Next development version (v2.7.8-SNAPSHOT)
    • f588793 Update copyright year of changed files
    • 0254619 Merge branch '2.7.x'
    • e4772cf Update copyright year of changed files
    • 2e7ca6f Warning if <springProfile> is used in phase 2 model elements
    • 2ed512d Use model.deepMarkAsSkipped in SpringProfileModelHandler
    • 532fed3 Increase couchbase connection timeout for tests
    • 9562a2c Merge branch '2.7.x'
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
  • Bump github/codeql-action from 2.1.36 to 2.1.37

    Bump github/codeql-action from 2.1.36 to 2.1.37

    Bumps github/codeql-action from 2.1.36 to 2.1.37.

    Changelog

    Sourced from github/codeql-action's changelog.

    2.1.37 - 14 Dec 2022

    • Update default CodeQL bundle version to 2.11.6. #1433
    Commits
    • 959cbb7 Merge pull request #1436 from github/update-v2.1.37-d58039a1
    • 10ca836 Update changelog for v2.1.37
    • d58039a Merge pull request #1435 from github/orhantoy/add-CODE_SCANNING_REF-tests
    • 37a4496 Merge pull request #1433 from github/henrymercer/use-codeql-2.11.6
    • b7028af Make sure env is reset between tests
    • f629dad Merge branch 'main' into henrymercer/use-codeql-2.11.6
    • ccee4c6 Add tests for CODE_SCANNING_REF
    • 899bf9c Merge pull request #1432 from github/henrymercer/init-post-telemetry
    • dd7c3ef Remove debugging log statements
    • b7b875e Reuse existing fields in post-init status report
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
Releases(6.0.0)
Owner
Cassandre
Open source solutions for trading
Cassandre
Java-Trading-Log-Project - A Trading Log to Journal Your Trades.

Abhi's Project - Trading Log Trading Background I am very passionate about trading. I have been studying the financial markets for a few years and hav

Abhigyan Dabla 0 Jul 18, 2022
Critter Chronologer a Software as a Service application that provides a scheduling interface for a small business that takes care of animals

Critter Chronologer a Software as a Service application that provides a scheduling interface for a small business that takes care of animals. This Spring Boot project will allow users to create pets, owners, and employees, and then schedule events for employees to provide services for pets.

Rasha Omran 1 Jan 28, 2022
该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的线上博客项目/企业大型商城系统/前后端分离实践项目等,摆脱各种 hello world 入门案例的束缚,真正的掌握 Spring Boot 开发。

Spring Boot Projects 该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的前

十三 4.5k Dec 30, 2022
A springboot-starter that can achieve Intranet penetration. 一款可以实现内网穿透的springboot-starter。

qynat-springboot-starter 基于netty的内网穿透工具在springboot中的整合 protocol协议:protobuf 只需在application.properties中配置少量信息,实现零代码侵入的web项目内网穿透 项目的server端的源码在另一个多模块项目中,

whz11 65 Dec 12, 2022
A springboot-starter that can achieve Intranet penetration. 一款可以实现内网穿透的springboot-starter。

qynat-springboot-starter 基于netty的内网穿透工具在springboot中的整合 protocol协议:protobuf 只需在application.properties中配置少量信息,实现零代码侵入的web项目内网穿透 项目的server端的源码在另一个多模块项目中,

whz11 65 Dec 12, 2022
Welcome to the EHS robotics club's GitHub repository, this will also be used as our primary community center and means of communication. Also be sure to join our remind for on the go updates @EHSFTC21

NOTICE This repository contains the public FTC SDK for the Ultimate Goal (2020-2021) competition season. Formerly this software project was hosted her

null 5 Feb 25, 2022
Cloud Native and Low Code Platform to create FullStack web Admin applications in minutes

Cloud Native and Low Code Platform to create FullStack web Admin applications in minutes ✨ Features & Technologies REST API generator Low Code CRUD &

Gemini Framework 171 Dec 26, 2022
This Web Application Allows A user to upload a two minutes Video. It uses Server Side Capabilities of Nodejs and Spring Boot .

VideoStreamingApplication Purpose Of This Application These days trend of short videos are on rise youtube recently realsed "Shorts" . So , taking ins

Prateek Kumar 57 Nov 13, 2022
循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring Batch、Spring Cloud、Spring Cloud Alibaba、Spring Security & Spring Security OAuth2,博客Spring系列源码:https://mrbird.cc

Spring 系列教程 该仓库为个人博客https://mrbird.cc中Spring系列源码,包含Spring Boot、Spring Boot & Shiro、Spring Cloud,Spring Boot & Spring Security & Spring Security OAuth2

mrbird 24.8k Jan 6, 2023
Budget Proof Key for Code Exchange (PKCE) implementation using Java Spring-boot

Low Budget Proof Key for Code Exchange (PKCE) Implementation using Java Spring-boot Just for fun, low budget implementation of PKCE Auth Flow using a

Hardik Singh Behl 10 Dec 11, 2022
Get or Throw Spring boot Starter will help you to hide handling if entity not found.

Get or Throw Spring boot Starter Get or Throw Spring boot Starter will help you to hide handling if entity not found. 1. Setup 2. Usage Library adds c

null 3 Feb 2, 2022
Some anti afk bot which prevents you from getting punished for going afk in games. Way of stopping the bot is slightly flawed but we'll ignore that.

AntiAFK Some anti afk bot which prevents you from getting punished for going afk in games. Gui mode coming soon... Installation Install Java 17. Downl

flasky 1 Jan 13, 2022
Kafka-spring-boot-starter: encapsulated based on spring-kafka

Encapsulation based on spring-kafka not only supports native configuration, but also adds multi data source configuration.

liudong 8 Jan 9, 2023
Java & Spring based cryptocurrency trading robot (RPA) that uses the public Binance API

Santini Santini is a Java & Spring based cryptocurrency trading bot that uses the public Binance API. It is run by providing it with API keys generate

Tongjian Cui 22 Apr 19, 2022
Java & Spring based cryptocurrency trading robot (RPA) that uses the public Binance API

Santini is a Java & Spring based cryptocurrency trading bot that uses the public Binance API. It is run by providing it with API keys generated at binance.com (Also provide Santini with Twitter API keys if tweet alerts are desired).

Adam·Michael 22 Apr 19, 2022
Squadio-App is a Users-Accounts financial system. exposes Rest APIs with JWT authentication/Authorization process .

squadio-app Description Squadio-App is a Users-Accounts financial system. exposes Rest APIs with JWT authentication/Authorization process . How to Run

Bashar Othman 1 Jan 29, 2022
Spring Boot starter module for gRPC framework.

Spring Boot starter module for gRPC framework.

Michael Zhang 2.8k Jan 4, 2023
Spring Boot starter module for gRPC framework.

Spring Boot starter module for gRPC framework.

Michael Zhang 1.8k Mar 17, 2021
Spring Boot starter for JustAuth Plus.

Spring Boot starter for JustAuth Plus.

Fujie 5 Jun 23, 2022