⬡ API · कोड के साथ · 14 मिनट पढ़ें

Python के साथ MetaTrader 5 API: ब्राज़ील का B3 और Forex ऑटोमेट करें।

वह ब्रिज जो Python के लचीलेपन को MT5 टर्मिनल से जोड़ता है। ब्राज़ीलियन एक्सचेंज B3 से डेटा खींचें, अपनी पसंदीदा लाइब्रेरी से सिग्नल कैलकुलेट करें और ऑर्डर भेजें — सब कुछ कोड के ज़रिए। पूरे उदाहरणों के साथ।

RoboTraderIA टीम द्वारा· अपडेट मई 2026· लेवल: इंटरमीडिएट से एडवांस्ड

MQL5 (MetaTrader की अपनी भाषा) दमदार है, लेकिन Python का इकोसिस्टम बेजोड़ है: pandas, numpy, scikit-learn, तैयार इंडिकेटर लाइब्रेरी। ऑफिशियल लाइब्रेरी MetaTrader5 दोनों दुनिया का सबसे अच्छा हिस्सा देती है — सोचने के लिए Python, एग्जीक्यूशन के लिए MT5। और आपके लिए सबसे अहम बात: Python से ब्राज़ील के B3 को ऑटोमेट करने (मिनी इंडेक्स और मिनी डॉलर) का यह सबसे सुलभ तरीका है।

ब्रिज कैसे काम करता है: लाइब्रेरी MetaTrader5 कोई अलग वेब API नहीं है। यह आपकी Python स्क्रिप्ट को इंस्टॉल किए हुए और खुले MT5 टर्मिनल से जोड़ती है, जो Windows पर चल रहा हो। Python कमांड भेजता है, MT5 उन्हें ब्रोकर पर एग्जीक्यूट करता है। MT5 को "इंजन" मानिए और Python को "दिमाग"।

01इंस्टॉलेशन और ज़रूरी चीज़ें

आपको चाहिए: Windows, अपने ब्रोकर का MT5 टर्मिनल इंस्टॉल और लॉग-इन किया हुआ, और Python 3.11+। फिर:

pip install MetaTrader5 pandas

ऑपरेटिंग सिस्टम के बारे में: लाइब्रेरी ऑफिशियली Windows के लिए है, क्योंकि यह MT5 टर्मिनल पर निर्भर करती है। Linux पर Wine के ज़रिए चलाया जा सकता है, या फिर 24/5 चलने वाले बॉट का सबसे आम ठिकाना — Windows VPS। Mac पर वर्चुअल मशीन के ज़रिए। गंभीर ऑटोमेशन के लिए Windows VPS ही सही रास्ता है।

02टर्मिनल से कनेक्ट करना

MT5 खुला हो और आपके अकाउंट में लॉग-इन हो (डेमो अकाउंट इस्तेमाल करें!), तब कनेक्शन शुरू करें:

# conectar.py
import MetaTrader5 as mt5

# खुले MT5 terminal से connection initialize करें
if not mt5.initialize():
    print("Falha ao conectar:", mt5.last_error())
    quit()

# अकाउंट की जानकारी (पक्का करें कि DEMO है)
conta = mt5.account_info()
print(f"Conta: {conta.login} | Saldo: {conta.balance} | Servidor: {conta.server}")

# काम खत्म होने पर connection हमेशा बंद करें
# mt5.shutdown()

अगर आपको कोड से लॉगिन करना है (टर्मिनल में मैन्युअली करने के बजाय), तो initialize में क्रेडेंशियल पास करें:

mt5.initialize(login=12345678, password="sua_senha", server="NomeDoServidor-Demo")

03कैंडल डेटा खींचना (B3 समेत)

यहीं से आपके इंडिकेटर जुड़ते हैं। अपना ब्रोकर जो भी एसेट देता है, उसकी कैंडल खींचें — WIN और WDO भी, अगर वह ब्राज़ील के B3 का एक्सेस देता हो:

# dados.py
import MetaTrader5 as mt5
import pandas as pd
from datetime import datetime

mt5.initialize()

# symbol: जैसे "WIN$N" (मिनी इंडेक्स), "WDO$N" (मिनी डॉलर) या "EURUSD"
# symbol का सही नाम हर ब्रोकर में अलग होता है — Market Watch में देखें
simbolo = "WIN$N"
timeframe = mt5.TIMEFRAME_M5   # M1, M5, M15, H1, आदि।

