605faf5310
Add cluster audit pipeline, united EA updates, brochure generators, and publication hygiene (gitignore, MT5 path desensitization, pre-upload scan). Remove tracked reports, models, and binary artifacts from the repo. Co-authored-by: Cursor <cursoragent@cursor.com>
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
"""Quick solo scan for low-margin stocks using NVDA-style RSI params."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
|
|
|
from cluster_audit.united_mt5_manifest import ALL_ENABLE_KEYS, HIGH_MARGIN_STOCK_ENABLES
|
|
from cluster_audit.united_mt5_runner import BASE_SET, deploy_united, mt5_context, patch_set, run_backtest
|
|
import cluster_audit.united_mt5_runner as runner
|
|
|
|
SYMBOLS = ("SNAP.NYS", "F.NYS", "SOFI.NAS", "PFE.NYS", "AAL.NAS", "NVDA.NAS", "BAC.NYS", "WBD.NAS")
|
|
|
|
NVDA_PARAMS = {
|
|
"RS_F_Symbol": "",
|
|
"RS_F_TimeFrame": 15,
|
|
"RS_F_RSI_Period": 8,
|
|
"RS_F_RSI_Overbought": 36,
|
|
"RS_F_RSI_Oversold": 38,
|
|
"RS_F_RSI_Target_Buy": 90,
|
|
"RS_F_RSI_Target_Sell": 70,
|
|
"RS_F_BarsToWait": 5,
|
|
"LOT_RS_F": 10,
|
|
}
|
|
|
|
|
|
def main() -> None:
|
|
ctx = mt5_context()
|
|
deploy_united(ctx["data"], ctx["mt5_path"])
|
|
print(f"{'symbol':14} {'trades':>6} {'PF':>6} {'net':>10}")
|
|
for sym in SYMBOLS:
|
|
o = {k: False for k in ALL_ENABLE_KEYS}
|
|
o["EnableRSIScalpingF"] = True
|
|
for k in HIGH_MARGIN_STOCK_ENABLES:
|
|
o[k] = False
|
|
o["GAP_Enable"] = False
|
|
o.update(NVDA_PARAMS)
|
|
o["RS_F_Symbol"] = sym
|
|
body = patch_set(BASE_SET, o)
|
|
report = f"scan_{sym.replace('.', '_')}"
|
|
old = runner.TEST_SYMBOL
|
|
runner.TEST_SYMBOL = sym
|
|
m = run_backtest(
|
|
ctx["data"], ctx["mt5_path"], ctx["login"], ctx["server"],
|
|
body, f"{report}.set", report,
|
|
)
|
|
runner.TEST_SYMBOL = old
|
|
print(
|
|
f"{sym:14} {int(m.get('total_trades') or 0):6} "
|
|
f"{float(m.get('profit_factor') or 0):6.2f} {float(m.get('net_profit') or 0):10.2f}"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|