Metadata-Version: 2.3
Name: softrader
Version: 0.1.5
Summary: All-in-one trading broker software
Author: Jose_Henrique_V
Requires-Python: >=3.11
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: MetaTrader5 (==5.0.4874)
Requires-Dist: alpaca-py (==0.39.1)
Requires-Dist: ib_insync (==0.9.86)
Description-Content-Type: text/markdown

# Ecosystem

⭐ Portal:     https://bit.ly/finance_analytics  
📊 Blog:       https://slashpage.com/jh-analytics  

📈 Softrader:  https://pypi.org/project/softrader

🐍 Python:     https://github.com/jhvissotto/Project_Finance_Api_Python  
🐍 Pypi:       https://pypi.org/project/jh-finance-api  

🟦 TScript:    https://github.com/jhvissotto/Project_Finance_Api_TScript  
🟦 NPM:        https://www.npmjs.com/package/finance-analytics-api  

🧮 PyHelpers:  https://github.com/jhvissotto/Library_Python_Helpers  

🔌 Server:     https://bit.ly/jh_finance_api  
🔌 Swagger:    https://bit.ly/jh_finance_api_swagger  



# Library

```py
!pip install softrader
```

```py
from softrader import nan
import softrader as st
```


# Connect

```py
client_ib  = st.connect('IBROKER',    ID=None,   SECRET=None,       PROVIDER=4002)
client_ap  = st.connect('ALPACA',     ID='abcd', SECRET='xxyyzzww')
client_mt5 = st.connect('METATRADER', ID=123456, SECRET='password', PROVIDER='brokername')
```


```py
st.infer_platform(client_ib)  == 'IBROKER'
st.infer_platform(client_ap)  == 'ALPACA'
st.infer_platform(client_mt5) == 'METATRADER'
```


# Open Position
Send order to any broker with no more configurations

```py
try: 
    res = st.send_open(client_ib, symbol='MSFT', quant=10, limit=nan, tp=nan, sl=nan, tif='GTC')
    print(res)

except Exception as err:
    print(err)
```


# Close All Positions

```py
res_close, res_cancel = st.close_all_market_positions(client_ib,  cancel_orders=True, on_error='append')
alpaca_response       = st.close_all_market_positions(client_ap,  cancel_orders=True, on_error='pass')
res_close, res_cancel = st.close_all_market_positions(client_mt5, cancel_orders=True, on_error='raise')
```
