A fast cryptocurrency trading bot implemented in Go

Overview

image

tests Go Reference

A fast cryptocurrency bot framework implemented in Go. Ninjabot permits users to create and test custom strategies for spot markets.

⚠️ Caution: Working in progress - It's not production ready 🚧

Installation

go get -u github.com/rodrigo-brito/ninjabot

Examples of Usage

Check example directory:

  • Paper Wallet (Live Simulation)
  • Backtesting
  • Real Account (Binance)

CLI

To download historical data you can download ninjabot CLI from release page

  • Download 30 days: ninjabot download --pair BTCUSDT --timeframe 1d --days 30 --output ./btc.csv

Backtesting Example

  • Backtesting from example directory:
go run example/backtesting/main.go

Output:

[SETUP] Using paper wallet                   
[SETUP] Initial Portfolio = 10000.000000 USDT 
+---------+--------+-----+------+--------+--------+------------+
|  PAIR   | TRADES | WIN | LOSS | % WIN  | PAYOFF |   PROFIT   |
+---------+--------+-----+------+--------+--------+------------+
| ETHUSDT |     19 |   9 |   10 | 47.4 % |  6.975 |  6334.1268 |
| BTCUSDT |     17 |   6 |   11 | 35.3 % |  7.734 |  4803.0181 |
+---------+--------+-----+------+--------+--------+------------+
|   TOTAL |     36 |  15 |   21 | 41.7 % |  7.333 | 11137.1449 |
+---------+--------+-----+------+--------+--------+------------+
--------------
WALLET SUMMARY
--------------
0.000000 ETH
0.000000 BTC
21137.144920 USDT
--------------
START PORTFOLIO =  10000 USDT
FINAL PORTFOLIO =  21137.14492013396 USDT
GROSS PROFIT    =  11137.144920 USDT (111.37%)
MARKET CHANGE   =  396.71%

--------------
Chart available at http://localhost:8080

Plot result:

