बैकटेस्ट के नतीजे पढ़ें
रणनीति को ट्रेड-दर-ट्रेड जाँचें और खर्च का असर मिलाएँ।
पहली रणनीति चल चुकी है। अब जाँचेंगे कि सिम्युलेटेड ट्रेड सच में नियम से बने हैं और दिखते नतीजों का अर्थ क्या है।
डेमो डेटा कृत्रिम कीमत श्रृंखला है। इससे प्रोग्राम का काम जाँच सकते हैं। असली बाज़ार का अपेक्षित रिटर्न नहीं बता सकते।
पहले एक ट्रेड देखें
crossover_strategy.py को 5 और 20 लंबाई से चलाएँ। पूरा होने पर नीचे पैनल में Trades चुनें। बंद हो तो दाईं तीर से खोलें।
टेबल में ट्रेड के प्रवेश और निकास का डेटा है। लॉन्ग में प्रवेश खरीद और निकास बिक्री है।
| कॉलम | क्या दिखाता है? |
|---|---|
Trade | ट्रेड की संख्या और प्रवेश पहचान |
Entry time | प्रवेश भरने का समय |
Entry price | प्रवेश भरने की कीमत |
Exit time | निकास भरने का समय |
Exit price | निकास भरने की कीमत |
Qty | ट्रेड की मात्रा |
Profit | बंद ट्रेड का पैसे में नतीजा |
Profit % | ट्रेड का प्रतिशत नतीजा |

एक ट्रेड की लाइन दबाएँ। ग्राफ़ पर उसकी अवधि खोज सकते हैं। प्रवेश से पहले और बंद करने वाली, दोनों क्रॉसिंग देखें।
मूल प्रोग्राम ने commission_value या slippage नहीं दिया, इसलिए बेस रन में अभी जोड़ने वाले खर्च नहीं हैं। पहले इसी सरल रन में दिशा, समय और मात्रा जाँचें।
सरल ट्रेड का हिसाब
एक यूनिट 100 में खरीदकर 103 में बेचें तो अंतर 3 है। पॉइंट वैल्यू एक और खर्च शून्य हो तो पैसे का नतीजा भी इतना है।
सामान्य रूप में लॉन्ग का कीमत से नतीजा:
(निकास कीमत − प्रवेश कीमत) × मात्रा × पॉइंट वैल्यूपॉइंट वैल्यू बाज़ार मेटाडेटा है। एक यूनिट पोज़िशन पर कीमत में एक का बदलाव कितने पैसे का है, बताती है। DEMO में यह 1 है।
कमीशन शुद्ध नतीजा घटाता है। स्लिपेज भरने की कीमत बदलता है, इसलिए कीमत अंतर में पहले से है। बदली कीमतों से उसे दोबारा न घटाएँ।
Performance व्यू
Performance पूरी रन की पूँजी का बदलाव दिखाता है। फ़ील्ड:
- Cumulative P&L: शुरुआती पूँजी से बदलाव;
- Max drawdown: पूँजी कर्व की पिछली चोटी से सबसे बड़ी गिरावट;
- Final equity: आखिरी प्रोसेस कैंडल की पूँजी;
- Max run-up: पिछली निचली जगह से सबसे बड़ी बढ़त।

इक्विटी खुली पोज़िशन की बदलती वैल्यू भी ले सकती है। इसलिए अंत की पूँजी हमेशा शुरुआती पूँजी और बंद ट्रेड के जोड़ जितनी नहीं। आखिर में खुली पोज़िशन देखें।
आखिरी बिंदु के साथ बीच का कर्व भी देखें। समान अंत तक अलग गिरावट और लंबी नुकसान अवधि से पहुँच सकते हैं।
Stats व्यू
Stats में अंत के विस्तृत आँकड़े हैं। Total Trades बंद ट्रेड की संख्या और Net Profit उनका कुल शुद्ध नतीजा जाँचता है।
Profit Factor लाभ और नुकसान के कुल नतीजों का अनुपात है: कुल लाभ को कुल नुकसान के निरपेक्ष मान से भाग दें। कोई नुकसान वाला ट्रेड न हो तो यह सामान्य सीमित तुलना संख्या नहीं है।
जीत दर बताती है कि बंद ट्रेड में कितने लाभकारी थे। अकेले कुल लाभ तय नहीं करती। कुछ बड़े नुकसान बहुत छोटे लाभ मिटा सकते हैं।
बहुत कम ट्रेड का सारांश भटका सकता है। बाकी आँकड़ों के साथ कुल संख्या रखें और कुछ नुकसान वाले ट्रेड भी देखें।
Properties में खर्च
नीचे पैनल के Strategy properties गियर से सेटिंग खोलकर Properties चुनें। पूँजी, मात्रा और खर्च बदल सकते हैं।
अगली दो रन तुलना का अभ्यास हैं। खर्च उदाहरण के हैं; असली बाज़ार के अलग देने होंगे।
- Initial capital 10000 और Order size में 1 Contracts जाँचें।
- Commission में 0.1 दें और % of order value चुनें। फ़ील्ड में
0.1लिख सकते हैं। - Slippage 2 टिक हो।
- Save करें, फिर Run Pyne code चलाकर पूरा होने दें।

