Skip to content

autotrading bot #54

Description

@amakaverao-netizen

I’ll adapt the project for OANDA with two explicit modes: 5-minute scalping and slower intraday/day trading. I’ll keep execution dry-run by default, read the API token and account ID only from environment variables, and add a practice-account opt-in so the code cannot silently place live orders.

Search complete: Inspect OANDA integration points

Searched codebase for "autotrader-bot CLI current working directory workspace", 1 result

Searched codebase for "OANDA candle client dry-run practice execution modes 5-minute scalping day trading", 1 result

Searched for files matching **/*cli*, 2 matches

Searched for files matching **/*strategy*, 2 matches

Searched for files matching **/*backtest*, 4 matches

Searched for files matching **/*dependency*, 1 match

Searched for files matching **/README*, 1 match

No matches found. Your search pattern might be excluded completely by either the search.exclude settings or .*ignore files.
If you believe that it should have results, you can check into the .ignore files and the exclude setting (here are some excluded patterns for reference:[/node_modules,/bower_components,**/.code-search]).
Then if you want to include those files you can call the tool again by setting "includeIgnoredFiles" to true.

No matches found. Your search pattern might be excluded completely by either the search.exclude settings or .*ignore files.
If you believe that it should have results, you can check into the .ignore files and the exclude setting (here are some excluded patterns for reference:[/node_modules,/bower_components,**/.code-search]).
Then if you want to include those files you can call the tool again by setting "includeIgnoredFiles" to true.

Searched for regex 5-minute|five.*minute|scalping|day.*trading|timeframe.*profile, 15 results

Searched for regex scalping|day.*trading|timeframe|period|interval, 31 results

No matches found. Your search pattern might be excluded completely by either the search.exclude settings or .*ignore files.
If you believe that it should have results, you can check into the .ignore files and the exclude setting (here are some excluded patterns for reference:[/node_modules,/bower_components,**/.code-search]).
Then if you want to include those files you can call the tool again by setting "includeIgnoredFiles" to true.

No matches found. Your search pattern might be excluded completely by either the search.exclude settings or .*ignore files.
If you believe that it should have results, you can check into the .ignore files and the exclude setting (here are some excluded patterns for reference:[/node_modules,/bower_components,**/.code-search]).
Then if you want to include those files you can call the tool again by setting "includeIgnoredFiles" to true.

Searched for files matching **/tests/**, 2 matches

Read

Read

Read

Read

Read

Read

Searched for regex execution.*mode|dry-run|practice|paper.*trade|paper.*live, 1 result

No matches found. Your search pattern might be excluded completely by either the search.exclude settings or .*ignore files.
If you believe that it should have results, you can check into the .ignore files and the exclude setting (here are some excluded patterns for reference:[/node_modules,/bower_components,**/.code-search]).
Then if you want to include those files you can call the tool again by setting "includeIgnoredFiles" to true.

Searched for files matching **/*oanda*, no matches

Searched for files matching **/*paper*, no matches

Searched for files matching **/*dry*, no matches

Searched for files matching **/*practice*, no matches

Searched for files matching **/*paper_live*, no matches

Searched for regex 5m|5-minute|15m|15-minute|scalping|day.*trading, 19 results

Searched for regex backtest|paper trading|practice account|dry run, 28 results

Searched for files matching **/src/**, 16 matches

The current architecture already separates data, signals, execution math, and CLI, so the integration can stay small. I’m adding an OANDA v3 client plus named profiles: scalp uses M5 candles and tighter exits, while day uses H1 candles and wider ATR stops/targets; both share the same risk cap and signal engine.

Created

Created

Generating patch (10 lines) in


The OANDA integration is drafted with a hard dry-run default, but I spotted one syntax typo in the order payload before validation. I’m fixing that and wiring the CLI so the same project can backtest scalp versus day, or submit a practice-account order only when --execute is explicitly supplied.

Created

Generating patch (31 lines) in ,



Ran terminal command: python -m pytest -q

The OANDA modules compile and all 5 tests still pass. I’m tightening the profile plumbing now so scalp actually uses its lower 0.25% risk default while day uses 0.5%, then I’ll install the new entry point and verify both profile commands without submitting any orders.

Generating patch (43 lines) in ,



Ran terminal command: python -m pip install -e .

Ran terminal command: python -m pytest -q

Ran terminal command: backtest --profile scalp --ticker EURUSD=X --period 14d

Ran terminal command: backtest --profile day --ticker EURUSD=X --period 60d

Checked , no problems found

Added OANDA support with two profiles:

  • scalp: OANDA M5, 0.25% risk per trade, tighter ATR exits
  • day: OANDA H1, 0.5% risk per trade, wider ATR exits

New files:

  • oanda.py
  • oanda_cli.py
  • profiles.py

Usage:

export OANDA_ACCOUNT_ID="your-account-id"
export OANDA_API_TOKEN="your-token"

oanda-trade --instrument EUR_USD --profile scalp
oanda-trade --instrument EUR_USD --profile day

The command is dry-run by default. Practice execution requires:

oanda-trade --instrument EUR_USD --profile scalp --execute

Live execution requires explicit:

oanda-trade --instrument EUR_USD --profile scalp --execute --live

Backtest comparison:

  • 5-minute scalping: 16 trades, 68.75% win rate, 1.11% drawdown
  • Day trading: 12 trades, 33.33% win rate, 2.93% drawdown

All 5 tests pass. The OANDA command evaluates one completed-candle decision at a time; it does not guarantee profitability or run as an unattended loop.

Made changes.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions