एक ही MT5 कैंडल अलग-अलग ब्रोकर अकाउंट्स पर अलग क्यों दिख सकती है
MT5 कैंडल्स, SMA वैल्यू, इंडिकेटर सिग्नल, और EA का व्यवहार अलग-अलग ब्रोकर अकाउंट्स में अलग हो सकता है, भले ही सिंबल का नाम एक जैसा दिखे।
MT5 कैंडल्स अलग क्यों हो सकती हैं
एक कैंडल हमेशा सार्वभौमिक मार्केट डेटा नहीं होती
जब लोग MetaTrader 5 में पहली बार ट्रेडिंग बॉट्स या इंडिकेटर्स बनाना शुरू करते हैं, तो यह मान लेना आसान होता है कि कैंडल मार्केट डेटा का एक सार्वभौमिक हिस्सा है।
उदाहरण के लिए, आप सोच सकते हैं:
"6 मई 2026 को 20:00 की H1 कैंडल हर जगह एक जैसी होनी चाहिए।"
लेकिन व्यवहार में, यह हमेशा सच नहीं होता।
आपके पास अलग-अलग देशों में दो MT5 टर्मिनल चल रहे हो सकते हैं, और दोनों एक ही कैंडल्स दिखा रहे हों। फिर आप एक और अकाउंट खोलते हैं जो दिखने में उसी ब्रोकर और उसी सिंबल जैसा लगता है, और अचानक कैंडल का ओपन, क्लोज, SMA वैल्यू, या इंडिकेटर सिग्नल थोड़ा अलग हो जाता है।
यह लेख बताता है कि ऐसा क्यों होता है।
गलतफहमी: MT5 को पूरी बनी हुई कैंडल्स मिलती हैं
लाइव चार्ट्स टिक्स और कोट्स से बनते हैं
एक आम धारणा यह है कि MetaTrader 5 को कैंडल डेटा कुछ इस तरह मिलता है:
ब्रोकर भेजता है:
20:00 की H1 कैंडल
Open = 3300.20
High = 3312.50
Low = 3298.10
Close = 3306.80
लाइव चार्ट सामान्यतः इस तरह काम नहीं करते।
लाइव चार्ट पर, MT5 ब्रोकर से प्राइस अपडेट्स की एक स्ट्रीम प्राप्त करता है। इन अपडेट्स को आमतौर पर ticks या quotes कहा जाता है।
फिर टर्मिनल इन आने वाली कीमतों का उपयोग करके वर्तमान कैंडल बनाता है।
इसलिए एक पूरी H1 कैंडल प्राप्त करने के बजाय, MT5 को लाइव प्राइस अपडेट्स ऐसे मिलते हैं:
20:00:01 price = 3300.20
20:00:08 price = 3301.10
20:01:15 price = 3302.70
20:02:03 price = 3299.80
...
20:59:47 price = 3306.80
फिर MT5 उन कीमतों से कैंडल बनाता है।
लाइव कैंडल कैसे बनती है
कैंडल का टाइमस्टैम्प अवधि की शुरुआत को दर्शाता है
मान लीजिए हम इस टाइमस्टैम्प वाली एक H1 कैंडल देख रहे हैं:
2026.05.06 20:00
इसका मतलब यह नहीं है कि कैंडल सिर्फ ठीक 20:00 पर ही हुई।
इसका मतलब है कि कैंडल उस अवधि को कवर करती है जो 20:00 पर शुरू होती है और अगली H1 कैंडल शुरू होने से ठीक पहले खत्म होती है।
सरल शब्दों में:
20:00 कैंडल = 20:00:00 से लेकर 21:00:00 से ठीक पहले तक की कीमतें
कैंडल इस तरह बनती है:
Open = उस घंटे में प्राप्त पहली कीमत
High = उस घंटे के दौरान प्राप्त सबसे ऊँची कीमत
Low = उस घंटे के दौरान प्राप्त सबसे नीची कीमत
Close = उस घंटे में प्राप्त सबसे नवीनतम कीमत
जब तक कैंडल लाइव है, क्लोज फाइनल नहीं होता।
हर बार नई कीमत आने पर क्लोज बदलता रहता है।
बनती हुई कैंडल का उदाहरण
कैंडल पूरी होने तक क्लोज बदलता रहता है
उदाहरण के लिए:
20:00:01
Open = 3300.20
High = 3300.20
Low = 3300.20
Close = 3300.20
20:10:00
Open = 3300.20
High = 3305.40
Low = 3299.80
Close = 3303.10
20:45:00
Open = 3300.20
High = 3312.50
Low = 3298.10
Close = 3309.70
20:59:47
Open = 3300.20
High = 3312.50
Low = 3298.10
Close = 3306.80
जैसे ही अगली H1 कैंडल शुरू होती है, पिछली कैंडल को बंद (closed) माना जाता है।
व्यवहार में, यह अक्सर तब होता है जब अगले घंटे का पहला टिक आता है।
कैंडल की अंतिम वैल्यू कौन तय करता है?
ब्रोकर फीड और सर्वर टाइम चार्ट को परिभाषित करते हैं
कैंडल की अंतिम वैल्यू ब्रोकर के लाइव प्राइस फीड और सर्वर टाइम से निर्धारित होती है।
आपका MT5 टर्मिनल चार्ट को लोकली बनाता है, लेकिन वह उसे ब्रोकर सर्वर द्वारा दिए गए डेटा से बनाता है।
इसलिए फाइनल कैंडल निम्न का परिणाम होती है:
ब्रोकर प्राइस फीड
+ ब्रोकर सर्वर टाइम
+ सिंबल स्पेसिफिकेशन
+ ट्रेडिंग सेशन सेटिंग्स
+ टर्मिनल द्वारा प्राप्त टिक/कोट स्ट्रीम
आपकी भौतिक लोकेशन आमतौर पर मायने नहीं रखती।
लंदन का एक ट्रेडर और साउथ अफ्रीका का एक ट्रेडर एकदम वही कैंडल देख सकते हैं यदि वे एक ही ब्रोकर सर्वर से जुड़े हों, एक ही अकाउंट टाइप और एक ही सिंबल इस्तेमाल कर रहे हों।
लेकिन अलग ब्रोकर सर्वर या अलग अकाउंट जूरिस्डिक्शन अलग कैंडल्स बना सकता है।
उदाहरण: वही ब्रोकर, अलग अकाउंट रीजन
टर्मिनल लोकेशन से ज्यादा अकाउंट एनवायरनमेंट मायने रखता है
मान लें आपके पास तीन MT5 टर्मिनल हैं:
Terminal A:
Location: London
Broker account: Deriv South Africa
Symbol: XAUUSD
Terminal B:
Location: South Africa
Broker account: Deriv South Africa
Symbol: XAUUSD
Terminal C:
Location: London
Broker account: Deriv UAE
Symbol: XAUUSD
Terminal A और Terminal B एक जैसी कैंडल वैल्यू दिखा सकते हैं क्योंकि वे ब्रोकर-साइड के एक ही डेटा एनवायरनमेंट से जुड़े हैं।
उनमें हो सकता है:
- वही सर्वर
- वही सिंबल फीड
- वही सर्वर टाइमज़ोन
- वही सिंबल स्पेसिफिकेशन
- वही कैंडल कंस्ट्रक्शन
लेकिन Terminal C अलग हो सकता है क्योंकि UAE अकाउंट किसी अलग Deriv सर्वर या ट्रेडिंग एनवायरनमेंट से कनेक्ट हो सकता है।
उस अकाउंट में हो सकता है:
- अलग सर्वर टाइम
- अलग लिक्विडिटी फीड
- अलग सिंबल कॉन्फ़िगरेशन
- अलग स्प्रेड मॉडल
- अलग ट्रेडिंग सेशन्स
- अलग कोट फ़िल्टरिंग
- अलग हिस्टोरिकल डेटा
भले ही सिंबल का नाम एक जैसा दिखे, वास्तविक डेटा एनवायरनमेंट समान होना जरूरी नहीं है।
टाइमस्टैम्प की समस्या
20:00 वाली कैंडल ब्रोकर सर्वर टाइम पर आधारित होती है
कन्फ्यूज़न का सबसे बड़ा स्रोतों में से एक कैंडल टाइम है।
जब MT5 इस समय पर एक H1 कैंडल दिखाता है:
20:00
तो वह समय ब्रोकर सर्वर के समय पर आधारित होता है, जरूरी नहीं कि आपके लोकल कंप्यूटर टाइम पर।
इसलिए दो अकाउंट दोनों एक कैंडल को यह लेबल दे सकते हैं:
20:00
लेकिन वे कैंडल्स वास्तविक दुनिया की अलग-अलग UTC अवधि को संदर्भित कर सकती हैं।
उदाहरण के लिए:
Broker Server A:
20:00 server time = 18:00 UTC
Broker Server B:
20:00 server time = 16:00 UTC
दोनों चार्ट 20:00 कैंडल दिखाते हैं, लेकिन वे एक ही वास्तविक घंटे को कवर नहीं कर रहे।
इसका मतलब ओपन, हाई, लो, क्लोज, और इंडिकेटर्स सभी अलग हो सकते हैं।
ऊँचे टाइमफ्रेम ज्यादा प्रभावित क्यों होते हैं
सर्वर टाइम H1, H4, D1, और W1 कैंडल्स को आकार देता है
यह खासकर ऊँचे टाइमफ्रेम्स के लिए महत्वपूर्ण हो जाता है जैसे:
- H1
- H4
- D1
- W1
टाइमफ्रेम जितना बड़ा, सर्वर टाइम उतना ही महत्वपूर्ण।
एक ब्रोकर पर D1 कैंडल वास्तविक दुनिया के अलग समय पर ओपन/क्लोज हो सकती है, दूसरे ब्रोकर की D1 कैंडल की तुलना में।
यह प्रभावित कर सकता है:
- दैनिक हाई और लो
- डेली कैंडल क्लोज
- मूविंग एवरेज
- ATR
- ब्रेकआउट लेवल्स
- सपोर्ट और रेज़िस्टेंस ज़ोन्स
- बैकटेस्ट रिज़ल्ट्स
- EA एंट्रीज़ और एग्ज़िट्स
SMA अलग क्यों हो सकता है
इंडिकेटर्स ब्रोकर-विशिष्ट कैंडल डेटा से कैलकुलेट होते हैं
SMA किसी सार्वभौमिक मार्केट डेटा सोर्स से कैलकुलेट नहीं होता।
यह उस खास चार्ट पर उपलब्ध कैंडल क्लोज़ से कैलकुलेट होता है।
उदाहरण के लिए, H1 पर 10-पिरियड SMA पिछले 10 H1 कैंडल क्लोज़ से कैलकुलेट होता है।
सरल रूप में:
SMA = पिछले 10 क्लोज़ का औसत
इसलिए अगर दो ब्रोकर अकाउंट्स के H1 क्लोज़ थोड़े अलग हैं, तो उनके SMA वैल्यू भी थोड़े अलग होंगे।
इसका मतलब यह हो सकता है:
Account A:
Price closes below SMA
EA triggers sell setup
Account B:
Price closes slightly above SMA
EA does not trigger
दोनों प्लेटफॉर्म सही काम कर रहे हो सकते हैं। वे बस अलग अंडरलाईंग कैंडल डेटा इस्तेमाल कर रहे हैं।
कैंडल अंतर से प्रभावित होने वाली स्ट्रैटेजीज
सटीक क्लोज़ सटीक सिग्नल बदल सकते हैं
यह खासकर उन स्ट्रैटेजीज के लिए प्रासंगिक है जो सटीक कैंडल क्लोज़ पर निर्भर करती हैं, जैसे:
- SMA क्रॉस स्ट्रैटेजीज
- ब्रेकआउट स्ट्रैटेजीज
- रिजेक्शन कैंडल पैटर्न्स
- स्विंग हाई / स्विंग लो लॉजिक
- डेली रेंज स्ट्रैटेजीज
- ATR-आधारित बॉक्स सिस्टम्स
कैंडल में छोटे अंतर भी किसी सिग्नल, फ़िल्टर, या ट्रेड मैनेजमेंट निर्णय को बदलने के लिए पर्याप्त हो सकते हैं।
लाइव चार्ट बनाम हिस्टोरिकल चार्ट
वर्तमान कैंडल्स टिक-दर-टिक बदलती हैं
लाइव चार्ट पर, MT5 आने वाले लाइव टिक्स से वर्तमान कैंडल बनाता है।
वर्तमान कैंडल के लिए, MQL5 में:
iClose(_Symbol, PERIOD_H1, 0)
वर्तमान में बन रही H1 कैंडल का नवीनतम लाइव क्लोज़ रिटर्न करता है।
वह वैल्यू टिक-दर-टिक बदल सकती है।
पिछली कैंडल को इस तरह एक्सेस किया जाता है:
iClose(_Symbol, PERIOD_H1, 1)
वह आखिरी बंद (closed) H1 कैंडल है।
हालांकि, वह बंद वैल्यू भी मूल रूप से ब्रोकर की लाइव टिक स्ट्रीम से ही आई थी। वह कोई सार्वभौमिक वैल्यू नहीं थी जो सभी ब्रोकर साझा करते हों।
वह उसी ब्रोकर/अकाउंट/सर्वर एनवायरनमेंट के अंदर बनी थी।
Expert Advisors के लिए यह क्यों मायने रखता है
एक ही कोड अलग डेटा पर अलग तरह से व्यवहार कर सकता है
अगर आप EA बना रहे हैं, तो यह व्यवहार बहुत मायने रखता है।
एक स्ट्रैटेजी जो एक ब्रोकर सर्वर पर काम करती है, वह दूसरे ब्रोकर सर्वर पर उसी कोड और उसी इनपुट पैरामीटर्स के साथ थोड़ा अलग व्यवहार कर सकती है।
उदाहरण के लिए:
Broker A:
H1 close crosses below SMA
EA arms breakout box
Broker B:
H1 close does not cross below SMA
EA does nothing
या:
Broker A:
Daily ATR = 24.5
Broker B:
Daily ATR = 26.1
वह छोटा अंतर बदल सकता है:
- बॉक्स साइज़
- स्टॉप लॉस
- टेक प्रॉफिट
- एंट्री टाइमिंग
- रिस्क कैलकुलेशन
- ट्रेड फ्रीक्वेंसी
- बैकटेस्ट रिज़ल्ट्स
- लाइव रिज़ल्ट्स
इसका मतलब यह नहीं कि MT5 खराब है।
इसका मतलब है कि आपका EA डेटा-सेंसिटिव है।
ब्रोकर की कैंडल कंस्ट्रक्शन ट्रेडिंग एनवायरनमेंट का हिस्सा है।
दो अकाउंट्स को सही तरीके से कैसे तुलना करें
वास्तविक कैंडल डेटा प्रिंट करें
यदि आप दो MT5 अकाउंट्स की तुलना करना चाहते हैं, तो केवल चार्ट को देखकर तुलना न करें।
वास्तविक डेटा प्रिंट करें।
उदाहरण के लिए, MQL5 में आप यह तुलना कर सकते हैं:
void OnStart()
{
MqlRates rates[];
ArraySetAsSeries(rates, true);
int copied = CopyRates(_Symbol, PERIOD_H1, 0, 20, rates);
Print("Account server: ", AccountInfoString(ACCOUNT_SERVER));
Print("Symbol: ", _Symbol);
Print("TimeTradeServer: ", TimeTradeServer());
for(int i = 0; i < copied; i++)
{
Print(
"shift=", i,
" time=", TimeToString(rates[i].time, TIME_DATE | TIME_MINUTES),
" open=", DoubleToString(rates[i].open, _Digits),
" high=", DoubleToString(rates[i].high, _Digits),
" low=", DoubleToString(rates[i].low, _Digits),
" close=", DoubleToString(rates[i].close, _Digits),
" tick_volume=", rates[i].tick_volume
);
}
}
इसे दोनों अकाउंट्स पर चलाएँ और तुलना करें:
- सर्वर नाम
- सिंबल नाम
- बार टाइमस्टैम्प
- Open
- High
- Low
- Close
- Tick volume
सिंबल प्रॉपर्टीज भी तुलना करें
फीड ही एकमात्र अंतर नहीं हो सकता
आपको सिंबल प्रॉपर्टीज भी तुलना करनी चाहिए:
void OnStart()
{
Print("Server: ", AccountInfoString(ACCOUNT_SERVER));
Print("Symbol: ", _Symbol);
Print("Digits: ", SymbolInfoInteger(_Symbol, SYMBOL_DIGITS));
Print("Point: ", SymbolInfoDouble(_Symbol, SYMBOL_POINT));
Print("Tick size: ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE));
Print("Contract size: ", SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE));
Print("Currency profit: ", SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT));
}
कभी-कभी अंतर सिर्फ कैंडल फीड का नहीं होता।
सिंबल में ही अलग कॉन्ट्रैक्ट सेटिंग्स हो सकती हैं।
व्यावहारिक निष्कर्ष
एक MT5 कैंडल एक खास ब्रोकर एनवायरनमेंट की होती है
एक MT5 कैंडल सिर्फ "मार्केट की कैंडल" नहीं होती।
वह होती है:
किसी विशिष्ट सिंबल के लिए कैंडल,
किसी विशिष्ट ब्रोकर सर्वर पर,
उस ब्रोकर के प्राइस फीड का उपयोग करके,
उस ब्रोकर के सर्वर टाइम का उपयोग करके।
इसलिए यदि दो टर्मिनल एक ही ब्रोकर सर्वर और अकाउंट एनवायरनमेंट से जुड़े हैं, तो उन्हें आमतौर पर एक ही लाइव कैंडल्स दिखानी चाहिए, भले ही टर्मिनल अलग-अलग देशों में हों।
लेकिन अगर दूसरा अकाउंट किसी अलग ब्रोकर एंटिटी, सर्वर, या सिंबल फीड से कनेक्ट होता है, तो कैंडल्स अलग हो सकती हैं।
यह समझाता है कि क्यों:
Deriv South Africa account in London
=
Deriv South Africa account in South Africa
लेकिन:
Deriv UAE account in London
!=
Deriv South Africa account in London
टर्मिनल की लोकेशन मुख्य कारण नहीं है।
ब्रोकर सर्वर और फीड हैं।
अंतिम संदेश
आपकी स्ट्रैटेजी मार्केट के ब्रोकर-वर्ज़न पर ट्रेड करती है
मैनुअल ट्रेडर्स के लिए, यह बताता है कि अलग-अलग अकाउंट्स में चार्ट्स थोड़े अलग क्यों हो सकते हैं।
EA डेवलपर्स के लिए, यह और भी महत्वपूर्ण है: कैंडल अंतर सिग्नल्स, बैकटेस्ट, एंट्रीज़, एग्ज़िट्स, और प्रॉफिटेबिलिटी बदल सकते हैं।
ट्रेडिंग बॉट बनाते समय, हमेशा याद रखें:
आपकी स्ट्रैटेजी सिर्फ मार्केट पर ट्रेड नहीं कर रही।
वह ब्रोकर के मार्केट-वर्ज़न पर ट्रेड कर रही है।
MT5 के बारे में और जानें और Lanami टूल्स प्लेटफॉर्म पर कैसे काम करते हैं।
ऐसे ब्रोकर फैक्टर्स की समीक्षा करें जो एक्ज़ीक्यूशन, स्प्रेड्स, और ब्रेकआउट ट्रेडिंग बिहेवियर को प्रभावित कर सकते हैं।
डिसिप्लिन्ड MT5 एक्ज़ीक्यूशन के लिए बनाया गया ऑटोमेटेड ब्रेकआउट ट्रेडिंग सिस्टम देखें।