1# OMEGA GS — RawCore Trading
2# XAUUSD 5M EMA Cross System · v2.4
3
4import MetaTrader5 as mt5
5import pandas as pd
6from datetime import datetime
7
8# ── CONFIG ───────────────────────────
9SYMBOL = "XAUUSDs" # Tradequo symbol
10RISK_PCT = 0.01 # 1% per trade
11EMA_FAST = 9
12EMA_SLOW = 21
13ATR_PERIOD = 14
14ATR_MIN = 0.8 # min volatility
15PIP_SIZE = 0.10 # Tradequo gold pip
16FILL_MODE = mt5.ORDER_FILLING_RETURN
17
18# ── SESSION FILTER ───────────────────
19def is_valid_session():
20 hour = datetime.utcnow().hour
21 return 7 <= hour <= 16 # London + NY
22
23# ── EMA CROSS DETECTION ──────────────
24def check_ema_cross(df):
25 df['ema_fast'] = df['close'].ewm(span=EMA_FAST).mean()
26 df['ema_slow'] = df['close'].ewm(span=EMA_SLOW).mean()
27 cross_up = (df['ema_fast'].iloc[-2] < df['ema_slow'].iloc[-2]) \
28 and (df['ema_fast'].iloc[-1] > df['ema_slow'].iloc[-1])
29 return cross_up
30
31# ── MAIN ENTRY LOGIC ─────────────────
32def check_entry():
33 if not is_valid_session(): return
34 df = get_candles(SYMBOL, mt5.TIMEFRAME_M5, 50)
35 atr = calc_atr(df, ATR_PERIOD)
36 if atr < ATR_MIN: return # skip low vol
37 if check_ema_cross(df):
38 place_order(direction="BUY", atr=atr)