Roadmap:

  • Live Trading

    • Order Limit, Market, OCO
    • Custom Strategy
    • Stop Orders
  • Backtesting

    • Paper Wallet (Live Trading with fake wallet)
    • Load Feed from CSV
    • Market Orders
    • Limit Orders (WIP #6)
    • OCO Orders (wIP #6)
    • Stop Orders
  • Bot CLI - Utilities to support studies

    • Download
    • Plot (Candles + Orders)
    • Support indicator in plot result

Exchanges:

Currently, we only support Binance exchange. If you want to include support for other exchanges, you need to implement a new struct that implements the interface Exchange. You can check some examples in exchange directory.

Comments
  • Improve `/balance` command performance

    Improve `/balance` command performance

    When we request the balance summary, ninjabot will request the position for each trading pair and report a summary. But in this case, we request the same function multiple times: binance.Account()

    https://github.com/rodrigo-brito/ninjabot/blob/1a3585bedbaf66ba35e9377635877aa688e5a1e0/exchange/binance.go#L444-L455

    A good approach to improve the performance are: Request binance.Account() once and calculate the summary for all pairs in the same time.

    kind/improvement help wanted env/telegram 
    opened by rodrigo-brito 8
  • Fee Validation on Market orders

    Fee Validation on Market orders

    Trying to understand why taker/maker commission is added to validation for amounts when doing a market sell or buy on Binance

    Lets say I have 10 ETH as balance, if I try to sell 10 ETH with bot currently, validate will fail ErrInsufficientFunds since it adds TakerCommission

    How should I calculate the size to pass to a sell amount? Should I calculate it as 10 / (1 + b.userInfo.TakerCommission)?

    question 
    opened by jafri 8
  • Turtle trading strategy added.

    Turtle trading strategy added.

    What have you changed and why?

    Turtle trading strategy added. (https://www.investopedia.com/articles/trading/08/turtle-trading.asp)

    Related Issues

    Link related issues here.

    opened by gunebakan 7
  • should it be `>=`?

    should it be `>=`?

    this line https://github.com/rodrigo-brito/ninjabot/blob/main/exchange/paperwallet.go#L250

    it seems a bug? when the order is buy, should buy only when order.Price >= candle.Close?

    opened by davidxiao 6
  • Create a template for issues and pull requests

    Create a template for issues and pull requests

    We need a template for issues and pull requests

    How Github template works: https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/manually-creating-a-single-issue-template-for-your-repository

    Examples of issues templates: https://github.com/search?utf8=%E2%9C%93&q=in%3Apath+issue_template.md&type=Code&ref=searchresults

    Examples of PR templates: https://github.com/search?utf8=%E2%9C%93&q=in%3Apath+pull_request_template.md&type=Code&ref=searchresults

    kind/documentation hacktoberfest 
    opened by rodrigo-brito 6
  • support more storage type for persist order history

    support more storage type for persist order history

    when we run ninjabot on serverless, cloud container, etc. I think better way if we persist data on external db or external file storage like postgresql , mongodb , s3 , etc. Now, this bot support only file and memory.

    kind/feature hacktoberfest 
    opened by panapol-p 5
  • Fix backtest  errors; enforce QtyDecimalPrecision

    Fix backtest errors; enforce QtyDecimalPrecision

    For me, when I do

    go run ./examples/backtesting

    I get the following:

    Screenshot 2022-07-12 at 22 22 49

    This seems to be caused by rounding errors in market orders. My fix enforces QtyDecimalPrecision and this gets rid of the errors.

    opened by rene-post 5
  • Fix Heikin-Ashi code  and incorrect test data

    Fix Heikin-Ashi code and incorrect test data

    The Heikin-Ashi implementation should determine High and Low based on the calculated HK open en HK close. When implemented correctly this way the test case fails. Turns out the test data does NOT match the actual data in TradingView when looking at the Heikin-Ashi candles from the start of trading in 2017.

    What have you changed and why?

    Fixed the Heikin-Ashi implementation Entered the correct test data from TradingView, (publicly available information, feel free to verify)

    opened by rene-post 5
  • the queue seems deadlock with latest changes,

    the queue seems deadlock with latest changes,

    With latest code change, the priority queue seems deadlock when tested by running paperwallet example.

    wrapping the below code block in anonymous function works, but not so sure it has other potential issues. https://github.com/rodrigo-brito/ninjabot/blob/main/model/priorityqueue.go#L30-L35

    Reckon it's not necessary to use priority queue at all for the bot? sorry maybe i could be wrong because i have limited knowledge yet. but what I can think of is,

    • the bot doesn't maintain items in the queue, even potentially it's possible to accumulate some, but it's because the downstreams can not handle in time.

    • with above concern, then in most cases, it will be not used as expected because no items in it, or even if there are occasionally, it's no point to maintain the order according to time?

    • probably strategy controller is the place to maintain the queue if needed, but i think candles are maintained from onCandle as below, and it reckon be reliable?

    https://github.com/rodrigo-brito/ninjabot/blob/main/strategy/controller.go#L34

    It'll be great if you can pls share more thoughts :)

    Thanks very much

    kind/bug 
    opened by davidxiao 5
  • code=-2014, API-key format invalid

    code=-2014, API-key format invalid

    Hello,

    I am getting this error

    ERRO[2022-01-23 05:00] <APIError> code=-2014, msg=API-key format invalid. 
    ERRO[2022-01-23 05:00] <APIError> code=-2014, msg=API-key format invalid. 
    ERRO[2022-01-23 09:00] <APIError> code=-2014, msg=API-key format invalid. 
    ERRO[2022-01-23 09:00] <APIError> code=-2014, msg=API-key format invalid. 
    ERRO[2022-01-23 13:00] <APIError> code=-2014, msg=API-key format invalid. 
    ERRO[2022-01-23 13:00] <APIError> code=-2014, msg=API-key format invalid.
    

    I am assuming it is coming from somewhere in here? https://github.com/rodrigo-brito/ninjabot/blob/main/exchange/binance.go

    Any pointers as to why or how to solve this problem are welcome.

    opened by bh90210 5
  • feat(backtesting) include button to export csv

    feat(backtesting) include button to export csv

    What did not work before?

    Include button to export CSV with orders in chart page #53

    What have you changed and why?

    add button for download trading history add new api to get trading history by pair

    This PR has:
    • [x] Been doubled checked by the author
    • [x] Tested for newly introduced bugs
    • [x] Included documentation

    image

    opened by panapol-p 5
  • build(deps): bump github.com/urfave/cli/v2 from 2.23.0 to 2.23.7

    build(deps): bump github.com/urfave/cli/v2 from 2.23.0 to 2.23.7

    Bumps github.com/urfave/cli/v2 from 2.23.0 to 2.23.7.

    Release notes

    Sourced from github.com/urfave/cli/v2's releases.

    v2.23.7

    What's Changed

    Full Changelog: https://github.com/urfave/cli/compare/v2.23.6...v2.24.0

    v2.23.6

    What's Changed

    Full Changelog: https://github.com/urfave/cli/compare/v2.23.5...v2.23.6

    v2.23.5

    What's Changed

    New Contributors

    Full Changelog: https://github.com/urfave/cli/compare/v2.23.4...v2.23.5

    v2.23.4

    What's Changed

    Full Changelog: https://github.com/urfave/cli/compare/v2.23.3...v2.23.4

    v2.23.3

    What's Changed

    New Contributors

    Full Changelog: https://github.com/urfave/cli/compare/v2.23.2...v2.23.3

    Note. This is considered a minor release even though it has a new "feature" i.e support for int64slice for alstrc flags. The int64slice is verbatim copy of existing code and doesnt include any new behaviour compared to other altsrc flags.

    v2.23.2

    What's Changed

    ... (truncated)

    Commits
    • a6194b9 Merge pull request #1618 from dearchap/issue_1617
    • 659672b Fix docs issue
    • badc19f Fix:(issue_1617) Fix Bash completion for subcommands
    • f9652e3 Merge pull request #1608 from dearchap/issue_1591
    • ab2bf3c Fix:(issue_1591) Use AppHelpTemplate instead of SubCommandHelpTemplate
    • 5f57616 Merge pull request #1588 from feedmeapples/disable-slice-flag-separator
    • 9b0812c Update godoc v2 spacing
    • ceb75a1 godoc
    • 377947f replace test hardcode with defaultSliceFlagSeparator
    • 0f8707a Allow disabling SliceFlag separator altogether
    • 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 
    opened by dependabot[bot] 0
  • build(deps): bump github.com/samber/lo from 1.33.0 to 1.37.0

    build(deps): bump github.com/samber/lo from 1.33.0 to 1.37.0

    Bumps github.com/samber/lo from 1.33.0 to 1.37.0.

    Release notes

    Sourced from github.com/samber/lo's releases.

    v1.37.0

    Adding:

    • lo.PartialX
    • lo.Transaction

    Improvement:

    • lo.Associate / lo.SliceToMap: faster memory allocation

    Chore:

    • Remove *_test.go files from releases, in order to cleanup dev dependencies

    v1.36.0

    Adding:

    • lo.AttemptWhile
    • lo.AttemptWhileWithDelay

    v1.35.0

    Adding:

    • lo.RandomString
    • lo.BufferWithTimeout (alias to lo.BatchWithTimeout)
    • lo.Buffer (alias to lo.Batch)

    Change:

    • lo.Slice: avoid panic caused by out-of-bounds

    Deprecation:

    • lo.BatchWithTimeout
    • lo.Batch

    v1.34.0

    Improving:

    • lo.Union: faster and can receive more than 2 lists

    Adding:

    • lo.FanIn (alias to lo.ChannelMerge)
    • lo.FanOut

    Deprecation:

    • lo.ChannelMerge
    Changelog

    Sourced from github.com/samber/lo's changelog.

    1.37.0 (2022-12-15)

    Adding:

    • lo.PartialX
    • lo.Transaction

    Improvement:

    • lo.Associate / lo.SliceToMap: faster memory allocation

    Chore:

    • Remove *_test.go files from releases, in order to cleanup dev dependencies

    1.36.0 (2022-11-28)

    Adding:

    • lo.AttemptWhile
    • lo.AttemptWhileWithDelay

    1.35.0 (2022-11-15)

    Adding:

    • lo.RandomString
    • lo.BufferWithTimeout (alias to lo.BatchWithTimeout)
    • lo.Buffer (alias to lo.Batch)

    Change:

    • lo.Slice: avoid panic caused by out-of-bounds

    Deprecation:

    • lo.BatchWithTimeout
    • lo.Batch

    1.34.0 (2022-11-12)

    Improving:

    • lo.Union: faster and can receive more than 2 lists

    Adding:

    • lo.FanIn (alias to lo.ChannelMerge)
    • lo.FanOut

    Deprecation:

    • lo.ChannelMerge
    Commits
    • d0af59f bump v1.37.0
    • 259951a bump v1.37.0
    • 5e108ed chore(ci): add release script + cleanup dependencies before release (#284)
    • 565be2e Revert "chore: comment benchmarks, in order to remove go-funk dependency"
    • 1a60415 chore: rename ci workflows
    • 28eaf62 chore: comment benchmarks, in order to remove go-funk dependency
    • 6438444 adding Transaction
    • a6aabb4 Merge branch 'master' of github.com:samber/lo
    • 7eb64a6 update changelog
    • 0ed7b6e fix: set map capacity in Associate (#282)
    • 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 
    opened by dependabot[bot] 0
  • build(deps): bump github.com/schollz/progressbar/v3 from 3.11.0 to 3.12.2

    build(deps): bump github.com/schollz/progressbar/v3 from 3.11.0 to 3.12.2

    Bumps github.com/schollz/progressbar/v3 from 3.11.0 to 3.12.2.

    Release notes

    Sourced from github.com/schollz/progressbar/v3's releases.

    v3.12.2

    What's Changed

    Full Changelog: https://github.com/schollz/progressbar/compare/v3.12.1...v3.12.2

    v3.12.1

    What's Changed

    New Contributors

    Full Changelog: https://github.com/schollz/progressbar/compare/v3.12.0...v3.12.1

    v3.12.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/schollz/progressbar/compare/v3.11.0...v3.12.0

    Commits
    • c8cf82e update deps
    • 502db75 Merge pull request #146 from oerlikon/fix-full-width-test
    • b2ea7ac Fix TestOptionFullWidth not always working
    • f9d6be8 Add actual check to TestOptionSetElapsedTime
    • 23b4ee3 update deps
    • 82603fe Merge pull request #145 from oerlikon/fix-full-width
    • aef324e Add minor fix for full width mode
    • 6204e0e change branch for badge
    • 84d4294 Merge pull request #144 from oerlikon/fix-vet-tests
    • 56c5e5b Merge pull request #143 from oerlikon/use-strings-builder
    • 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 
    opened by dependabot[bot] 0
  • build(deps): bump github.com/evanw/esbuild from 0.15.12 to 0.16.12

    build(deps): bump github.com/evanw/esbuild from 0.15.12 to 0.16.12

    Bumps github.com/evanw/esbuild from 0.15.12 to 0.16.12.

    Release notes

    Sourced from github.com/evanw/esbuild's releases.

    v0.16.12

    • Loader defaults to js for extensionless files (#2776)

      Certain packages contain files without an extension. For example, the yargs package contains the file yargs/yargs which has no extension. Node, Webpack, and Parcel can all understand code that imports yargs/yargs because they assume that the file is JavaScript. However, esbuild was previously unable to understand this code because it relies on the file extension to tell it how to interpret the file. With this release, esbuild will now assume files without an extension are JavaScript files. This can be customized by setting the loader for "" (the empty string, representing files without an extension) to another loader. For example, if you want files without an extension to be treated as CSS instead, you can do that like this:

      • CLI:

        esbuild --bundle --loader:=css
        
      • JS:

        esbuild.build({
          bundle: true,
          loader: { '': 'css' },
        })
        
      • Go:

        api.Build(api.BuildOptions{
          Bundle: true,
          Loader: map[string]api.Loader{"": api.LoaderCSS},
        })
        

      In addition, the "type" field in package.json files now only applies to files with an explicit .js, .jsx, .ts, or .tsx extension. Previously it was incorrectly applied by esbuild to all files that had an extension other than .mjs, .mts, .cjs, or .cts including extensionless files. So for example an extensionless file in a "type": "module" package is now treated as CommonJS instead of ESM.

    v0.16.11

    • Avoid a syntax error in the presence of direct eval (#2761)

      The behavior of nested function declarations in JavaScript depends on whether the code is run in strict mode or not. It would be problematic if esbuild preserved nested function declarations in its output because then the behavior would depend on whether the output was run in strict mode or not instead of respecting the strict mode behavior of the original source code. To avoid this, esbuild transforms nested function declarations to preserve the intended behavior of the original source code regardless of whether the output is run in strict mode or not:

      // Original code
      if (true) {
        function foo() {}
        console.log(!!foo)
        foo = null
        console.log(!!foo)
      }
      console.log(!!foo)
      

      // Transformed code if (true) { let foo2 = function() { };

    ... (truncated)

    Changelog

    Sourced from github.com/evanw/esbuild's changelog.

    0.16.12

    • Loader defaults to js for extensionless files (#2776)

      Certain packages contain files without an extension. For example, the yargs package contains the file yargs/yargs which has no extension. Node, Webpack, and Parcel can all understand code that imports yargs/yargs because they assume that the file is JavaScript. However, esbuild was previously unable to understand this code because it relies on the file extension to tell it how to interpret the file. With this release, esbuild will now assume files without an extension are JavaScript files. This can be customized by setting the loader for "" (the empty string, representing files without an extension) to another loader. For example, if you want files without an extension to be treated as CSS instead, you can do that like this:

      • CLI:

        esbuild --bundle --loader:=css
        
      • JS:

        esbuild.build({
          bundle: true,
          loader: { '': 'css' },
        })
        
      • Go:

        api.Build(api.BuildOptions{
          Bundle: true,
          Loader: map[string]api.Loader{"": api.LoaderCSS},
        })
        

      In addition, the "type" field in package.json files now only applies to files with an explicit .js, .jsx, .ts, or .tsx extension. Previously it was incorrectly applied by esbuild to all files that had an extension other than .mjs, .mts, .cjs, or .cts including extensionless files. So for example an extensionless file in a "type": "module" package is now treated as CommonJS instead of ESM.

    0.16.11

    • Avoid a syntax error in the presence of direct eval (#2761)

      The behavior of nested function declarations in JavaScript depends on whether the code is run in strict mode or not. It would be problematic if esbuild preserved nested function declarations in its output because then the behavior would depend on whether the output was run in strict mode or not instead of respecting the strict mode behavior of the original source code. To avoid this, esbuild transforms nested function declarations to preserve the intended behavior of the original source code regardless of whether the output is run in strict mode or not:

      // Original code
      if (true) {
        function foo() {}
        console.log(!!foo)
        foo = null
        console.log(!!foo)
      }
      console.log(!!foo)
      

      // Transformed code if (true) {

    ... (truncated)

    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 
    opened by dependabot[bot] 0
  • build(deps): bump github.com/xhit/go-str2duration/v2 from 2.0.0 to 2.1.0

    build(deps): bump github.com/xhit/go-str2duration/v2 from 2.0.0 to 2.1.0

    Bumps github.com/xhit/go-str2duration/v2 from 2.0.0 to 2.1.0.

    Release notes

    Sourced from github.com/xhit/go-str2duration/v2's releases.

    v2.1.0

    What's Changed

    Full Changelog: https://github.com/xhit/go-str2duration/compare/v2.0.0...v2.1.0

    Commits
    • 017325b Merge pull request #3 from xhit/2-proposal-add-string-function-that-prints-ou...
    • 37c349f convert duration to string supporting days and weeks
    • See full diff 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 
    opened by dependabot[bot] 0
  • model.Candle Complete might be improper for the Exchange other than Binance

    model.Candle Complete might be improper for the Exchange other than Binance

    I love ninjatrader for its simplicity. I need to make a bot using GateIO only to find, property Complete(bool) on model. It's impossible for me to determine which tick is the last tick for the ongoing (partial) candle, unless the tick to come next is for the next candle. I've never see a complete prop came along with tick data in other exchange than binance. this trait might limit ninjatrader's expansion in functionality.

    Complete on Candle is what I can't get from GateIO history data or live feed. maybe I tried to make a something like CSVFeed to feed ninjatrader GateIO's history to backtest , but it seemed to i have to do more than that to even run the basic backtest emacross example.

    opened by nusicvvv 1
Releases(v0.2.4)
Owner
Rodrigo Brito
Rodrigo Brito
The modern cryptocurrency trading bot written in Go.

bbgo A trading bot framework written in Go. The name bbgo comes from the BB8 bot in the Star Wars movie. aka Buy BitCoin Go! Current Status Features E

Yo-An Lin 769 Jan 2, 2023
CryptoPump is a cryptocurrency trading bot that focuses on high speed and flexibility

CryptoPump is a cryptocurrency trading bot that focuses on high speed and flexibility. The algorithms utilize Go Language and WebSockets to react in real-time to market movements based on Bollinger statistical analysis and pre-defined profit margins.

null 57 Nov 24, 2022
A golang implementation of a console-based trading bot for cryptocurrency exchanges

Golang Crypto Trading Bot A golang implementation of a console-based trading bot for cryptocurrency exchanges. Usage Download a release or directly bu

Daniel Leon 6 Jun 4, 2022
Cryptocurrency implemented using the Go programming language

Nomadcoin Making a Cryptocurrency using the Go programming language. Features Mining Transactions Database Backend Wallets REST API HTML Explorer P2P

Nomad Coders 28 Dec 7, 2022
A telegram bot that fetches multiple RSS cryptocurrency news feeds for sentiment analysis

Crypto News Telegram Bot A simple telegram bot that will help you stay updated on your latest crypto news This bot will help you keep track of the lat

Cha 4 Aug 22, 2021
Kelp is a free and open-source trading bot for the Stellar DEX and 100+ centralized exchanges

Kelp Kelp is a free and open-source trading bot for the Stellar universal marketplace and for centralized exchanges such as Binance, Kraken, CoinbaseP

Stellar 959 Jan 6, 2023
BlueBot is an open-source trading bot that can be customized to handle specific investment strategies.

BlueBot Quick Note BlueBot and all mentioned services are free to use, including supported financial APIs. Overview BlueBot is a self-healing trading

Coby Eastwood 18 Sep 7, 2022
Crypto signal trading bot

Crypto-signal-trading-bot Firstly a warning This project has the ability to spen

MoonR 6 Dec 15, 2022
Bot-template - A simple bot template for creating a bot which includes a config, postgresql database

bot-template This is a simple bot template for creating a bot which includes a c

Disgo 2 Sep 9, 2022
Automated Trader (at). Framework for building trading bots.

Automated Trader (at) Purpose: Framework for building automated trading strategies in three steps: Build your own strategy. Verify it with the backtes

Simon Klinkert 61 Dec 14, 2022
Tripwire is trading platform interface

Tripwire A Golang SDK for binance API. All the REST APIs listed in binance API document are implemented, as well as the websocket APIs. For best compa

Workfoxes 0 Nov 28, 2021
A trading robot, that can submit basic orders in an automated fashion.

Source: https://github.com/harunnryd/btrade Issues: https://github.com/harunnryd/btrade/issues Twitter: @harunnryd LinkedIn: @harunnryd btrade is a ro

harun nur rasyid 2 Jan 26, 2022
A bot based on Telegram Bot API written in Golang allows users to download public Instagram photos, videos, and albums without receiving the user's credentials.

InstagramRobot InstagramRobot is a bot based on Telegram Bot API written in Golang that allows users to download public Instagram photos, videos, and

FTC Team 8 Dec 16, 2021
Dlercloud-telegram-bot - A Telegram bot for managing your Dler Cloud account

Dler Cloud Telegram Bot A Telegram bot for managing your Dler Cloud account. Usa

Beta Kuang 1 Dec 30, 2021
Quote-bot - Un bot utilisant l'API Twitter pour tweeter une citation par jour sur la programmation et les mathématiques.

Description Ceci est un simple bot programmé en Golang qui tweet une citation sur la programmation tout les jours. Ce bot est host sur le compte Twitt

Liam Cornu 0 Jan 1, 2022
Discord-bot - A Discord bot with golang

JS discord bots Install Clone repo git clone https://github.com/fu-js/discord-bo

JS Club 4 Aug 2, 2022
Bot - Telegram Music Bot in Go

Telegram Music Bot in Go An example bot using gotgcalls. Setup Install the serve

null 9 Jun 28, 2022
Pro-bot - A telegram bot to play around with the community telegram channels

pro-bot ?? Pro Bot A Telegram Bot to Play Around With The Community Telegram Cha

TechProber 1 Jan 24, 2022
Slack-emoji-bot - This Slack bot will post the newly created custom Slack emojis to the channel of your choice

Slack Emoji Bot This Slack bot will post the newly created custom Slack emojis t

Ryan Hollis 8 Oct 21, 2022