Skip to content

Commit a531435

Browse files
committed
Add EMACrossLongOnly TSLA.NYSE trades example
1 parent c7b018a commit a531435

File tree

2 files changed

+364
-25
lines changed

2 files changed

+364
-25
lines changed

examples/backtest/databento_ema_cross_tsla_trade_ticks.py renamed to examples/backtest/databento_ema_cross_long_only_tsla_trades.py

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@
2323
from nautilus_trader.backtest.engine import BacktestEngine
2424
from nautilus_trader.backtest.engine import BacktestEngineConfig
2525
from nautilus_trader.config import LoggingConfig
26-
from nautilus_trader.examples.algorithms.twap import TWAPExecAlgorithm
27-
from nautilus_trader.examples.strategies.ema_cross_twap import EMACrossTWAP
28-
from nautilus_trader.examples.strategies.ema_cross_twap import EMACrossTWAPConfig
26+
from nautilus_trader.examples.strategies.ema_cross_long_only import EMACrossLongOnly
27+
from nautilus_trader.examples.strategies.ema_cross_long_only import EMACrossLongOnlyConfig
2928
from nautilus_trader.model.currencies import USD
3029
from nautilus_trader.model.data import BarType
3130
from nautilus_trader.model.enums import AccountType
@@ -51,46 +50,48 @@
5150
engine = BacktestEngine(config=config)
5251

5352
# Add a trading venue (multiple venues possible)
54-
NASDAQ = Venue("XNAS")
53+
NYSE = Venue("NYSE")
5554
engine.add_venue(
56-
venue=NASDAQ,
55+
venue=NYSE,
5756
oms_type=OmsType.NETTING,
5857
account_type=AccountType.CASH,
5958
base_currency=USD,
60-
starting_balances=[Money(10_000_000.0, USD)],
59+
starting_balances=[Money(1_000_000.0, USD)],
6160
)
6261

6362
# Add instruments
64-
TSLA_NASDAQ = TestInstrumentProvider.equity(symbol="TSLA")
65-
engine.add_instrument(TSLA_NASDAQ)
63+
TSLA_NYSE = TestInstrumentProvider.equity(symbol="TSLA", venue="NYSE")
64+
engine.add_instrument(TSLA_NYSE)
6665

6766
# Add data
6867
loader = DatabentoDataLoader()
69-
trades = loader.from_dbn_file(
70-
path=TEST_DATA_DIR / "databento" / "temp" / "tsla-xnas-20240107-20240206.trades.dbn.zst",
71-
instrument_id=TSLA_NASDAQ.id,
72-
)
73-
engine.add_data(trades)
68+
69+
filenames = [
70+
"tsla-dbeq-basic-trades-2024-01.dbn.zst",
71+
"tsla-dbeq-basic-trades-2024-02.dbn.zst",
72+
"tsla-dbeq-basic-trades-2024-03.dbn.zst",
73+
]
74+
75+
for filename in filenames:
76+
trades = loader.from_dbn_file(
77+
path=TEST_DATA_DIR / "databento" / "temp" / filename,
78+
instrument_id=TSLA_NYSE.id,
79+
)
80+
engine.add_data(trades)
7481

7582
# Configure your strategy
76-
config = EMACrossTWAPConfig(
77-
instrument_id=TSLA_NASDAQ.id,
78-
bar_type=BarType.from_str("TSLA.XNAS-5-MINUTE-LAST-INTERNAL"),
79-
trade_size=Decimal(100),
83+
config = EMACrossLongOnlyConfig(
84+
instrument_id=TSLA_NYSE.id,
85+
bar_type=BarType.from_str("TSLA.NYSE-1-MINUTE-LAST-INTERNAL"),
86+
trade_size=Decimal(500),
8087
fast_ema_period=10,
8188
slow_ema_period=20,
82-
twap_horizon_secs=10.0,
83-
twap_interval_secs=2.5,
8489
)
8590

8691
# Instantiate and add your strategy
87-
strategy = EMACrossTWAP(config=config)
92+
strategy = EMACrossLongOnly(config=config)
8893
engine.add_strategy(strategy=strategy)
8994

90-
# Instantiate and add your execution algorithm
91-
exec_algorithm = TWAPExecAlgorithm()
92-
engine.add_exec_algorithm(exec_algorithm)
93-
9495
time.sleep(0.1)
9596
input("Press Enter to continue...")
9697

@@ -106,7 +107,7 @@
106107
"display.width",
107108
300,
108109
):
109-
print(engine.trader.generate_account_report(NASDAQ))
110+
print(engine.trader.generate_account_report(NYSE))
110111
print(engine.trader.generate_order_fills_report())
111112
print(engine.trader.generate_positions_report())
112113

0 commit comments

Comments
 (0)