# आखिरी 500 candles लेता है
rates = mt5.copy_rates_from_pos(simbolo, timeframe, 0, 500)
df = pd.DataFrame(rates)
df["time"] = pd.to_datetime(df["time"], unit="s")
print(df[["time","open","high","low","close","tick_volume"]].tail())

B3 के सिंबल पर एक टिप: सटीक नाम (जैसे: WIN$N, WINFUT, WDO$N) हर ब्रोकर पर अलग होता है। MT5 में Market Watch खोलें, राइट-क्लिक करें → "Show all", और जो नाम दिखे उसे हूबहू कॉपी करें। इस्तेमाल करें mt5.symbol_select(simbolo, True) ताकि पक्का हो जाए कि सिंबल इनेबल है।

04अपने इंडिकेटर से सिग्नल कैलकुलेट करना

यहां Python चमकता है — हमारी गाइड्स में सीखे इंडिकेटर फंक्शन इस्तेमाल करें। MT5 से आया DataFrame सीधे उनमें चला जाता है:

# indicator गाइड्स के functions दोबारा इस्तेमाल करें
from indicadores import calcular_rsi, calcular_macd   # आपके modules

df["rsi"] = calcular_rsi(df["close"])
macd, sinal, hist = calcular_macd(df["close"])

# कंबाइंड सिग्नल का उदाहरण
u = df.iloc[-1]
sinal_compra = (u["rsi"] < 70) and (macd.iloc[-1] > sinal.iloc[-1])

अब तक देखी हर चीज़ के साथ इंटीग्रेशन: हमारी गाइड्स वाले RSI, MACD, ATR के फंक्शन इसी DataFrame पर सीधे चलते हैं। Python इस्तेमाल करने की खूबी यही है: पूरा इकोसिस्टम B3 के लिए उपलब्ध हो जाता है।

05ऑर्डर भेजना

MT5 में ऑर्डर भेजना Binance के मुकाबले ज़्यादा लंबा है, क्योंकि आपको एक विस्तृत "request" बनाना पड़ता है। स्टॉप और टारगेट के साथ मार्केट बाय का उदाहरण:

# executar.py
def comprar(simbolo, lote, stop_pts, alvo_pts):
    info = mt5.symbol_info_tick(simbolo)
    preco = info.ask
    point = mt5.symbol_info(simbolo).point

    request = {
        "action": mt5.TRADE_ACTION_DEAL,
        "symbol": simbolo,
        "volume": lote,
        "type": mt5.ORDER_TYPE_BUY,
        "price": preco,
        "sl": preco - stop_pts * point,   # स्टॉप लॉस
        "tp": preco + alvo_pts * point,   # टेक प्रॉफिट
        "deviation": 20,                   # स्वीकार्य slippage
        "magic": 123456,                  # आपके बॉट की id
        "type_filling": mt5.ORDER_FILLING_FOK,
    }
    resultado = mt5.order_send(request)
    if resultado.retcode != mt5.TRADE_RETCODE_DONE:
        print("Erro na ordem:", resultado.retcode, resultado.comment)
    return resultado

जहां शुरुआती अटक जाते हैं: यहाँ type_filling (एग्जीक्यूशन मोड) उसी से मैच होना चाहिए जो एसेट स्वीकार करता है — FOK, IOC या RETURN। अगर ऑर्डर "filling" एरर के साथ फेल हो, तो बाकी मोड आज़माएं। वहीं magic number आपके बॉट के ऑर्डर की पहचान करता है (सिर्फ अपने ऑर्डर मैनेज करने के लिए काम का)।

बॉट का स्ट्रक्चर समझ आ गया?

बॉट आर्किटेक्चर की पूरी गाइड देखें — हमारे Binance ट्यूटोरियल वाला लॉजिक MT5 पर भी वैसा ही लागू होता है।

आर्किटेक्चर देखें →

06पोज़िशन मैनेज करना

पूरा बॉट बनाने के लिए आपको पोज़िशन देखनी और बंद करनी आनी चाहिए:

# अपने बॉट की खुली positions देखें (magic से)
posicoes = mt5.positions_get(symbol="WIN$N")
for p in posicoes:
    if p.magic == 123456:
        print(f"Posição {p.ticket}: lucro {p.profit}")

