algorembrant's picture
Add files using upload-large-folder tool
66a32a6 verified
import MetaTrader5 as mt5
import pandas as pd
<<<<<<< HEAD
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
=======
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()
import MetaTrader5 as mt5
import pandas as pd
# -----------------------------
# Title
# -----------------------------
title = "For needed_tick_points, needed_pips_points, and needed_symbol_price_points data is about: {How much 'distance needed' equivalent of 1 unit risk (account's money as unit. It's 1 USC (cent, for cent accounts) or 1 USD (dollar, for dollar accounts) in Exness Broker) if using a 0.01 volume lot size.}"
# -----------------------------
# Initialize MT5
# -----------------------------
if not mt5.initialize():
raise RuntimeError(f"MT5 init failed: {mt5.last_error()}")
account = mt5.account_info()
if account is None or "Exness" not in account.company:
mt5.shutdown()
raise RuntimeError("MT5 is not connected to Exness")
# -----------------------------
# Pre-calculated needed distances
# -----------------------------
symbols_needed = {
"symbol": [
"BTCUSDc","AUDCADc","AUDCHFc","AUDJPYc","AUDNZDc","AUDUSDc","CADJPYc","CHFJPYc",
"EURAUDc","EURCADc","EURCHFc","EURGBPc","EURJPYc","EURNZDc","EURUSDc","GBPAUDc",
"GBPCADc","GBPCHFc","GBPJPYc","GBPNZDc","GBPUSDc","NZDJPYc","NZDUSDc","USDCADc",
"USDCHFc","USDHKDc","USDJPYc","XAGUSDc","XAUUSDc"
],
"needed_tick_points": [
10000,138,80,156,173,100,156,156,151,138,80,75,156,174,100,151,138,80,156,174,100,156,100,138,80,778,156,20,1000
],
"needed_pips_points": [
1000,13.8,8,15.6,17.3,10,15.6,15.6,15.1,13.8,8,7.5,15.6,17.4,10,15.1,13.8,8,15.6,17.4,10,15.6,10,13.8,8,77.8,15.6,2,100
],
"needed_symbol_price_points": [
100,0.00138,0.0008,0.156,0.00173,0.001,0.156,0.156,0.00151,0.00138,0.0008,0.00075,0.156,0.00174,0.001,0.00151,
0.00138,0.0008,0.156,0.00174,0.001,0.156,0.001,0.00138,0.0008,0.00778,0.156,0.02,1
]
}
df_needed = pd.DataFrame(symbols_needed)
# -----------------------------
# Add live MT5 data including requested columns
# -----------------------------
live_data = []
for i, sym in enumerate(df_needed["symbol"]):
info = mt5.symbol_info(sym)
tick = mt5.symbol_info_tick(sym)
if info is None or tick is None:
live_data.append({
"bid": None,
"ask": None,
"spread_tick_points": None,
"spread_price_points": None,
"spread_pips_points": None,
"digits": None,
"volume_min": None,
"volume_max": None,
"volume_step": None,
"swap_long": None,
"swap_short": None,
"needed_symbol_price_points": None,
"price_difference": None
})
continue
digits = info.digits
bid = tick.bid
ask = tick.ask
spread_tick = info.spread if info.spread is not None else (ask - bid if ask and bid else None)
spread_price = (ask - bid) if ask and bid else None
# Calculate spread in pips points
pip_value = df_needed.loc[i, "needed_symbol_price_points"] / df_needed.loc[i, "needed_pips_points"]
spread_pips_points = spread_price / pip_value if spread_price is not None else None
# Format all price-related values based on digits
bid_fmt = f"{bid:.{digits}f}" if bid is not None else None
ask_fmt = f"{ask:.{digits}f}" if ask is not None else None
spread_price_fmt = f"{spread_price:.{digits}f}" if spread_price is not None else None
needed_symbol_price_fmt = f"{df_needed.loc[i, 'needed_symbol_price_points']:.{digits}f}"
# Calculate price_difference
price_difference = spread_price / df_needed.loc[i, "needed_symbol_price_points"] if spread_price is not None else None
live_data.append({
"bid": bid_fmt,
"ask": ask_fmt,
"spread_tick_points": spread_tick,
"spread_pips_points": spread_pips_points,
"spread_price_points": spread_price_fmt,
"digits": digits,
"volume_min": info.volume_min,
"volume_max": info.volume_max,
"volume_step": info.volume_step,
"swap_long": info.swap_long,
"swap_short": info.swap_short,
"needed_symbol_price_points": needed_symbol_price_fmt,
"price_difference": price_difference
})
df_live = pd.DataFrame(live_data)
# -----------------------------
# Combine pre-calculated distances with live data
# -----------------------------
df = pd.concat([df_needed.drop(columns="needed_symbol_price_points"), df_live], axis=1)
# -----------------------------
# Rearrange columns
# -----------------------------
column_order = [
"symbol",
"needed_tick_points",
"needed_pips_points",
"needed_symbol_price_points",
"bid",
"ask",
"spread_tick_points",
"spread_pips_points",
"spread_price_points",
"price_difference",
"digits",
"volume_min",
"volume_max",
"volume_step",
"swap_long",
"swap_short"
]
df = df[column_order]
pd.set_option("display.max_columns", None)
pd.set_option("display.width", 300)
# -----------------------------
# Print everything
# -----------------------------
print(title)
print(df)
# -----------------------------
# Shutdown MT5
# -----------------------------
mt5.shutdown()