Java String expert.
Budget: $10 – $50 USD
https://trading-bot.cassandre.tech/
https://github.com/cassandre-tech/cassandre-trading-bot
is a framework to create a java crypto trading bot in a short time.
- It is a Spring boot starter, and takes care of exchange connection, tickers, accounts, orders, trades, and positions, so we can focus on building a trading strategy. It lets easily open short/long positions, set the rules.
- It uses XChange (https://github.com/knowm/XChange) library to connect to multiple exchanges, and project test at least Kucoin, Coinbase & Binance exchanges.
- The project provides a dry mode to simulate a virtual exchange replying to orders, so we can easily test the strategy built, simulating gains/loss over a period of time.
- Also project provides a spring-boot-starter to backtest the bot on historical data. With this, during tests, the project will import data and push it to the strategy building.
- Also it provides a specific class (BasicTa4jCassandreStrategy) to help you build a strategy based on ta4j (https://github.com/ta4j/ta4j).
What Project already does.
1. It receives the exchange live data and the historical data of n bars according required for initial Strategies design for trading with Pair1, Pair2...PairN.
2. It processes the incoming data creating bars from it to make it usable in a technical indicator for the indicated timeframe.
3. It provides the framework to create a Strategy1, Strategy2... StrategyN to buy / sell any combination of Pair1...PairN, setable at anytime with business logic.
4. It's able to process all strategies with initial data that produces Strategy.shouldBuy/Strategy.shouldSell signal implemented by the user and in this way to provide an initial virtual performance per strategy on historical data.
5. Once historical data is processed, then each strategy built by the user can run in parallel process live data and each one generates Strategy.shouldBuy/Strategy.shouldSell signals that create orders/positions.
Feature to add.
Parallel virtual and real trading, and use drymode classes to process Equity as incoming if it was an incoming pair.
# Each Strategy must be enabled/disabled strategy with a canTrade field coming to form BalanceStrategy.
Let's work with a Strategy1 sample, but must work over each Strategy implemented.
1. When Strategy1.shouldBuy/shouldSell=true it must run over a paper accounts, let's say a VirtualAccount, with a virtual balance (with Strategy1.initialVirtualBalance=# set in the beginning). One instance of a VirtualAccount would be needed per Strategy.
2. Would be needed new GenericCassandreStrategy.canTrade=true. It will let Strategy1 do RealTrading in parallel as with the VirtualTrading.
## Process inside Strategy1,
- Strategy1 will produce VirtualPositions in its own VirtualAccount1 and then, we got a VirtualEquity and a VirtualBalance after each VirtualPosition is closed.
- Then it's time to process the VirtualEquity data.
1. I process the VirtualEquity data on the VirtualAccount1 creating bars from it to make it usable in a technical indicator for a specified timeframe.
2. I create a BalanceStrategy1 to "buy" / "sell" using the VirtualAccount1 as it if was a Pair (balance vs time)
3. Once historical generated VirtualEquity data is processed, then BalanceStrategy1 will process live VirtualEquity generated by the Strategy1 generating a shouldBuy/shouldSell to create "positions". But then the one thing must happens: when shouldBuy then Strategy1.canTrade=true, when shouldSell then Strategy1.canTrade=false.
3. So, finally Strategy1.canTrade is modified by BalanceStrategy1 performed over my VirtualEquity, enabling or disabling the possibility of Strategy.canTrade
https://github.com/cassandre-tech/cassandre-trading-bot
is a framework to create a java crypto trading bot in a short time.
- It is a Spring boot starter, and takes care of exchange connection, tickers, accounts, orders, trades, and positions, so we can focus on building a trading strategy. It lets easily open short/long positions, set the rules.
- It uses XChange (https://github.com/knowm/XChange) library to connect to multiple exchanges, and project test at least Kucoin, Coinbase & Binance exchanges.
- The project provides a dry mode to simulate a virtual exchange replying to orders, so we can easily test the strategy built, simulating gains/loss over a period of time.
- Also project provides a spring-boot-starter to backtest the bot on historical data. With this, during tests, the project will import data and push it to the strategy building.
- Also it provides a specific class (BasicTa4jCassandreStrategy) to help you build a strategy based on ta4j (https://github.com/ta4j/ta4j).
What Project already does.
1. It receives the exchange live data and the historical data of n bars according required for initial Strategies design for trading with Pair1, Pair2...PairN.
2. It processes the incoming data creating bars from it to make it usable in a technical indicator for the indicated timeframe.
3. It provides the framework to create a Strategy1, Strategy2... StrategyN to buy / sell any combination of Pair1...PairN, setable at anytime with business logic.
4. It's able to process all strategies with initial data that produces Strategy.shouldBuy/Strategy.shouldSell signal implemented by the user and in this way to provide an initial virtual performance per strategy on historical data.
5. Once historical data is processed, then each strategy built by the user can run in parallel process live data and each one generates Strategy.shouldBuy/Strategy.shouldSell signals that create orders/positions.
Feature to add.
Parallel virtual and real trading, and use drymode classes to process Equity as incoming if it was an incoming pair.
# Each Strategy must be enabled/disabled strategy with a canTrade field coming to form BalanceStrategy.
Let's work with a Strategy1 sample, but must work over each Strategy implemented.
1. When Strategy1.shouldBuy/shouldSell=true it must run over a paper accounts, let's say a VirtualAccount, with a virtual balance (with Strategy1.initialVirtualBalance=# set in the beginning). One instance of a VirtualAccount would be needed per Strategy.
2. Would be needed new GenericCassandreStrategy.canTrade=true. It will let Strategy1 do RealTrading in parallel as with the VirtualTrading.
## Process inside Strategy1,
- Strategy1 will produce VirtualPositions in its own VirtualAccount1 and then, we got a VirtualEquity and a VirtualBalance after each VirtualPosition is closed.
- Then it's time to process the VirtualEquity data.
1. I process the VirtualEquity data on the VirtualAccount1 creating bars from it to make it usable in a technical indicator for a specified timeframe.
2. I create a BalanceStrategy1 to "buy" / "sell" using the VirtualAccount1 as it if was a Pair (balance vs time)
3. Once historical generated VirtualEquity data is processed, then BalanceStrategy1 will process live VirtualEquity generated by the Strategy1 generating a shouldBuy/shouldSell to create "positions". But then the one thing must happens: when shouldBuy then Strategy1.canTrade=true, when shouldSell then Strategy1.canTrade=false.
3. So, finally Strategy1.canTrade is modified by BalanceStrategy1 performed over my VirtualEquity, enabling or disabling the possibility of Strategy.canTrade