Spezifikation
I want you to help me convert my pine script strategy to mql5 with 100% matching and i need the work in 3 days, i could not upload the file so i copy and pate the code below, also like i said earlier pinescript to mql5 must be 100% matching, my fixed budget is $30
//@version=5
// calc_on_every_tick=false és process_orders_on_close=false:
// A script csak zárt gyertyákon fut le, és a megbízást a következő gyertya nyitóárán teljesíti (Valós viselkedés)
strategy("Combined: Squeeze & Gold [100% NO LOOKAHEAD]", overlay=true, initial_capital=10000, currency=currency.USD, pyramiding=5, calc_on_every_tick=false, process_orders_on_close=false)
// ==============================================================================
// 1. INPUTOK
// ==============================================================================
grp_sqz = "STRAT 1: Volatility Squeeze"
sqz_enable = input.bool(true, "Squeeze Stratégia Engedélyezése", group=grp_sqz)
sqz_risk_pct = input.float(2.5, "Fix Kockázat / Trade (%)", minval=0.1, group=grp_sqz) / 100
sqz_bb_len = input.int(20, "BB Hossz", group=grp_sqz)
sqz_bb_mult = input.float(2.0, "BB Szórás", group=grp_sqz)
sqz_atr_len = input.int(14, "ATR Hossz", group=grp_sqz)
sqz_lookback = input.int(100, "Squeeze Visszatekintés", group=grp_sqz)
sqz_trend_tf = input.timeframe("D", "Trend EMA Idősík", group=grp_sqz)
sqz_trend_len = input.int(50, "Trend EMA Hossz", group=grp_sqz)
grp_gold = "STRAT 2: Gold Momentum"
gold_enable = input.bool(true, "Gold Stratégia Engedélyezése", group=grp_gold)
gold_risk_pct = input.float(0.75, "Fix Kockázat / Trade (%)", minval=0.1, step=0.05, group=grp_gold) / 100
gold_ema_fast = input.int(50, "Gyors EMA", group=grp_gold)
gold_ema_slow = input.int(200, "Lassú EMA", group=grp_gold)
gold_atr_len = input.int(14, "ATR Hossz", group=grp_gold)
gold_rsi_len = input.int(14, "RSI Hossz", group=grp_gold)
gold_stop_mult = input.float(2.0, "Kezdő Stop (ATR szorzó)", group=grp_gold)
gold_trail_mult = input.float(3.0, "Csúszó Stop (ATR szorzó)", group=grp_gold)
grp_time = "STRAT 2: Időzítés (New York Time)"
session_start = input.int(3, "Session Kezdete (Óra)", group=grp_time)
session_end = input.int(12, "Session Vége (Óra)", group=grp_time)
news_start = input.int(8, "Hír Blackout Kezdete (Óra)", group=grp_time)
news_end = input.int(10, "Hír Blackout Vége (Óra)", group=grp_time)
// ==============================================================================
// 3. INDIKÁTOROK (CSAK ZÁRT ADATOKRA)
// ==============================================================================
// 1. HTF EMA: [1] és lookahead_on a jövőbelátás kizárására
daily_ema = request.security(syminfo.tickerid, sqz_trend_tf, ta.ema(close, sqz_trend_len)[1], lookahead=barmerge.lookahead_on)
[sqz_middle, sqz_upper, sqz_lower] = ta.bb(close, sqz_bb_len, sqz_bb_mult)
sqz_atr = ta.sma(ta.tr, sqz_atr_len)
sqz_bandwidth = (sqz_upper - sqz_lower) / sqz_middle
sqz_avg_bw = ta.sma(sqz_bandwidth, sqz_lookback)
is_squeezed = sqz_bandwidth < (sqz_avg_bw * 1.1)
gold_ema50 = ta.ema(close, gold_ema_fast)
gold_ema200 = ta.ema(close, gold_ema_slow)
gold_rsi = ta.rsi(close, gold_rsi_len)
gold_atr = ta.sma(ta.tr, gold_atr_len)
ny_hour = request.security(syminfo.tickerid, timeframe.period, hour(time, "America/New_York"))
is_trading_session = ny_hour >= session_start and ny_hour < session_end
is_news_blackout = ny_hour >= news_start and ny_hour < news_end
// ==============================================================================
// 4. ÁLLAPOTKEZELÉS
// ==============================================================================
var float sqz_stop_level_price = na
var float gold_stop_level_price = na
bool active_sqz_trade = strategy.opentrades.entry_id(strategy.opentrades - 1) == "Squeeze Long"
bool active_gold_trade = strategy.opentrades.entry_id(strategy.opentrades - 1) == "Gold Long"
var int sqz_next_entry_time = 0
sqz_cooldown_ok = time >= sqz_next_entry_time
// ==============================================================================
// 5. STRATÉGIA 1: SQUEEZE
// ==============================================================================
sqz_trend_ok = close > daily_ema
sqz_breakout = close > sqz_upper
if sqz_enable and not active_sqz_trade and sqz_cooldown_ok
if sqz_trend_ok and is_squeezed and sqz_breakout
stop_dist = sqz_atr * 2.5
if stop_dist > 0
// Belépési pont számítása a ZÁRT ár alapján (következő nyitóár közelítése)
entry_price = close
stop_price = entry_price - stop_dist
risk_per_share = entry_price - stop_price
qty_size = (strategy.equity * sqz_risk_pct) / risk_per_share
strategy.entry("Squeeze Long", strategy.long, qty=qty_size)
strategy.exit("Exit Sqz", "Squeeze Long", stop=stop_price, comment="Sqz SL")
sqz_stop_level_price := stop_price
// CSÚSZÓ STOP KEZELÉS (Squeeze)
if active_sqz_trade
// NINCS JÖVŐBELÁTÁS: A csúszó stop az előző, már lezárt gyertya maximumához (high[1]) igazodik
new_stop = high[1] - (sqz_atr[1] * 2.5)
if not na(sqz_stop_level_price)
sqz_stop_level_price := math.max(sqz_stop_level_price, new_stop)
strategy.exit("Exit Sqz", "Squeeze Long", stop=sqz_stop_level_price, comment="Sqz Trail")
// Zárás indikátor alapján
if close < daily_ema
strategy.close("Squeeze Long", comment="Sqz EMA Exit")
sqz_next_entry_time := time + (12 * 60 * 60 * 1000)
// ==============================================================================
// 6. STRATÉGIA 2: GOLD
// ==============================================================================
gold_cond = is_trading_session and not is_news_blackout and close > gold_ema200 and gold_ema50 > gold_ema200 and gold_rsi < 70
if gold_enable and not active_gold_trade
if gold_cond
dist_to_stop = gold_atr * gold_stop_mult
if dist_to_stop > 0
entry_price = close
stop_price = entry_price - dist_to_stop
pos_size = (strategy.equity * gold_risk_pct) / dist_to_stop
strategy.entry("Gold Long", strategy.long, qty=pos_size)
strategy.exit("Exit Gold", "Gold Long", stop=stop_price, comment="Gold SL")
gold_stop_level_price := stop_price
// CSÚSZÓ STOP KEZELÉS (Gold)
if active_gold_trade
// NINCS JÖVŐBELÁTÁS: A csúszó stop az előző, már lezárt gyertya maximumához (high[1]) igazodik
new_trail = high[1] - (gold_atr[1] * gold_trail_mult)
if na(gold_stop_level_price)
gold_stop_level_price := strategy.position_avg_price - (gold_atr * gold_stop_mult)
gold_stop_level_price := math.max(gold_stop_level_price, new_trail)
strategy.exit("Exit Gold", "Gold Long", stop=gold_stop_level_price, comment="Gold Trail")
if close < gold_ema200
strategy.close("Gold Long", comment="Gold: Trend Broken")
else if gold_rsi > 85
strategy.close("Gold Long", comment="Gold: RSI Hot")
// ==============================================================================
// 7. VIZUALIZÁCIÓ
// ==============================================================================
plot(gold_enable ? gold_ema50 : na, "Gold EMA 50", color=color.yellow)
plot(gold_enable ? gold_ema200 : na, "Gold EMA 200", color=color.white)
plot(active_gold_trade ? gold_stop_level_price : na, "Gold Hard Stop", color=color.red, style=plot.style_linebr)
plot(active_sqz_trade ? sqz_stop_level_price : na, "Sqz Hard Stop", color=color.blue, style=plot.style_linebr)