Tick_Forge/tools/tf_guard_check.py
24 라인
1.4 KiB
Python
"""Developer: load the Market build in the Strategy Tester (what the Market validator does) and print its journal lines.
usage: tf_guard_check.py SYMBOL PERIOD FROM TO e.g. EURUSD.pro H1 2026.10.01 2026.10.10
Expect the one line 'does nothing in the Strategy Tester' and no error/failed lines. Testing install only.
"""
import os, subprocess, sys, time, glob
from pathlib import Path
D = Path(os.environ.get("TF_DATA", r"C:\Users\gebruiker\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075"))
EXE = os.environ.get("TF_EXE", r"C:\Program Files\MetaTrader 5\terminal64.exe")
sym, per, fr, to = sys.argv[1:5]
ini = Path(os.environ["TEMP"]) / "tf_guard.ini"
ini.write_bytes(b"\xff\xfe" + (
"[Tester]\nExpert=Tick_Forge_Market\\Tick_Forge\nSymbol=%s\nPeriod=%s\nModel=1\nFromDate=%s\nToDate=%s\nForwardMode=0\n"
"Deposit=10000\nCurrency=USD\nLeverage=100\nOptimization=0\nVisual=0\nReport=tf_guard_report\nReplaceReport=1\nShutdownTerminal=1\n"
% (sym, per, fr, to)).replace("\n", "\r\n").encode("utf-16-le"))
t0 = time.time()
subprocess.run([EXE, "/config:%s" % ini], timeout=600)
logs = sorted(glob.glob(str(D / "Tester" / "logs" / "*.log")), key=os.path.getmtime)
if not logs:
sys.exit("no tester log")
for l in Path(logs[-1]).read_bytes().decode("utf-16", "ignore").splitlines():
if "Tick Forge" in l or "rror" in l or "failed" in l:
print(l.encode("ascii", "ignore").decode()[:220])