SDK for developing trading strategies in Python for FraQ NetTrade
Project description
FraQ NetTrade Python Abstractions
SDK for developing trading strategies in Python for the FraQ NetTrade platform.
Installation
pip install fraq-nettrade-abstractions
Quick Start
from fraq_nettrade_abstractions import Strategy
class MyStrategy(Strategy):
def on_start(self, context):
"""Initialize your strategy"""
self.sma_fast = context['indicators'].sma(period=10)
self.sma_slow = context['indicators'].sma(period=20)
def on_bar(self, symbol, index):
"""Trading logic - called on each bar"""
if self.sma_fast[index] > self.sma_slow[index]:
return {'action': 'buy', 'volume': 1.0}
elif self.sma_fast[index] < self.sma_slow[index]:
return {'action': 'sell', 'volume': 1.0}
return None
Running Your Strategy
- Save your strategy to a
.pyfile - Open FraQ application
- Load your Python strategy file
- Run backtest
Debugging
from fraq_nettrade_abstractions import Strategy, enable_debugger
class MyStrategy(Strategy):
def on_start(self, context):
enable_debugger() # Wait for VS Code debugger
# Your strategy code with breakpoints
Debug workflow:
- Start FraQ with
--debugflag - Attach VS Code to port 5678
- Set breakpoints in your strategy
- Press Enter in FraQ console
API Reference
Strategy Class
Base class for all trading strategies.
Methods to implement:
on_start(context)- Called once when backtest startson_bar(symbol, index)- Called on each bar (required)on_tick(symbol)- Called on each tick (optional)on_stop()- Called when backtest ends (optional)
Context Object
Passed to on_start():
{
'account': {
'balance': float,
'equity': float,
'margin_used': float,
'margin_available': float
},
'symbols': [
{
'name': str,
'bid': float,
'ask': float,
}
],
'indicators': IndicatorFactory
}
Symbol Object
Passed to on_bar() and on_tick():
{
'name': 'EURUSD',
'bid': 1.0850,
'ask': 1.0852,
'spread': 0.0002,
'close': 1.0851,
'bars': [
{
'open': 1.0840,
'high': 1.0855,
'low': 1.0835,
'close': 1.0850,
'volume': 1000.0,
'time': '2024-01-01T00:00:00'
}
]
}
Trade Signals
Return from on_bar() or on_tick():
# Buy signal
{'action': 'buy', 'volume': 1.0}
# Sell signal
{'action': 'sell', 'volume': 1.0}
# Close all positions
{'action': 'close', 'volume': 0}
# No action
None
Built-in Indicators
Access via context['indicators'] in on_start():
sma(period)- Simple Moving Averageema(period)- Exponential Moving Averagersi(period)- Relative Strength Indexmacd(fast, slow, signal)- MACDbollinger(period, stddev)- Bollinger Bands
Examples
See the examples directory for complete strategy examples.
License
MIT License - see LICENSE file for details
Support
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fraq_nettrade_abstractions-0.1.0.tar.gz.
File metadata
- Download URL: fraq_nettrade_abstractions-0.1.0.tar.gz
- Upload date:
- Size: 3.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68f242cc63e7705885fa31b87ec4f85a8b8bd7d8a3177bfe45e125cfc8d26242
|
|
| MD5 |
0fabea7bf5f61aa06eff70c132fe6948
|
|
| BLAKE2b-256 |
4ef47086f58a29e3947cad77bef3dc66b5d898bf59802bed3010692f207015a5
|
File details
Details for the file fraq_nettrade_abstractions-0.1.0-py3-none-any.whl.
File metadata
- Download URL: fraq_nettrade_abstractions-0.1.0-py3-none-any.whl
- Upload date:
- Size: 2.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a37d7012af464b3be8b21d85c7929f41e32668502681730cb3c789a60770afdc
|
|
| MD5 |
bc63f90768bfb6261f2ad80f42f598ff
|
|
| BLAKE2b-256 |
ad9b61704362930787f7daa5536056b3e326f4f7300c6a5702d48e7e18818abd
|