51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
import json
|
|
import os
|
|
import stat
|
|
|
|
CONFIG_PATH = os.path.expanduser("~/.gizerbridge_config.json")
|
|
SENT_PATH = os.path.expanduser("~/.gizerbridge_sent.json")
|
|
|
|
DEFAULT_INSTRUMENTS = {
|
|
"MNQ": {"tick_size": 0.25, "tick_value": 0.50, "enabled": True},
|
|
"NQ": {"tick_size": 0.25, "tick_value": 5.00, "enabled": False},
|
|
"ES": {"tick_size": 0.25, "tick_value": 12.50, "enabled": False},
|
|
"MES": {"tick_size": 0.25, "tick_value": 1.25, "enabled": False},
|
|
}
|
|
|
|
DEFAULT_CONFIG = {
|
|
"api_key": "",
|
|
"dtc_host": "localhost",
|
|
"dtc_port": 11099,
|
|
"accounts": [],
|
|
"instruments": DEFAULT_INSTRUMENTS,
|
|
}
|
|
|
|
|
|
def load_config():
|
|
if not os.path.exists(CONFIG_PATH):
|
|
return dict(DEFAULT_CONFIG)
|
|
with open(CONFIG_PATH, encoding="utf-8") as f:
|
|
cfg = json.load(f)
|
|
# Merge missing instrument defaults
|
|
for name, defaults in DEFAULT_INSTRUMENTS.items():
|
|
cfg.setdefault("instruments", {}).setdefault(name, defaults)
|
|
return cfg
|
|
|
|
|
|
def save_config(cfg):
|
|
with open(CONFIG_PATH, "w", encoding="utf-8") as f:
|
|
json.dump(cfg, f, indent=2, ensure_ascii=False)
|
|
os.chmod(CONFIG_PATH, stat.S_IRUSR | stat.S_IWUSR)
|
|
|
|
|
|
def load_sent():
|
|
if not os.path.exists(SENT_PATH):
|
|
return set()
|
|
with open(SENT_PATH, encoding="utf-8") as f:
|
|
return set(json.load(f))
|
|
|
|
|
|
def save_sent(sent_set):
|
|
with open(SENT_PATH, "w", encoding="utf-8") as f:
|
|
json.dump(list(sent_set), f)
|