0.1 प्रतिशत, 10 प्रतिशत नहीं है: फ़ील्ड प्रतिशत इकाई में है। 100 मूल्य के ऑर्डर भरने पर कमीशन 0.1 है। प्रवेश और निकास दोनों भरना हैं, इसलिए दोनों पर खर्च हो सकता है।
टिक बाज़ार का न्यूनतम कीमत कदम है। DEMO में 0.01 है, इसलिए दो टिक 0.02 बदलाव हैं। स्लिपेज मार्केट ऑर्डर की कीमत रणनीति के लिए नुकसान वाली दिशा में खिसकाता है।
दूसरे बाज़ार में टिक और पॉइंट वैल्यू अलग हो सकते हैं। DEMO का खर्च दूसरे इंस्ट्रूमेंट पर सीधे लागू न मानें।
भरने की सेटिंग भी प्रयोग का हिस्सा है
Fill orders का On bar close मार्केट ऑर्डर का समय बदलता है। मूल रणनीति में बंद रखें ताकि संकेत का ऑर्डर अगली ओपन पर भरे।
After order is filled भरने के बाद दोबारा गणना माँग सकता है। Using bar magnifier छोटे टाइमफ़्रेम के डेटा से कैंडल के भीतर भरना जाँच सकता है। ये अलग निष्पादन शर्तें हैं; बेस रन से तुलना में बंद रखें।
एक सेटिंग बदले तो भी नया रन नतीजा है। लंबाई, मात्रा, खर्च और भरने का मोड एक साथ बदलें तो अंतर का कारण नहीं बता सकेंगे।
तुलना का रिकॉर्ड रखें
ग्राफ़ टूलबार का Open trades output CSV ट्रेड एक्सपोर्ट खोलता है। Open plot output CSV दिखाई वैल्यू की टेबल खोलता है। प्रोजेक्ट के Output में भी फ़ाइलें मिलती हैं।
फिर चलाने से पहले बचाने वाला एक्सपोर्ट दूसरे नाम में कॉपी करें। केवल नतीजे का नाम सभी सेटिंग नहीं बताता।
अपने नोट में कम से कम यह रखें:
| रन | डेटा | तेज़/धीमी लंबाई | मात्रा | कमीशन | स्लिपेज |
|---|---|---|---|---|---|
| बेस रन | DEMO | 5 / 20 | 1 यूनिट | 0% | 0 टिक |
| खर्च सहित | DEMO | 5 / 20 | 1 यूनिट | 0.1% | 2 टिक |
मिले नतीजे भी लिखें। अपने असली रन के आधार पर नोट में टेबल भरें।
स्वयं करके देखें
वही ट्रेड बिना खर्च और खर्च वाली रन में मिलाएँ। प्रवेश, निकास और लाभ देखें। क्या बदला और संकेत का कौन-सा नियम समान रहा?
अभ्यास का हल
औसत और क्रॉसिंग कमीशन या स्लिपेज से नहीं निकलते, इसलिए मूल संकेत नहीं बदलते। मार्केट प्रवेश और बंद करने की कीमत स्लिपेज से खराब हो सकती है। कमीशन शुद्ध नतीजा और घटाता है।
सीधी तुलना तभी है जब इनपुट, मात्रा, डेटा और भरने का मोड समान हों तथा दोनों में रणनीति ऑर्डर भर सके।
दूसरा डेटा चुनना
डेमो के बाद PyneIDE डाउनलोडर से अपना बाज़ार डेटा ले सकते हैं। कीमत, टिक, मात्रा सीमा और ट्रेड अलग होंगे। पहले डेटा देखें, फिर नतीजे मिलाएँ।
- बाएँ Pyne में Data शीर्षक पर माउस रखें। बादल से नीचे तीर वाला Download Data… दबाएँ। Symbol Browser खुलेगा। Data पर दाएँ क्लिक से भी मिलता है।
- Provider में सेवा चुनें। तस्वीर में
ccxtहै; इसमें Broker से खास डेटा स्रोत चुनें। - फ़िल्टर में बाज़ार नाम लिखें। तस्वीर में
coinbaseकाBTC/USDस्पॉट बाज़ार है। पूरा नाम देखें: समान शुरुआत वाले अलग बाज़ार हो सकते हैं। - Timeframe
1D, From 365 days back रखें। To में now डाउनलोड के समय तक डेटा माँगता है। - Download दबाकर पूरा होने दें।

दाईं जानकारी में mintick टिक आकार, pointvalue पॉइंट वैल्यू और mincontract न्यूनतम मात्रा है। अपना डेटा लेते समय भी देखें। उपलब्धता और पहुँच सेवा पर निर्भर हैं; यहाँ चुना डेटा माँगना ट्रेडिंग खाते का इस्तेमाल नहीं है।
डाउनलोड Data में आता है। रणनीति ग्राफ़ के ऊपर बाज़ार नाम दबाकर नया डेटा चुनें। ग्राफ़ दोबारा बनता है; इनपुट और गुण फिर भी जाँचें।
डाउनलोड की अवधि निश्चित कैंडल संख्या नहीं देती: सेवा की उपलब्ध हिस्ट्री, कारोबारी दिन और गायब अवधि मायने रखते हैं। नया डाउनलोड श्रृंखला बदल सकता है, इसलिए तुलना के लिए डेटा और उसकी मेटाडेटा फ़ाइल बचाएँ।
रन का अर्थ समझना
बैकटेस्ट नियम, डेटा और निष्पादन मॉडल के मेल से गणना करता है। बताता है कि कोड वर्णन के अनुसार काम करता है या नहीं और मॉडल में कैसा होता। भविष्य का डेटा नतीजे में नहीं है।
उसी डेटा पर बार-बार पैरामीटर बदलें तो उसी के अनुरूप नियम मिल सकता है। सेटिंग में इस्तेमाल न हुई अलग अवधि जाँचना दूसरा सवाल है। इसलिए अंतिम प्रोजेक्ट में सही काम और सेटिंग की तुलना अलग जाँचेंगे।