MQL5 में OnTick और OnTimer: EA डिज़ाइन में उपयोग
विषय सूची
निष्कर्ष: फ़ैसला "नई कैंडल" पर, समय वाला काम OnTimer में
पहले निष्कर्ष। जो EA H1 या H4 जैसे लंबे टाइमफ़्रेम पर ट्रेड तय करता है, उसके लिए ट्रेड का फ़ैसला सिर्फ़ "नई कैंडल बनने के बाद पहले टिक" पर करना काफ़ी है। हर टिक पर वही गणना दोहराने से सिर्फ़ CPU खर्च होता है, फ़ैसला नहीं बदलता। दूसरी ओर, जो काम टिक न आने पर भी चलना चाहिए, उसके लिए OnTimer का इस्तेमाल करें। जैसे सप्ताहांत में स्थिति लिखकर सेव करना, या तय समय पर ऑर्डर व्यवस्थित करना।
फिर भी कौन-सा तरीका सही है, यह रणनीति पर निर्भर करता है। इस लेख में दोनों व्यवस्थाओं का फ़र्क और वे बातें समझाई गई हैं जो EA चुनने वाला खुद जाँच सकता है।
अनुशंसित ब्रोकर तुलना →
🎁 मुफ्त EA डाउनलोड📧 मुफ़्त ईमेल कोर्स (8 ईमेल) + केवल सब्सक्राइबर्स के लिए 13 MT5 इंडिकेटर का पैक
साइन अप करते ही आपको हमारे 13 MT5 इंडिकेटर वाले सब्सक्राइबर-पैक का डाउनलोड लिंक मिलेगा: कंपाइल की हुई फ़ाइलें (.ex5), सोर्स कोड और सेटअप गाइड। फिर एल्गो-ट्रेडिंग की बुनियादी बातें, बैकटेस्ट को सही ढंग से पढ़ना और ब्रोकर चुनना — इन पर 8 ईमेल (पहले 5 दिन रोज़ एक, फिर साइन-अप के 7, 14 और 30 दिन बाद)। MQL5 Market पर बिकने वाले संस्करणों (लॉन्च कीमत, जो बिक्री के साथ चरणों में बढ़ती है) की हर कीमत बढ़ोतरी से पहले सूचना भी मिलेगी। इस साइट पर हमारे EA पार्टनर ब्रोकर के लाइव खाते के साथ मुफ़्त हैं।
* गोपनीयता कड़ाई से संरक्षित। आप किसी भी समय सदस्यता समाप्त कर सकते हैं।
कार्यप्रणाली: टिक-आधारित और समय-आधारित
OnTick (टिक-आधारित)
जिस सिंबल पर EA चल रहा है, उस पर हर नई कीमत (टिक) आने पर OnTick बुलाया जाता है। तेज़ उतार-चढ़ाव वाले समय में यह एक सेकंड में कई बार बुलाया जाता है, और बाज़ार बंद रहने वाले सप्ताहांत में एक बार भी नहीं।
यहाँ एक अहम नियम जानना ज़रूरी है। पिछले OnTick की प्रोसेसिंग पूरी होने से पहले जो टिक आते हैं, वे कतार में नहीं जुड़ते, उन्हें छोड़ दिया जाता है। यानी जिस EA की एक बार की प्रोसेसिंग भारी है, वह अचानक तेज़ चाल के दौरान टिक चूक जाता है।
OnTimer (समय-आधारित)
EventSetTimer() से तय किए गए अंतराल पर OnTimer बुलाया जाता है। यह कीमत की चाल से स्वतंत्र है, इसलिए बाज़ार बंद होने पर भी चलता है। एक EA के लिए सिर्फ़ एक टाइमर होता है, और प्रोसेसिंग अटकी हो तो उसी तरह कॉल छोड़ दी जाती है। साथ ही, तय अंतराल पर ठीक उसी क्षण कॉल होने की कोई गारंटी नहीं है।
| बिंदु | OnTick | OnTimer |
|---|---|---|
| कब बुलाया जाता है | कीमत अपडेट होने पर | तय समय बीतने पर |
| बाज़ार बंद होने पर | नहीं बुलाया जाता | बुलाया जाता है |
| कॉल की संख्या | बाज़ार जितना अस्थिर, उतनी ज़्यादा | लगभग स्थिर |
| किस काम के लिए उपयुक्त | एंट्री और एग्ज़िट का फ़ैसला | नियमित गणना, समय से तय होने वाले काम |
| मुख्य सावधानी | भारी प्रोसेसिंग से टिक छूट जाते हैं | नई कीमत न आने पर भी चलता है |
कम फ़्रीक्वेंसी वाली रणनीति में CPU बचाने का तरीका
अगर रणनीति H4 कैंडल पर फ़ैसला लेती है, तो एक कैंडल के चार घंटों में OnTick चाहे हज़ारों बार बुलाया जाए, फ़ैसले में इस्तेमाल होने वाली क्लोज़्ड कैंडल की वैल्यू नहीं बदलती। इसलिए हम बुनियादी तौर पर इस ढाँचे का इस्तेमाल करते हैं, जिसमें भारी प्रोसेसिंग सिर्फ़ "कैंडल बदलने पर" चलती है।
datetime g_lastBar = 0;
void OnTick()
{
datetime cur = iTime(_Symbol, PERIOD_H4, 0);
if(cur == g_lastBar) return; // एक ही कैंडल के दौरान कुछ नहीं करना
g_lastBar = cur;
// यहाँ क्लोज़्ड कैंडल (शिफ़्ट 1) से फ़ैसला लें
}
इंडिकेटर का हैंडल OnInit में सिर्फ़ एक बार बनाएँ, उसे हर बार OnTick के अंदर दोबारा न बनाएँ। यह भी ज़रूरी है। OnTimer इस्तेमाल करें तो OnDeinit में EventKillTimer() बुलाकर टाइमर बंद करें।
VPS पर कई चार्ट में EA लगे हों, तो ऐसे फ़र्क CPU लोड के रूप में दिखते हैं। VPS चुनने का नज़रिया VPS जानकारी में दिया गया है।
EA चुनने वाला क्या जाँच सकता है
अंदर का कोड न देख पाएँ तब भी नीचे की बातें कुछ हद तक जाँची जा सकती हैं।
- विवरण और पैरामीटर: क्या "सिर्फ़ नई कैंडल पर फ़ैसला" जैसी कोई सेटिंग है
- VPS का CPU उपयोग: एक EA हटाने पर लोड साफ़ घटता है, तो संभव है कि वह हर टिक पर भारी प्रोसेसिंग कर रहा हो
- एक्सपर्ट लॉग: कहीं हर टिक पर एक ही आउटपुट तो नहीं छप रहा
- टेस्टर के नतीजे: जो EA कैंडल की ओपन कीमत पर फ़ैसला लेता है, उसके नतीजे "सिर्फ़ ओपन प्राइस" और "हर टिक" में ज़्यादा नहीं बदलने चाहिए। अगर बहुत फ़र्क आए, तो EA कैंडल के बीच की चाल पर भी प्रतिक्रिया दे रहा है
EA लगाने और सेटिंग की बुनियादी जानकारी के लिए EA सेटअप गाइड देखें।
सीमाएँ और सावधानियाँ
कमज़ोर पहलू भी बताना ज़रूरी है।
- कैंडल के बीच का जोखिम नज़र में नहीं रहता: फ़ैसला सिर्फ़ नई कैंडल तक सीमित रखने पर कैंडल के बीच की अचानक चाल पर कोई प्रतिक्रिया नहीं होती। स्टॉप-लॉस को ऑर्डर के साथ लगे स्टॉप ऑर्डर से सुरक्षित रखने का डिज़ाइन न हो, तो अनचाहा नुकसान हो सकता है।
- नई कैंडल में देरी: नई कैंडल बन जाने पर भी, उसका पहला टिक आने तक प्रोसेसिंग शुरू नहीं होती। कम हलचल वाले सिंबल या समय में फ़ैसला कैंडल की शुरुआत से देर से हो सकता है।
- OnTimer में टेस्टर और असली व्यवहार अलग हो सकते हैं: टेस्टर में टाइमर वर्चुअल समय पर बुलाया जाता है, इसलिए असली खाते जैसा अंतराल होना ज़रूरी नहीं।
- प्रोसेसिंग हल्की होने से नतीजे नहीं सुधरते: CPU लोड घटाने से जीतना आसान नहीं हो जाता। रणनीति कितनी अच्छी है, यह अलग सवाल है।
H4 कैंडल वाले EA, जैसे ETHEREUM EA जैसी कम ट्रेड वाली रणनीतियों में ऐसे डिज़ाइन-फ़र्क समझना और भी मुश्किल होता है। बाहर से जितना जाँचा जा सकता है, उसकी सीमा है। हम पक्के तौर पर सिर्फ़ उसी कोड के बारे में कह सकते हैं जो हमने खुद लिखा है।
सारांश
- OnTick कीमत आने पर और OnTimer तय समय अंतराल पर बुलाया जाता है
- प्रोसेसिंग के दौरान आए इवेंट कतार में नहीं जुड़ते, छोड़ दिए जाते हैं। भारी प्रोसेसिंग से इवेंट छूट सकते हैं
- कम फ़्रीक्वेंसी वाली रणनीति में "सिर्फ़ नई कैंडल पर फ़ैसला" वाला ढाँचा CPU बचाता है
- जो काम टिक न आने के समय भी चलना चाहिए, उसके लिए OnTimer इस्तेमाल करें
- कैंडल के बीच के जोखिम की तैयारी स्टॉप ऑर्डर से करें। हल्की प्रोसेसिंग से नतीजे बेहतर नहीं होते
- और भी जानकारी के लिए EA और MT5 ज्ञान देखें
संबंधित
📧 मुफ़्त ईमेल कोर्स (8 ईमेल) + केवल सब्सक्राइबर्स के लिए 13 MT5 इंडिकेटर का पैक
साइन अप करते ही आपको हमारे 13 MT5 इंडिकेटर वाले सब्सक्राइबर-पैक का डाउनलोड लिंक मिलेगा: कंपाइल की हुई फ़ाइलें (.ex5), सोर्स कोड और सेटअप गाइड। फिर एल्गो-ट्रेडिंग की बुनियादी बातें, बैकटेस्ट को सही ढंग से पढ़ना और ब्रोकर चुनना — इन पर 8 ईमेल (पहले 5 दिन रोज़ एक, फिर साइन-अप के 7, 14 और 30 दिन बाद)। MQL5 Market पर बिकने वाले संस्करणों (लॉन्च कीमत, जो बिक्री के साथ चरणों में बढ़ती है) की हर कीमत बढ़ोतरी से पहले सूचना भी मिलेगी। इस साइट पर हमारे EA पार्टनर ब्रोकर के लाइव खाते के साथ मुफ़्त हैं।
* गोपनीयता कड़ाई से संरक्षित। आप किसी भी समय सदस्यता समाप्त कर सकते हैं।
EA या फ़ॉरेक्स के बारे में कोई सवाल है?
आप इसे Nattzy के ट्रेडिंग फ़ोरम पर पूछ सकते हैं (मुफ़्त पंजीकरण)। इस लेख से हटकर सवाल भी पूछ सकते हैं — जैसे EA की सेटिंग या ब्रोकर का चुनाव।
Nattzy पर पूछें ↗