लेख में डिजिटल मुद्राओं के लिए उच्च आवृत्ति लेनदेन रणनीतियों पर चर्चा की गई है, जिसमें लाभ के स्रोत (मुख्य रूप से बाजार में भारी उतार-चढ़ाव और एक्सचेंज की कार्यवाही के लिए कमीशन से) के साथ-साथ पेंडिंग स्थिति और स्थिति नियंत्रण के मुद्दे शामिल हैं, साथ ही साथ लेनदेन को पैरेटो वितरण का उपयोग करके मॉडलिंग करने के तरीके भी शामिल हैं। इसके अलावा, बिआन द्वारा प्रदान किए गए प्रति-ट्रेड और सर्वश्रेष्ठ पेंडिंग ऑर्डर डेटा का संदर्भ दिया गया है, और बाद के लेखों में उच्च आवृत्ति लेनदेन रणनीतियों के अन्य मुद्दों पर गहन चर्चा करने की योजना है।
मैंने पहले दो लेख लिखे हैं डिजिटल मुद्राओं के उच्च आवृत्ति लेनदेन के बारे मेंडिजिटल मुद्रा के लिए उच्च आवृत्ति रणनीति का विस्तार से परिचय, 5 तार 80 गुना, उच्च आवृत्ति रणनीति की शक्ति... लेकिन केवल अनुभव साझा करने के लिए, व्यापक रूप से बात करने के लिए... इस बार मैं एक श्रृंखला लिखने की योजना बना रहा हूं, शुरुआत से उच्च आवृत्ति व्यापार के विचार का परिचय देने के लिए, मैं जितना संभव हो उतना संक्षिप्त होने की उम्मीद करता हूं, लेकिन अपने सीमित स्तर के कारण, उच्च आवृत्ति व्यापार के बारे में गहराई से समझ नहीं है, यह लेख केवल कुंजी फेंकने के लिए है, आशा है कि भगवान सही हैं.
जैसा कि पहले के लेखों में उल्लेख किया गया है, उच्च आवृत्ति रणनीति विशेष रूप से उन बाजारों के लिए उपयुक्त है जहां बाजार में बहुत तेजी से उतार-चढ़ाव होता है। एक व्यापारिक किस्म का अध्ययन करें, जो कम समय में कीमतों में बदलाव करता है, जिसमें समग्र रुझान और कंपन शामिल होते हैं। यदि हम सही ढंग से ट्रेंड परिवर्तनों का अनुमान लगा सकते हैं, तो निश्चित रूप से पैसा कमा सकते हैं, लेकिन यह सबसे कठिन है, यह लेख मुख्य रूप से उच्च आवृत्ति निर्माता रणनीति के बारे में है, इस मुद्दे को शामिल नहीं करेगा।
1.策略同时挂买单和卖单,第一个问题就是在哪里挂单。挂的离盘口越近,成交的概率越高,但在剧烈波动的行情中,瞬间成交的价格可能离盘口较远,挂的那太近没有能吃到足够的利润。挂的太远的单子成交概率又低。这是一个需要优化的问题。
2.控制仓位。为了控制风险,策略就不能长时间累计过多的仓位。可以通过控制挂单距离、挂单量、总仓位限制等办法解决。
उपरोक्त उद्देश्यों को प्राप्त करने के लिए, लेनदेन की संभावना की संभावना, लेनदेन के लाभ, बाजार अनुमान आदि के कई पहलुओं पर मॉडलिंग अनुमानों की आवश्यकता होती है, इस विषय पर कई लेख और पेपर हैं, जो उच्च-आवृत्ति व्यापार, ऑर्डरबुक आदि कीवर्ड में पाए जा सकते हैं। ऑनलाइन भी बहुत सारी सिफारिशें हैं, यहां नहीं। इसके अलावा, एक विश्वसनीय और तेज़ प्रतिक्रिया प्रणाली स्थापित करना सबसे अच्छा है, हालांकि उच्च-आवृत्ति रणनीति वास्तविक रूप से रणनीति की प्रभावशीलता को सत्यापित करना आसान है, लेकिन प्रतिक्रिया अभी भी अधिक मार्ग प्रदान कर सकती है और गलतफहमी की लागत को कम कर सकती है।
Binance ने एक-एक लेन-देन और सबसे अच्छे लंबित ऑर्डर डेटा प्रदान किए हैं।डाउनलोड करें, गहराई के डेटा को एपीआई के साथ डाउनलोड करने की आवश्यकता होती है, जिसे श्वेतसूची में रखा जाता है, या फिर इसे स्वयं एकत्र किया जा सकता है। पुनर्मूल्यांकन उद्देश्यों के लिए, पुनर्मूल्यांकन के लिए उपयोग किए जाने वाले लेनदेन डेटा को एकत्र किया जा सकता है। यह लेख HOOKUSDT-aggTrades-2023-01-27 के डेटा का उदाहरण देता है।
from datetime import date,datetime
import time
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
एक-एक लेनदेन में निम्नलिखित शामिल हैंः
आप देख सकते हैं कि उस दिन 660,000 लेनदेन डेटा थे, और लेनदेन सक्रिय थे.
trades = pd.read_csv('COMPUSDT-aggTrades-2023-07-02.csv')
trades
664475 पंक्तियाँ × 7 स्तंभ
agg_trade_id | मूल्य | मात्रा | first_trade_id | last_trade_id | लेन-देन_समय | is_buyer_maker |
---|---|---|---|---|---|---|
120719552 | 52.42 | 22.087 | 207862988 | 207862990 | 1688256004603 | गलत |
120719553 | 52.41 | 29.314 | 207862991 | 207863002 | 1688256004623 | सच |
120719554 | 52.42 | 0.945 | 207863003 | 207863003 | 1688256004678 | गलत |
120719555 | 52.41 | 13.534 | 207863004 | 207863006 | 1688256004680 | सच |
… | … | … | … | … | … | … |
121384024 | 68.29 | 10.065 | 210364899 | 210364905 | 1688342399863 | गलत |
121384025 | 68.30 | 7.078 | 210364906 | 210364908 | 1688342399948 | गलत |
121384026 | 68.29 | 7.622 | 210364909 | 210364911 | 1688342399979 | सच |
पहले डेटा को संसाधित किया जाता है, मूल ट्रेडों को भुगतान के लिए सक्रिय लेनदेन समूह और बिक्री के लिए सक्रिय लेनदेन समूह में विभाजित किया जाता है। इसके अलावा, मूल संचयी लेनदेन का डेटा एक ही समय में एक ही कीमत पर एक ही दिशा में एक डेटा है, एक सक्रिय लेनदेन की मात्रा 100 हो सकती है, यदि कई लेनदेन में विभाजित किया जाता है और कीमतें अलग-अलग होती हैं, जैसे कि 60 और 40 के लिए दो टुकड़े, तो दो डेटा उत्पन्न होते हैं, जो भुगतान के लेनदेन के अनुमान को प्रभावित करते हैं। इसलिए, लेनदेन के आधार पर एक बार फिर से संचयी करने की आवश्यकता होती है। संचयीकरण के बाद डेटा की मात्रा 140,000 कम हो जाती है।
trades['date'] = pd.to_datetime(trades['transact_time'], unit='ms')
trades.index = trades['date']
buy_trades = trades[trades['is_buyer_maker']==False].copy()
sell_trades = trades[trades['is_buyer_maker']==True].copy()
buy_trades = buy_trades.groupby('transact_time').agg({
'agg_trade_id': 'last',
'price': 'last',
'quantity': 'sum',
'first_trade_id': 'first',
'last_trade_id': 'last',
'is_buyer_maker': 'last',
'date': 'last',
'transact_time':'last'
})
sell_trades = sell_trades.groupby('transact_time').agg({
'agg_trade_id': 'last',
'price': 'last',
'quantity': 'sum',
'first_trade_id': 'first',
'last_trade_id': 'last',
'is_buyer_maker': 'last',
'date': 'last',
'transact_time':'last'
})
buy_trades['interval']=buy_trades['transact_time'] - buy_trades['transact_time'].shift()
sell_trades['interval']=sell_trades['transact_time'] - sell_trades['transact_time'].shift()
print(trades.shape[0] - (buy_trades.shape[0]+sell_trades.shape[0]))
146181
उदाहरण के लिए, भुगतान के लिए, पहले एक सीधा आरेख बनाएं, और आप लंबे समय तक प्रभाव को बहुत स्पष्ट रूप से देख सकते हैं, अधिकांश डेटा सबसे बाईं ओर एक बिंदु पर केंद्रित है, लेकिन कुछ बड़े लेनदेन भी पूंछ पर वितरित किए गए हैं।
buy_trades['quantity'].plot.hist(bins=200,figsize=(10, 5));
为了观察方便,截掉尾部观察.可以看到成交量越大,出现频率越低,且减少的趋势更快。
buy_trades['quantity'][buy_trades['quantity']<200].plot.hist(bins=200,figsize=(10, 5));
लेन-देन से संतुष्ट वितरणों के बारे में बहुत कुछ किया गया है। यह एक संयोग वितरण है जो सांख्यिकीय भौतिकी और सामाजिक विज्ञान में आम है। एक संयोग वितरण में, घटना का आकार (या आवृत्ति) घटना के आकार के कुछ नकारात्मक सूचकांक के बराबर होता है। इस प्रकार के वितरण की मुख्य विशेषता यह है कि बड़ी घटनाओं (यानी, औसत से दूर की घटनाओं) की घटना की आवृत्ति कई अन्य वितरणों में अपेक्षित से अधिक होती है। यह संयोग वितरण की विशेषता है।
नीचे दिए गए चित्र में, लेन-देन की संभावना किसी मूल्य से अधिक है, नीली रेखा वास्तविक संभावना है, और लकीरें अनुकरणीय संभावना हैं, यहां विशिष्ट पैरामीटर को उलझाने के बिना, यह देखा जा सकता है कि यह वास्तव में पैराटेटो वितरण को पूरा करता है। चूंकि ऑर्डर की मात्रा 0 से अधिक है, इसकी संभावना 1 है, और मानकीकरण को पूरा करने के लिए, इसके वितरण समीकरण का रूप इस प्रकार होना चाहिएः
जहाँ N मानकीकृत पैरामीटर है. यहाँ औसत लेनदेन M का चयन किया गया है, अल्फा 2.06 का चयन किया गया है. विशिष्ट अल्फा का अनुमान तब किया जा सकता है जब D = N P मानों के साथ उलटा हो जाता है. विशेष रूप सेः अल्फा = log ((P ((d>M)) /log ((2)) । अलग-अलग बिंदुओं का चयन करके अल्फा लेने का मूल्य थोड़ा भिन्न होगा।
depths = range(0, 250, 2)
probabilities = np.array([np.mean(buy_trades['quantity'] > depth) for depth in depths])
alpha = np.log(np.mean(buy_trades['quantity'] > mean_quantity))/np.log(2)
mean_quantity = buy_trades['quantity'].mean()
probabilities_s = np.array([(1+depth/mean_quantity)**alpha for depth in depths])
plt.figure(figsize=(10, 5))
plt.plot(depths, probabilities)
plt.plot(depths, probabilities_s)
plt.xlabel('Depth')
plt.ylabel('Probability of execution')
plt.title('Execution probability at different depths')
plt.grid(True)
plt.figure(figsize=(10, 5))
plt.grid(True)
plt.title('Diff')
plt.plot(depths, probabilities_s-probabilities);
लेकिन यह अनुमान केवल इस तरह दिखता है कि हमने उपरोक्त चित्र में अनुकरणीय मूल्य और वास्तविक मूल्य के बीच अंतर को चित्रित किया है। यदि लेनदेन छोटा है तो विचलन बहुत बड़ा है, या 10% के करीब भी है। पैरामीटर अनुमान के दौरान इस बिंदु की संभावना को अधिक सटीक बनाने के लिए अलग-अलग बिंदुओं का चयन किया जा सकता है, लेकिन विचलन की समस्या को भी हल नहीं किया जा सकता है। यह लय वितरण और वास्तविक वितरण के बीच अंतर द्वारा निर्धारित है, और अधिक सटीक परिणाम प्राप्त करने के लिए लय वितरण के समीकरण में संशोधन की आवश्यकता है। विशिष्ट प्रक्रिया का वर्णन नहीं किया गया है, कुल मिलाकर, प्रकाश चमक गया है, वास्तविकता इस प्रकार होनी चाहिएः
संक्षेप में, यहाँ r = q/M के साथ मानकीकृत लेनदेन का प्रतिनिधित्व किया गया है. पैरामीटर को ऊपर के समान तरीके से अनुमानित किया जा सकता है. नीचे दिए गए चित्र में आप देख सकते हैं कि संशोधन के बाद अधिकतम विचलन 2% से अधिक नहीं है। यह सैद्धांतिक रूप से आगे भी संशोधित किया जा सकता है, लेकिन यह सटीकता पर्याप्त है।
depths = range(0, 250, 2)
probabilities = np.array([np.mean(buy_trades['quantity'] > depth) for depth in depths])
mean = buy_trades['quantity'].mean()
alpha = np.log(np.mean(buy_trades['quantity'] > mean))/np.log(2.05)
probabilities_s = np.array([(((1+20**(-depth/mean))*depth+mean)/mean)**alpha for depth in depths])
plt.figure(figsize=(10, 5))
plt.plot(depths, probabilities)
plt.plot(depths, probabilities_s)
plt.xlabel('Depth')
plt.ylabel('Probability of execution')
plt.title('Execution probability at different depths')
plt.grid(True)
plt.figure(figsize=(10, 5))
plt.grid(True)
plt.title('Diff')
plt.plot(depths, probabilities_s-probabilities);
लेन-देन वितरण के लिए अनुमानित समीकरणों के साथ, ध्यान दें कि समीकरण की संभावना वास्तविक संभावना नहीं है, बल्कि एक सशर्त संभावना है। इस बिंदु पर यह प्रश्न का उत्तर दिया जा सकता है कि यदि अगला आदेश होता है, तो इस आदेश की संभावना एक निश्चित मूल्य से अधिक है? यह भी कहा जा सकता है कि विभिन्न गहराई के आदेशों के लेनदेन की संभावना क्या है ((आदर्श रूप से, कम कठोर, सैद्धांतिक रूप से ऑर्डर बुक में नए आदेश और निकासी हैं, और एक ही गहराई के साथ कतारें हैं) ।) ।
यह लेख लगभग समाप्त हो गया है, और अभी भी बहुत सारे प्रश्न हैं जिनका उत्तर देने की आवश्यकता है, और निम्नलिखित लेखों की श्रृंखला में उत्तर देने का प्रयास किया जाएगा।
ओक मात्रा 🐂🍺
fmzeroयह बहुत बड़ा है!
घासcsv बहुत बड़ा है, आप इसे स्वयं डाउनलोड कर सकते हैं