पहली रणनीति चल चुकी है। अब जाँचेंगे कि सिम्युलेटेड ट्रेड सच में नियम से बने हैं और दिखते नतीजों का अर्थ क्या है।

डेमो डेटा कृत्रिम कीमत श्रृंखला है। इससे प्रोग्राम का काम जाँच सकते हैं। असली बाज़ार का अपेक्षित रिटर्न नहीं बता सकते।

पहले एक ट्रेड देखें

crossover_strategy.py को 5 और 20 लंबाई से चलाएँ। पूरा होने पर नीचे पैनल में Trades चुनें। बंद हो तो दाईं तीर से खोलें।

टेबल में ट्रेड के प्रवेश और निकास का डेटा है। लॉन्ग में प्रवेश खरीद और निकास बिक्री है।

कॉलमक्या दिखाता है?
Tradeट्रेड की संख्या और प्रवेश पहचान
Entry timeप्रवेश भरने का समय
Entry priceप्रवेश भरने की कीमत
Exit timeनिकास भरने का समय
Exit priceनिकास भरने की कीमत
Qtyट्रेड की मात्रा
Profitबंद ट्रेड का पैसे में नतीजा
Profit %ट्रेड का प्रतिशत नतीजा
PyneIDE के रणनीति ग्राफ़ के नीचे Trades में समय, कीमत और नतीजे हैं।
Trades में भरे प्रवेश और निकास अलग जाँच सकते हैं।

एक ट्रेड की लाइन दबाएँ। ग्राफ़ पर उसकी अवधि खोज सकते हैं। प्रवेश से पहले और बंद करने वाली, दोनों क्रॉसिंग देखें।

मूल प्रोग्राम ने commission_value या slippage नहीं दिया, इसलिए बेस रन में अभी जोड़ने वाले खर्च नहीं हैं। पहले इसी सरल रन में दिशा, समय और मात्रा जाँचें।

सरल ट्रेड का हिसाब

एक यूनिट 100 में खरीदकर 103 में बेचें तो अंतर 3 है। पॉइंट वैल्यू एक और खर्च शून्य हो तो पैसे का नतीजा भी इतना है।

सामान्य रूप में लॉन्ग का कीमत से नतीजा:

(निकास कीमत − प्रवेश कीमत) × मात्रा × पॉइंट वैल्यू

पॉइंट वैल्यू बाज़ार मेटाडेटा है। एक यूनिट पोज़िशन पर कीमत में एक का बदलाव कितने पैसे का है, बताती है। DEMO में यह 1 है।

कमीशन शुद्ध नतीजा घटाता है। स्लिपेज भरने की कीमत बदलता है, इसलिए कीमत अंतर में पहले से है। बदली कीमतों से उसे दोबारा न घटाएँ।

Performance व्यू

Performance पूरी रन की पूँजी का बदलाव दिखाता है। फ़ील्ड:

  • Cumulative P&L: शुरुआती पूँजी से बदलाव;
  • Max drawdown: पूँजी कर्व की पिछली चोटी से सबसे बड़ी गिरावट;
  • Final equity: आखिरी प्रोसेस कैंडल की पूँजी;
  • Max run-up: पिछली निचली जगह से सबसे बड़ी बढ़त।
PyneIDE के Performance में Cumulative P&L, Max drawdown, Final equity और पूँजी कर्व हैं।
Performance पूरी रन का पूँजी कर्व और सारांश दिखाता है।

इक्विटी खुली पोज़िशन की बदलती वैल्यू भी ले सकती है। इसलिए अंत की पूँजी हमेशा शुरुआती पूँजी और बंद ट्रेड के जोड़ जितनी नहीं। आखिर में खुली पोज़िशन देखें।

आखिरी बिंदु के साथ बीच का कर्व भी देखें। समान अंत तक अलग गिरावट और लंबी नुकसान अवधि से पहुँच सकते हैं।

Stats व्यू

Stats में अंत के विस्तृत आँकड़े हैं। Total Trades बंद ट्रेड की संख्या और Net Profit उनका कुल शुद्ध नतीजा जाँचता है।

Profit Factor लाभ और नुकसान के कुल नतीजों का अनुपात है: कुल लाभ को कुल नुकसान के निरपेक्ष मान से भाग दें। कोई नुकसान वाला ट्रेड न हो तो यह सामान्य सीमित तुलना संख्या नहीं है।

जीत दर बताती है कि बंद ट्रेड में कितने लाभकारी थे। अकेले कुल लाभ तय नहीं करती। कुछ बड़े नुकसान बहुत छोटे लाभ मिटा सकते हैं।

बहुत कम ट्रेड का सारांश भटका सकता है। बाकी आँकड़ों के साथ कुल संख्या रखें और कुछ नुकसान वाले ट्रेड भी देखें।

Properties में खर्च

नीचे पैनल के Strategy properties गियर से सेटिंग खोलकर Properties चुनें। पूँजी, मात्रा और खर्च बदल सकते हैं।