# एक position बंद करना
def fechar(posicao):
    tick = mt5.symbol_info_tick(posicao.symbol)
    request = {
        "action": mt5.TRADE_ACTION_DEAL,
        "symbol": posicao.symbol,
        "volume": posicao.volume,
        "type": mt5.ORDER_TYPE_SELL if posicao.type == 0 else mt5.ORDER_TYPE_BUY,
        "position": posicao.ticket,
        "price": tick.bid if posicao.type == 0 else tick.ask,
        "deviation": 20,
        "type_filling": mt5.ORDER_FILLING_FOK,
    }
    return mt5.order_send(request)

07बॉट का लूप

सब कुछ जोड़ने पर, MT5 बॉट का ढांचा कुछ ऐसा बनता है:

import time

mt5.initialize()
try:
    while True:
        df = puxar_candles("WIN$N", mt5.TIMEFRAME_M5)
        sinal = calcular_sinal(df)              # आपकी स्ट्रैटेजी
        atr = calcular_atr(df).iloc[-1]        # डायनामिक स्टॉप

        if sinal == "COMPRA" and not tem_posicao():
            lote = dimensionar(atr)             # रिस्क मैनेजमेंट
            comprar("WIN$N", lote, stop_pts=2*atr, alvo_pts=4*atr)

        time.sleep(60)                       # हर मिनट चेक करता है
except Exception as e:
    print("Erro:", e)
finally:
    mt5.shutdown()

असली पैसे से पहले: हफ्तों तक डेमो अकाउंट पर चलाएं। पक्का करें कि सिंबल, type_filling और लॉट कैलकुलेशन आपके एसेट के लिए सही हैं। वॉल्यूम या पॉइंट की एक गलती गलत साइज़ का ऑर्डर भेज सकती है। टेस्ट, टेस्ट, टेस्ट — और उसके बाद ही रियल अकाउंट, वह भी मिनिमम लॉट के साथ।

08अक्सर पूछे जाने वाले सवाल

क्या Python से B3 को ऑटोमेट किया जा सकता है?

हां। ऑफिशियल MetaTrader5 लाइब्रेरी MT5 टर्मिनल से कनेक्ट होती है, और अगर आपका ब्रोकर B3 (WIN, WDO) के एक्सेस के साथ MT5 देता है, तो आप Python से डेटा खींच सकते हैं और ऑर्डर भेज सकते हैं। ब्राज़ीलियन मार्केट को Python से ऑटोमेट करने का यह सबसे सुलभ तरीका है।

क्या MT5 का इंस्टॉल होना ज़रूरी है?

हां। यह लाइब्रेरी कोई वेब API नहीं है — यह Windows पर इंस्टॉल किए हुए और खुले MT5 टर्मिनल तक का ब्रिज है। Python कमांड भेजता है, MT5 उन्हें ब्रोकर पर एग्जीक्यूट करता है।

क्या यह Linux या Mac पर चलता है?

ऑफिशियली सिर्फ Windows पर। Linux पर Wine से या Windows VPS पर चलाया जा सकता है (24/5 चलने वाले बॉट के लिए सबसे आम)। Mac पर वर्चुअल मशीन से। गंभीर ऑपरेशन के लिए Windows VPS।

सीधे MQL5 इस्तेमाल करने से क्या फर्क है?

MQL5 MT5 के अंदर चलता है और सिर्फ एग्जीक्यूशन के लिए ज़्यादा इंटीग्रेटेड है। API के ज़रिए Python इकोसिस्टम में आगे है (pandas, ML, लाइब्रेरी)। कई लोग रिसर्च और सिग्नल के लिए Python और क्रिटिकल एग्जीक्यूशन के लिए MQL5 इस्तेमाल करते हैं। शुरुआत के लिए Python ज़्यादा आसान है।

WIN सिंबल का नाम काम नहीं कर रहा, क्यों?

सटीक नाम हर ब्रोकर पर अलग होता है (WIN$N, WINFUT, WIN$, वगैरह)। MT5 में Market Watch खोलें, सारे सिंबल दिखाएं और सटीक नाम कॉपी करें। इनेबल करने के लिए mt5.symbol_select(name, True) इस्तेमाल करें।

यह भी पढ़ें

🎁 फ्री ट्रेडिंग बॉट पाएं (Quotex, Deriv और IQ Option API के साथ)

ओपन सोर्स बॉट + तैयार API कोड। ChatGPT/Claude से बात करके आप इसे एडिट करते हैं — बिना प्रोग्रामिंग के। फ्री, कोई स्पैम नहीं।

👉 तैयार बॉट अभी चाहिए? botbinaryoptions.com पर जाएं →