Files
gizerbridge/tralgo_api.py
T

58 lines
2.0 KiB
Python

import requests
TRALGO_URL = "https://tralgo.app/wp-admin/admin-ajax.php"
_HEADERS = {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Origin": "https://tralgo.app",
"Referer": "https://tralgo.app/analytics-logbuch/",
}
def build_session(cookies):
"""Create a requests.Session with tralgo.app cookies set."""
session = requests.Session()
for name, value in cookies.items():
session.cookies.set(name, value, domain="tralgo.app")
return session
def send_trade(session, trade, api_key):
"""POST trade to Tralgo. Raises on HTTP error. Returns parsed JSON."""
payload = {
"action": "insert_new_trade",
"tradingaccount": trade["account"],
"instrument": trade["instrument"],
"type": trade["direction"],
"lots": trade["lots"],
"entry_price": trade["entry_price"],
"exit_price": trade["exit_price"],
"entry_datetime": trade["entry_datetime"],
"exit_datetime": trade["exit_datetime"],
"fees": 0,
"pnl": trade["pnl"],
"net_pnl": trade["pnl"],
"pnl_ticks": trade["pnl_ticks"],
"tp_price": 0, "sl_price": 0,
"tp_ticks": 0, "tp_usd": 0,
"sl_ticks": 0, "sl_usd": 0,
"setup": "",
"entry_specifications": "",
"exit_specifications": "",
"mistakes": "",
"market_conditions": "",
"path": "",
"trade_rating": 0,
"review_status": "Unreviewed",
"journal": "",
"executions": trade["executions"],
"transfer_token": api_key,
}
resp = session.post(TRALGO_URL, data=payload, headers=_HEADERS, timeout=15)
resp.raise_for_status()
try:
return resp.json()
except Exception:
return resp.text