अगली दो रन तुलना का अभ्यास हैं। खर्च उदाहरण के हैं; असली बाज़ार के अलग देने होंगे।

  1. Initial capital 10000 और Order size में 1 Contracts जाँचें।
  2. Commission में 0.1 दें और % of order value चुनें। फ़ील्ड में 0.1 लिख सकते हैं।
  3. Slippage 2 टिक हो।
  4. Save करें, फिर Run Pyne code चलाकर पूरा होने दें।
रणनीति के Settings में Properties टैब के Commission और Slippage फ़ील्ड हैं।
Properties में कमीशन प्रतिशत और स्लिपेज टिक में है।

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 में भी फ़ाइलें मिलती हैं।

फिर चलाने से पहले बचाने वाला एक्सपोर्ट दूसरे नाम में कॉपी करें। केवल नतीजे का नाम सभी सेटिंग नहीं बताता।

अपने नोट में कम से कम यह रखें:

रनडेटातेज़/धीमी लंबाईमात्राकमीशनस्लिपेज
बेस रनDEMO5 / 201 यूनिट0%0 टिक
खर्च सहितDEMO5 / 201 यूनिट0.1%2 टिक

मिले नतीजे भी लिखें। अपने असली रन के आधार पर नोट में टेबल भरें।

स्वयं करके देखें

वही ट्रेड बिना खर्च और खर्च वाली रन में मिलाएँ। प्रवेश, निकास और लाभ देखें। क्या बदला और संकेत का कौन-सा नियम समान रहा?

अभ्यास का हल

औसत और क्रॉसिंग कमीशन या स्लिपेज से नहीं निकलते, इसलिए मूल संकेत नहीं बदलते। मार्केट प्रवेश और बंद करने की कीमत स्लिपेज से खराब हो सकती है। कमीशन शुद्ध नतीजा और घटाता है।

सीधी तुलना तभी है जब इनपुट, मात्रा, डेटा और भरने का मोड समान हों तथा दोनों में रणनीति ऑर्डर भर सके।

दूसरा डेटा चुनना

डेमो के बाद PyneIDE डाउनलोडर से अपना बाज़ार डेटा ले सकते हैं। कीमत, टिक, मात्रा सीमा और ट्रेड अलग होंगे। पहले डेटा देखें, फिर नतीजे मिलाएँ।

  1. बाएँ Pyne में Data शीर्षक पर माउस रखें। बादल से नीचे तीर वाला Download Data… दबाएँ। Symbol Browser खुलेगा। Data पर दाएँ क्लिक से भी मिलता है।
  2. Provider में सेवा चुनें। तस्वीर में ccxt है; इसमें Broker से खास डेटा स्रोत चुनें।
  3. फ़िल्टर में बाज़ार नाम लिखें। तस्वीर में coinbase का BTC/USD स्पॉट बाज़ार है। पूरा नाम देखें: समान शुरुआत वाले अलग बाज़ार हो सकते हैं।
  4. Timeframe 1D, From 365 days back रखें। To में now डाउनलोड के समय तक डेटा माँगता है।
  5. Download दबाकर पूरा होने दें।
PyneIDE Symbol Browser में ccxt, coinbase का BTC/USD स्पॉट बाज़ार और दैनिक टाइमफ़्रेम चुना है।
Symbol Browser में स्रोत, बाज़ार, टाइमफ़्रेम और अवधि मिलकर डाउनलोड डेटा चुनते हैं।

दाईं जानकारी में mintick टिक आकार, pointvalue पॉइंट वैल्यू और mincontract न्यूनतम मात्रा है। अपना डेटा लेते समय भी देखें। उपलब्धता और पहुँच सेवा पर निर्भर हैं; यहाँ चुना डेटा माँगना ट्रेडिंग खाते का इस्तेमाल नहीं है।

डाउनलोड Data में आता है। रणनीति ग्राफ़ के ऊपर बाज़ार नाम दबाकर नया डेटा चुनें। ग्राफ़ दोबारा बनता है; इनपुट और गुण फिर भी जाँचें।

डाउनलोड की अवधि निश्चित कैंडल संख्या नहीं देती: सेवा की उपलब्ध हिस्ट्री, कारोबारी दिन और गायब अवधि मायने रखते हैं। नया डाउनलोड श्रृंखला बदल सकता है, इसलिए तुलना के लिए डेटा और उसकी मेटाडेटा फ़ाइल बचाएँ।

रन का अर्थ समझना

बैकटेस्ट नियम, डेटा और निष्पादन मॉडल के मेल से गणना करता है। बताता है कि कोड वर्णन के अनुसार काम करता है या नहीं और मॉडल में कैसा होता। भविष्य का डेटा नतीजे में नहीं है।

उसी डेटा पर बार-बार पैरामीटर बदलें तो उसी के अनुरूप नियम मिल सकता है। सेटिंग में इस्तेमाल न हुई अलग अवधि जाँचना दूसरा सवाल है। इसलिए अंतिम प्रोजेक्ट में सही काम और सेटिंग की तुलना अलग जाँचेंगे।