بٹ کوائن کی قیمت کیسے چلتی ہے؟ اس کی قیمتوں میں اضافے اور کمی کی وجوہات کیا ہیں؟ کیا مختلف کوکیز کی مارکیٹ کی قیمتیں آپس میں جڑی ہوئی ہیں یا بڑی حد تک آزاد ہیں؟ ہم آگے کیا ہونے کا اندازہ کیسے لگاسکتے ہیں؟
ڈیجیٹل کرنسیوں جیسے بٹ کوائن اور ایتھرین کے بارے میں مضامین اب مختلف قیاس آرائیوں سے بھرے ہوئے ہیں ، اور سینکڑوں خود کو ماہر قرار دینے والے ایسے رجحانات کی وکالت کر رہے ہیں جن کی وہ توقع کرتے ہیں۔ ان میں سے بہت سے تجزیوں میں بنیادی اعداد و شمار اور شماریاتی ماڈل کی ٹھوس بنیاد کا فقدان ہے۔
اس مضمون کا مقصد پیئٹن کا استعمال کرتے ہوئے ڈیجیٹل کرنسی تجزیہ کے لئے ایک مختصر تعارف فراہم کرنا ہے۔ ہم مختلف ڈیجیٹل کرنسیوں کے اعداد و شمار کو ایک سادہ پیئٹن اسکرپٹ کے ذریعہ تلاش ، تجزیہ اور تصور کریں گے۔ اس دوران ، ہم ان اتار چڑھاؤ والے مارکیٹ کے رویوں اور ان کے ارتقاء کے بارے میں دلچسپ رجحانات کو دریافت کریں گے۔
یہ ایک مضمون نہیں ہے جس میں ڈیجیٹل کرنسیوں کی وضاحت کی گئی ہے ، اور نہ ہی یہ کہ کون سی مخصوص کرنسیاں بڑھیں گی اور کون سی گریں گی۔ اس کے بجائے ، ہم اس سبق میں صرف خام اعداد و شمار حاصل کرنے اور اعداد و شمار میں پوشیدہ کہانیوں کو دریافت کرنے پر توجہ مرکوز کر رہے ہیں۔
یہ سبق ہر قسم کی مہارت کی سطح کے شوقین ، انجینئرز اور ڈیٹا سائنسدانوں کے لئے تیار کیا گیا ہے۔ چاہے آپ انڈسٹری کا بڑا آدمی ہو یا کم عمر پروگرامر ، آپ کو صرف اس بات کی مہارت کی ضرورت ہے کہ آپ کو پیتھون پروگرامنگ زبان کی بنیادی معلومات اور کمانڈ لائن آپریشن کے بارے میں کافی معلومات حاصل ہوں (صرف ایک ڈیٹا سائنس پروجیکٹ ترتیب دینے کے لئے) ۔
发明者量化平台FMZ.COM除了提供优质的各大主流交易所的数据源,还提供一套丰富的API接口以帮助我们在完成数据的分析后进行自动化交易。这套接口包括查询账户信息,查询各个主流交易所的高,开,低,收价格,成交量,各种常用技术分析指标等实用工具,特别是对于实际交易过程中连接各大主流交易所的公共API接口,提供了强大的技术支持。
یہ تمام خصوصیات ایک ایسا نظام ہے جو ڈوکر کی طرح ہے اور آپ کو صرف ایسا کرنا ہے کہ آپ اپنی کلاؤڈ کمپیوٹنگ سروسز خریدیں یا کرایہ پر لیں اور پھر ڈوکر کے نظام کو مکمل طور پر تعینات کریں۔
ڈوکر سسٹم کو مینیجر سسٹم کہا جاتا ہے۔
اس کے علاوہ ، آپ کو یہ بھی جاننے کی ضرورت ہے کہ کس طرح ہاسٹلروں اور روبوٹ کو تعینات کرنا ہے۔https://www.fmz.com/bbs-topic/4140
اگر آپ اپنے کلاؤڈ کمپیوٹنگ سرورز کی تعیناتی کے لئے میزبان خریدنا چاہتے ہیں تو ، آپ کو اس مضمون کا حوالہ دینا چاہئے:https://www.fmz.com/bbs-topic/2848
ایک بار جب ہم نے کلاؤڈ سروسز اور مینیجر سسٹم کو کامیابی کے ساتھ تعینات کرلیا ہے، تو اگلا مرحلہ یہ ہے کہ ہم اب تک کی سب سے بڑی Python ٹیمپلیٹ: Anaconda کو انسٹال کریں.
تمام متعلقہ پروگرام کے ماحول (تبعیت لائبریری، ورژن مینجمنٹ وغیرہ) کو لاگو کرنے کے لئے سب سے آسان طریقہ Anaconda کا استعمال کرنا ہے۔ یہ ایک پیکڈ پیٹن ڈیٹا سائنس ماحولیاتی نظام اور انحصار لائبریری مینیجر ہے۔
چونکہ ہم Anaconda کو کلاؤڈ سروسز پر انسٹال کرتے ہیں، لہذا ہم سفارش کرتے ہیں کہ کلاؤڈ سرورز میں Anaconda کا کمانڈ لائن ورژن نصب کیا جائے۔
Anaconda انسٹال کرنے کے لئے، براہ کرم Anaconda کی سرکاری گائیڈ دیکھیں:https://www.anaconda.com/distribution/
اگر آپ ایک تجربہ کار پائیتھون پروگرامر ہیں اور آپ کو اناکونڈا استعمال کرنے کی ضرورت محسوس نہیں ہوتی ہے تو یہ بالکل ٹھیک ہے۔ میں یہ فرض کروں گا کہ آپ کو ضروری انحصار والے ماحول کو انسٹال کرنے میں مدد کی ضرورت نہیں ہے ، آپ براہ راست دوسرے حصے پر جاسکتے ہیں۔
ایک بار جب Anaconda انسٹال ہوجائے تو ہمیں اپنے انحصار پیکجوں کا انتظام کرنے کے لئے ایک نیا ماحول بنانے کی ضرورت ہے۔
conda create --name cryptocurrency-analysis python=3
ہمارے منصوبے کے لیے ایک نیا اناکونڈا ماحول بنانے کے لیے۔
اگلا، درج کریں
source activate cryptocurrency-analysis (linux/MacOS操作)
或者
activate cryptocurrency-analysis (windows操作系统)
اس ماحول کو متحرک کرنے کے لئے
اگلا، درج کریں:
conda install numpy pandas nb_conda jupyter plotly
اس پروجیکٹ کو انسٹال کرنے کے لئے درکار تمام انحصار پیکجوں کا استعمال کریں۔
نوٹ: اگر آپ اپنے کمپیوٹر پر بہت سارے پطرون پروجیکٹس چلانے کا ارادہ رکھتے ہیں تو ، تنازعات سے بچنے کے لئے مختلف پروجیکٹس کے انحصار پیک (سافٹ ویئر لائبریری اور پیک) کو الگ کرنا مددگار ہے۔ انانونڈا ہر پروجیکٹ کے انحصار پیک کے لئے ایک خاص ماحول کی فہرست بناتا ہے تاکہ تمام پیک کو مناسب طریقے سے منظم اور الگ کیا جاسکے۔
ایک بار جب ماحول اور انحصار پیکج انسٹال ہوجائیں تو چلیں
jupyter notebook
آئی پیتھون کور شروع کریں اور اپنے براؤزر میں http://localhost:8888/اس کے بعد، آپ کو ایک نیا پیڈون نوٹ بک بنانا ہے اور اس بات کو یقینی بنانا ہے کہ اس کا استعمال کیا جائے:
Python [conda env:cryptocurrency-analysis]
نیوکلیئر
ایک نیا خالی جیوپیٹر نوٹ بک بنائیں، اور پھر پہلی چیز جو ہم کریں گے وہ یہ ہے کہ ضروری انحصار پیکجوں کو درآمد کریں۔
import os
import numpy as np
import pandas as pd
import pickle
from datetime import datetime
ہم نے Plotly کو بھی درآمد کرنا ہے اور آف لائن موڈ کو چالو کرنا ہے۔
import plotly.offline as py
import plotly.graph_objs as go
import plotly.figure_factory as ff
py.init_notebook_mode(connected=True)
تیاریاں مکمل ہو چکی ہیں اور اب ہم تجزیہ کرنے کے لیے اعداد و شمار حاصل کرنے کے لیے تیار ہیں۔ سب سے پہلے، ہم بٹ کوائن کی قیمت کے اعداد و شمار کو انوینٹرز کے کوانٹیمیٹڈ پلیٹ فارم کے API کے ذریعے حاصل کریں گے۔
اس کے لیے گیٹ ٹکر کا استعمال کیا جائے گا۔ ان دونوں افعال کے استعمال کے بارے میں تفصیلات کے لیے ملاحظہ کریں:https://www.fmz.com/api
ہم نے ایک فنکشن لکھا ہے جو Quandl سے ڈیٹا ڈاؤن لوڈ اور ہم آہنگ کرنے کے لئے استعمال کیا جاتا ہے.quandl.comیہ ایک مفت مالیاتی ڈیٹا انٹرفیس ہے جو بیرون ملک بہت مشہور ہے۔ موجد کی مقدار سازی پلیٹ فارم بھی اسی طرح کا ڈیٹا انٹرفیس پیش کرتا ہے ، جو بنیادی طور پر حقیقی وقت کی تجارت کے وقت استعمال ہوتا ہے۔ چونکہ یہ مضمون بنیادی طور پر ڈیٹا تجزیہ کے لئے ہے ، لہذا ہم یہاں Quandl کے اعداد و شمار کا استعمال کرتے ہیں۔
جب آپ حقیقی وقت میں تجارت کرتے ہیں تو ، آپ براہ راست پیتھون میں گیٹ ٹکر اور گیٹ ریکارڈز افعال کو کال کرکے قیمت کا ڈیٹا حاصل کرسکتے ہیں۔ ان کے استعمال کے بارے میں دیکھیں:https://www.fmz.com/api
def get_quandl_data(quandl_id):
# 下载和缓冲来自Quandl的数据列
cache_path = '{}.pkl'.format(quandl_id).replace('/','-')
try:
f = open(cache_path, 'rb')
df = pickle.load(f)
print('Loaded {} from cache'.format(quandl_id))
except (OSError, IOError) as e:
print('Downloading {} from Quandl'.format(quandl_id))
df = quandl.get(quandl_id, returns="pandas")
df.to_pickle(cache_path)
print('Cached {} at {}'.format(quandl_id, cache_path))
return df
یہاں پکسل لائبریری کا استعمال ڈیٹا کو ترتیب دینے اور ڈاؤن لوڈ کردہ ڈیٹا کو فائل میں محفوظ کرنے کے لئے کیا جاتا ہے تاکہ پروگرام ہر بار چلتے وقت ایک ہی ڈیٹا کو دوبارہ ڈاؤن لوڈ نہ کرے۔ یہ فنکشن پانڈا ڈیٹا فریم فارمیٹ میں ڈیٹا واپس کرے گا۔ اگر آپ ڈیٹا فریم کے تصور سے زیادہ واقف نہیں ہیں تو ، آپ اسے ایک طاقتور ایکسل شیٹ کی طرح تصور کرسکتے ہیں۔
ہم کرکن بٹ کوائن ایکسچینج کو بطور مثال لیتے ہیں اور اس کی قیمت سے شروع کرتے ہیں۔
# 获取Kraken比特币交易所的价格
btc_usd_price_kraken = get_quandl_data('BCHARTS/KRAKENUSD')
head () طریقہ استعمال کرکے ڈیٹا باکس کی پہلی پانچ لائنیں دیکھیں۔
btc_usd_price_kraken.head()
اس کا نتیجہ یہ نکلا:
بی ٹی سی | کھولیں | اونچا | کم | بند | حجم (بی ٹی سی) | حجم (کرنسی) | وزن شدہ قیمت |
---|---|---|---|---|---|---|---|
2014-01-07 | 874.67040 | 892.06753 | 810.00000 | 810.00000 | 15.622378 | 13151.472844 | 841.835522 |
2014-01-08 | 810.00000 | 899.84281 | 788.00000 | 824.98287 | 19.182756 | 16097.329584 | 839.156269 |
2014-01-09 | 825.56345 | 870.00000 | 807.42084 | 841.86934 | 8.158335 | 6784.249982 | 831.572913 |
2014-01-10 | 839.99000 | 857.34056 | 817.00000 | 857.33056 | 8.024510 | 6780.220188 | 844.938794 |
2014-01-11 | 858.20000 | 918.05471 | 857.16554 | 899.84105 | 18.748285 | 16698.566929 | 890.671709 |
اگلا مرحلہ یہ ہے کہ ہم ایک سادہ ٹیبل بنائیں تاکہ اعداد و شمار کی درستگی کو دیکھنے کے طریقوں سے تصدیق کی جاسکے۔
# 做出BTC价格的表格
btc_trace = go.Scatter(x=btc_usd_price_kraken.index, y=btc_usd_price_kraken['Weighted Price'])
py.iplot([btc_trace])
这里,我们用Plotly来完成可视化部分。相对于使用一些更成熟的Python数据可视化库,比如Matplotlib,用Plotly是一个不那么普遍的选择,但Plotly确实是一个不错的选择,因为它可以调用D3.js的充分交互式图表。这些图表有非常漂亮的默认设置,易于探索,而且非常方便嵌入到网页中。
ایک چھوٹی سی ٹپ: پیدا کردہ چارٹ کو بڑے پیمانے پر تبادلوں پر بٹ کوائن کی قیمت کے چارٹ (جیسے OKEX ، Binance یا Huobi پر چارٹ) کے ساتھ موازنہ کیا جاسکتا ہے تاکہ یہ یقینی بنایا جاسکے کہ ڈاؤن لوڈ کردہ اعداد و شمار کی مجموعی طور پر مطابقت ہے۔
محتاط قارئین نے شاید محسوس کیا ہوگا کہ مندرجہ بالا اعداد و شمار میں سے کچھ میں اعداد و شمار کی کمی ہے ، خاص طور پر 2014 کے آخر اور 2016 کے اوائل میں۔ خاص طور پر کرکن ایکسچینج میں ، یہ اعداد و شمار کی کمی خاص طور پر واضح ہے۔ ہم یقینی طور پر نہیں چاہتے ہیں کہ یہ لاپتہ اعداد و شمار قیمتوں کے تجزیے پر اثر انداز ہوں۔
ڈیجیٹل کرنسی کے تبادلے کی خصوصیت یہ ہے کہ طلب اور رسد کے تعلقات کرنسی کی قیمت کا تعین کرتے ہیں۔ اس وجہ سے ، کسی بھی تجارت کی قیمت مارکیٹ کی سب سے بڑی قیمت نہیں بن سکتی ہے۔ اس مسئلے کو حل کرنے کے لئے ، اور ابھی ذکر کردہ اعداد و شمار کی کمی (ممکنہ طور پر تکنیکی خرابیوں اور اعداد و شمار کی غلطیوں کی وجہ سے) ، ہم دنیا کے تین بڑے بٹ کوائن تبادلے سے ڈیٹا ڈاؤن لوڈ کریں گے اور اس کے بعد اوسط بٹ کوائن کی قیمت کا حساب لگائیں گے۔
آئیے شروع کرتے ہیں، ہر ایک ایکسچینج کے اعداد و شمار کو ڈاؤن لوڈ کرتے ہیں اور ان کو ایک ڈیٹا بیس میں ڈالتے ہیں جس میں لغت کی اقسام شامل ہیں۔
# 下载COINBASE,BITSTAMP和ITBIT的价格数据
exchanges = ['COINBASE','BITSTAMP','ITBIT']
exchange_data = {}
exchange_data['KRAKEN'] = btc_usd_price_kraken
for exchange in exchanges:
exchange_code = 'BCHARTS/{}USD'.format(exchange)
btc_exchange_df = get_quandl_data(exchange_code)
exchange_data[exchange] = btc_exchange_df
اگلا مرحلہ، ہم ایک خاص فنکشن کی وضاحت کریں گے جو اعداد و شمار کی مختلف کالموں میں مشترکہ کالموں کو ایک نئی کالم میں ضم کرے گا۔ آئیے اسے merge_dfs_on_column فنکشن کہتے ہیں۔
def merge_dfs_on_column(dataframes, labels, col):
'''Merge a single column of each dataframe into a new combined dataframe'''
series_dict = {}
for index in range(len(dataframes)):
series_dict[labels[index]] = dataframes[index][col]
return pd.DataFrame(series_dict)
اب ، اعداد و شمار کے تمام ٹکڑوں کو ایک ساتھ جوڑ کر ، ہر ڈیٹا سیٹ پر مبنی قیمتوں کی درجہ بندی کریں۔
# 整合所有数据帧
btc_usd_datasets = merge_dfs_on_column(list(exchange_data.values()), list(exchange_data.keys()), 'Weighted Price')
آخر میں، ہم نے ان کے اعداد و شمار کو درست اور مکمل کرنے کے لئے جمع شدہ اعداد و شمار کے آخری پانچ لائنوں کو دیکھنے کے لئے ایک ہلکا پھلکا طریقہ استعمال کیا.
btc_usd_datasets.tail()
اس کے نتیجے میں:
بی ٹی سی | BITSTAMP | COINBASE | آئی ٹی بی آئی ٹی | کرکن |
---|---|---|---|---|
2017-08-14 | 4210.154943 | 4213.332106 | 4207.366696 | 4213.257519 |
2017-08-15 | 4101.447155 | 4131.606897 | 4127.036871 | 4149.146996 |
2017-08-16 | 4193.426713 | 4193.469553 | 4190.104520 | 4187.399662 |
2017-08-17 | 4338.694675 | 4334.115210 | 4334.449440 | 4346.508031 |
2017-08-18 | 4182.166174 | 4169.555948 | 4175.440768 | 4198.277722 |
جیسا کہ اوپر کی شکل سے دیکھا جا سکتا ہے کہ یہ اعداد و شمار ہماری توقعات کے مطابق ہیں، اعداد و شمار کا دائرہ کار تقریباً ایک جیسا ہے، صرف مختلف ایکسچینجز کی تاخیر یا ان کی مخصوص خصوصیات کی بنیاد پر تھوڑا سا مختلف ہے۔
تجزیاتی منطق سے، اگلا مرحلہ یہ ہے کہ اعداد و شمار کو ایک دوسرے کے ساتھ موازنہ کرنے کے لئے. اس کے لئے، ہم نے پہلے ایک معاون فعل کی وضاحت کرنے کی ضرورت ہے، جس میں ایک لائن کمانڈ فراہم کرنے کے ذریعے اعداد و شمار کی پیداوار کے چارٹ کا استعمال کرتے ہوئے، ہم اسے ڈی ایف_اسکیٹر فنکشن کہتے ہیں.
def df_scatter(df, title, seperate_y_axis=False, y_axis_label='', scale='linear', initial_hide=False):
'''Generate a scatter plot of the entire dataframe'''
label_arr = list(df)
series_arr = list(map(lambda col: df[col], label_arr))
layout = go.Layout(
title=title,
legend=dict(orientation="h"),
xaxis=dict(type='date'),
yaxis=dict(
title=y_axis_label,
showticklabels= not seperate_y_axis,
type=scale
)
)
y_axis_config = dict(
overlaying='y',
showticklabels=False,
type=scale )
visibility = 'visible'
if initial_hide:
visibility = 'legendonly'
# 每个系列的表格跟踪
trace_arr = []
for index, series in enumerate(series_arr):
trace = go.Scatter(
x=series.index,
y=series,
name=label_arr[index],
visible=visibility
)
# 为系列添加单独的轴
if seperate_y_axis:
trace['yaxis'] = 'y{}'.format(index + 1)
layout['yaxis{}'.format(index + 1)] = y_axis_config
trace_arr.append(trace)
fig = go.Figure(data=trace_arr, layout=layout)
py.iplot(fig)
آپ کو سمجھنے میں آسانی کے لئے، اس مضمون میں اس معاون فنکشن کے منطقی اصولوں پر بہت زیادہ بحث نہیں کی جائے گی۔ مزید معلومات کے لیے، پانڈاس اور پلاٹلی کی سرکاری دستاویزات دیکھیں۔
اب ہم بٹ کوائن کی قیمت کے اعداد و شمار کا آسانی سے گراف بنا سکتے ہیں!
# 绘制所有BTC交易价格
df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange')
مندرجہ بالا گراف سے یہ دیکھا جاسکتا ہے کہ اگرچہ یہ چاروں اعداد و شمار کے سلسلے تقریبا ایک ہی راستے پر چلتے ہیں ، لیکن ان میں کچھ غیر معمولی تبدیلیاں ہیں ، اور ہم ان غیر معمولی تبدیلیوں کو صاف کرنے کی کوشش کریں گے۔
ہم جانتے ہیں کہ بٹ کوائن کی قیمت کبھی بھی صفر کے برابر نہیں تھی، لہذا ہم نے پہلے اعداد و شمار کے خانے سے تمام صفر کو ہٹا دیا تھا۔
# 清除"0"值
btc_usd_datasets.replace(0, np.nan, inplace=True)
ڈیٹا بیس کی تعمیر نو کے بعد ، ہم زیادہ واضح گراف دیکھ سکتے ہیں ، بغیر ڈیٹا کی کمی کے۔
# 绘制修订后的数据框
df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange')
اب ہم ایک نیا کالم حساب کر سکتے ہیں: تمام تبادلے پر بٹ کوائن کی اوسط یومیہ قیمت۔
# 将平均BTC价格计算为新列
btc_usd_datasets['avg_btc_price_usd'] = btc_usd_datasets.mean(axis=1)
ایک نیا کالم بٹ کوائن کی قیمت کا انڈیکس ہے۔ ہم اسے دوبارہ ڈرا رہے ہیں تاکہ یہ معلوم کیا جا سکے کہ آیا اس اعداد و شمار میں کوئی مسئلہ نظر آتا ہے۔
# 绘制平均BTC价格
btc_trace = go.Scatter(x=btc_usd_datasets.index, y=btc_usd_datasets['avg_btc_price_usd'])
py.iplot([btc_trace])
ایسا لگتا ہے کہ واقعی کوئی مسئلہ نہیں ہے ، اور بعد میں ، ہم اس مجموعی قیمت کے سلسلے کے اعداد و شمار کا استعمال کرتے ہوئے جاری رکھیں گے تاکہ دیگر ڈیجیٹل کرنسیوں کے مقابلے میں ڈالر کے مابین تبادلہ کی شرح کا تعین کیا جاسکے۔
اب تک ، ہمارے پاس بٹ کوائن کی قیمتوں کے بارے میں ٹائم سیریل ڈیٹا موجود ہے۔ اگلا ، ہم غیر بٹ کوائن ڈیجیٹل کرنسیوں کے بارے میں کچھ اعداد و شمار دیکھیں گے ، جو کہ الٹکوئنز کے معاملے میں ہیں ، یقینا ، الٹکوئنز کا لفظ تھوڑا سا زیادہ وزن ہوسکتا ہے ، لیکن موجودہ ڈیجیٹل کرنسیوں کی حالت کے بارے میں ، مارکیٹ کی قیمتوں میں سب سے اوپر 10 کے علاوہ (جیسے بٹ کوائن ، ایتھروئن ، ای او ایس ، یو ایس ڈی ٹی وغیرہ) ، زیادہ تر کو بٹ کوائن کہا جاسکتا ہے ، اور ہمیں تجارت کے دوران ان سے دور رہنے کی کوشش کرنی چاہئے ، کیونکہ ان کی الجھن اور دھوکہ دہی بہت زیادہ ہے۔
سب سے پہلے، ہم پولونیکس ایکسچینج کے API کا استعمال کرتے ہوئے ڈیجیٹل کرنسی کے لین دین کے بارے میں اعداد و شمار کی معلومات حاصل کرتے ہیں۔ ہم نے زائرین کے بارے میں متعلقہ اعداد و شمار حاصل کرنے کے لئے دو معاون افعال کی وضاحت کی ہے ، جو بنیادی طور پر API کے ذریعہ JSON ڈیٹا کو ڈاؤن لوڈ اور کیش کرتے ہیں۔
سب سے پہلے، ہم فنکشن get_json_data کی وضاحت کرتے ہیں، جو دیئے گئے یو آر ایل سے JSON ڈیٹا کو ڈاؤن لوڈ اور کیش کرے گا۔
def get_json_data(json_url, cache_path):
'''Download and cache JSON data, return as a dataframe.'''
try:
f = open(cache_path, 'rb')
df = pickle.load(f)
print('Loaded {} from cache'.format(json_url))
except (OSError, IOError) as e:
print('Downloading {}'.format(json_url))
df = pd.read_json(json_url)
df.to_pickle(cache_path)
print('Cached {} at {}'.format(json_url, cache_path))
return df
اگلا ، ہم ایک نیا فنکشن بیان کرتے ہیں جو پولونیکس API کے لئے HTTP درخواست پیدا کرے گا اور ابھی بیان کردہ get_json_data فنکشن کو کال کرے گا تاکہ کال کے نتائج کو محفوظ کیا جاسکے۔
base_polo_url = 'https://poloniex.com/public?command=returnChartData¤cyPair={}&start={}&end={}&period={}'
start_date = datetime.strptime('2015-01-01', '%Y-%m-%d') # 从2015年开始获取数据
end_date = datetime.now() # 直到今天
pediod = 86400 # pull daily data (86,400 seconds per day)
def get_crypto_data(poloniex_pair):
'''Retrieve cryptocurrency data from poloniex'''
json_url = base_polo_url.format(poloniex_pair, start_date.timestamp(), end_date.timestamp(), pediod)
data_df = get_json_data(json_url, poloniex_pair)
data_df = data_df.set_index('date')
return data_df
مذکورہ بالا فنکشن ڈیجیٹل کرنسی کے جوڑے والے کوڈ (جیسے بی ٹی سی_ای ٹی ایچ کیڑے) نکالتا ہے اور ڈیٹا بیس کو واپس کرتا ہے جس میں دونوں کرنسیوں کی تاریخی قیمتیں شامل ہوتی ہیں۔
زیادہ تر سکے براہ راست امریکی ڈالر میں نہیں خریدے جاسکتے ہیں۔ عام طور پر ، ان کو حاصل کرنے کے لئے ، افراد کو پہلے بٹ کوائن خریدنا پڑتا ہے ، اور پھر ان کی قیمتوں کے تناسب کے مطابق ان کو بٹ کوائن میں تبدیل کرنا پڑتا ہے۔ لہذا ، ہمیں ہر ڈیجیٹل کرنسی کے لئے بٹ کوائن کے تبادلے کی شرح ڈاؤن لوڈ کرنا پڑتی ہے ، اور پھر موجودہ بٹ کوائن کی قیمت کے اعداد و شمار کو ڈالر میں تبدیل کرنا پڑتا ہے۔ ہم سب سے اوپر 9 ڈیجیٹل کرنسیوں کے لین دین کے اعداد و شمار ڈاؤن لوڈ کرتے ہیں: ایتھریم ، لٹیکوائن ، رپل ، ایتھریم کلاسیکی ، اسٹیلر ، ڈیش ، سیاکوائن ، مونرو ، اور این ای ایم ؛
altcoins = ['ETH','LTC','XRP','ETC','STR','DASH','SC','XMR','XEM']
altcoin_data = {}
for altcoin in altcoins:
coinpair = 'BTC_{}'.format(altcoin)
crypto_price_df = get_crypto_data(coinpair)
altcoin_data[altcoin] = crypto_price_df
اب ، ہمارے پاس ایک لغت ہے جس میں نو ڈیٹا بیس ہیں ، ہر ایک میں زائرین اور بٹ کوائن کے مابین تاریخی روزانہ اوسط قیمت کے اعداد و شمار ہیں۔
ایتھرئم کی قیمتوں کی فہرست کی آخری چند لائنوں سے ہم یہ فیصلہ کرسکتے ہیں کہ اعداد و شمار درست ہیں یا نہیں۔
altcoin_data['ETH'].tail()
ETH | کھولیں | اونچا | کم | بند | حجم (بی ٹی سی) | حجم (کرنسی) | وزن شدہ قیمت |
---|---|---|---|---|---|---|---|
2017-08-18 | 0.070510 | 0.071000 | 0.070170 | 0.070887 | 17364.271529 | 1224.762684 | 0.070533 |
2017-08-18 | 0.071595 | 0.072096 | 0.070004 | 0.070510 | 26644.018123 | 1893.136154 | 0.071053 |
2017-08-18 | 0.071321 | 0.072906 | 0.070482 | 0.071600 | 39655.127825 | 2841.549065 | 0.071657 |
2017-08-19 | 0.071447 | 0.071855 | 0.070868 | 0.071321 | 16116.922869 | 1150.361419 | 0.071376 |
2017-08-19 | 0.072323 | 0.072550 | 0.071292 | 0.071447 | 14425.571894 | 1039.596030 | 0.072066 |
اب، ہم بی ٹی سی اور کوکیز کے تبادلے کے اعداد و شمار کو اپنے بٹ کوائن قیمت انڈیکس کے ساتھ جوڑ سکتے ہیں تاکہ براہ راست ہر کوکی کی تاریخی قیمت (یونٹ: ڈالر) کا حساب لگائیں۔
# 将USD Price计算为每个altcoin数据帧中的新列
for altcoin in altcoin_data.keys():
altcoin_data[altcoin]['price_usd'] = altcoin_data[altcoin]['weightedAverage'] * btc_usd_datasets['avg_btc_price_usd']
یہاں، ہم نے ہر کوٹی کے ڈیٹا بیس میں ایک نئی کالم شامل کی ہے جس میں ان کی متعلقہ ڈالر کی قیمتوں کو ذخیرہ کیا گیا ہے۔
اس کے بعد، ہم پہلے سے بیان کردہ فعل merge_dfs_on_column کو دوبارہ استعمال کرسکتے ہیں تاکہ ہر ڈیجیٹل کرنسی کی ڈالر کی قیمتوں کو مربوط کرنے کے لئے ایک ضم شدہ ڈیٹا بیس بنایا جاسکے۔
# 将每个山寨币的美元价格合并为单个数据帧
combined_df = merge_dfs_on_column(list(altcoin_data.values()), list(altcoin_data.keys()), 'price_usd')
ٹھیک ہے!
اب آئیے ہم بیک وقت بٹ کوائن کی قیمت کو ضم شدہ ڈیٹا بیس میں شامل کرتے ہیں ، آخری ٹن کے طور پر۔
# 将BTC价格添加到数据帧
combined_df['BTC'] = btc_usd_datasets['avg_btc_price_usd']
اب ہمارے پاس ایک منفرد ڈیٹا بیس ہے جس میں دس ڈیجیٹل کرنسیوں کی روزانہ ڈالر کی قیمتیں شامل ہیں جن کی ہم تصدیق کر رہے ہیں۔
ہم نے پہلے کی فنکشن df_scatter کو دوبارہ بلایا ہے تاکہ تمام سککوں کی قیمتوں کو چارٹ کے طور پر دکھایا جاسکے۔
یہ چارٹ ٹھیک لگ رہا ہے، اور یہ چارٹ ہمیں گزشتہ چند سالوں میں ہر ڈیجیٹل کرنسی کے تبادلے کی قیمتوں میں ہونے والی تبدیلیوں کا ایک مکمل جائزہ دیتا ہے۔
نوٹ: یہاں ہم نے ایک ہی گراف پر تمام ڈیجیٹل کرنسیوں کا موازنہ کرنے کے لئے لوجسٹک کی وضاحت کے y محور کا استعمال کیا ہے۔ آپ دوسرے مختلف پیرامیٹرز کی قدر بھی آزما سکتے ہیں (مثال کے طور پر پیمانہ =
محتاط قارئین نے شاید محسوس کیا ہو کہ ڈیجیٹل کرنسیوں کی قیمتیں متعلقہ نظر آتی ہیں ، حالانکہ ان کی کرنسیوں کی قیمتوں میں بہت فرق ہے اور یہ بہت زیادہ اتار چڑھاؤ ہے۔ خاص طور پر اپریل 2017 میں تیزی سے بڑھنے کے بعد سے ، یہاں تک کہ بہت سی چھوٹی اتار چڑھاؤ بھی پوری مارکیٹ میں اتار چڑھاؤ کے ساتھ ہم آہنگ نظر آتی ہیں۔
تاہم ، یہ واضح ہے کہ اعداد و شمار کی حمایت سے اخذ کردہ نتائج تصویروں پر مبنی بصیرت سے کہیں زیادہ قائل ہیں۔
ہم مندرجہ بالا متعلقہ مفروضے کی توثیق پانڈا کی corr () فنکشن کے ذریعہ کرسکتے ہیں۔ اس ٹیسٹنگ کا طریقہ ڈیٹا بیس کے ہر ٹکڑے کے لئے اس کے دوسرے ٹکڑے کے مطابق پیرسن متعلقہ عوامل کا حساب لگاتا ہے۔
2017.8.22 ترمیم شدہ نوٹ: اس حصے میں ترمیم کی گئی ہے تاکہ متعلقہ عوامل کا حساب کتاب کرتے وقت قیمت کے بجائے روزانہ کی واپسی کی شرح کا استعمال کیا جاسکے۔
ایک غیر جامد وقت کی ترتیب پر مبنی براہ راست حساب کتاب (جیسے پرائمری قیمت کے اعداد و شمار) کے نتیجے میں وابستگی کے عوامل میں انحراف ہوسکتا ہے۔ اس مسئلے کا حل pct_change () طریقہ کار کا استعمال کرتے ہوئے ہے ، جس میں اعداد و شمار کے اسٹیک میں ہر قیمت کی مطلق قیمت کو اسی دن کی واپسی کی شرح میں تبدیل کیا جاتا ہے۔
مثال کے طور پر ، ہم 2016 کے لئے متعلقہ عوامل کا حساب لگاتے ہیں۔
# 计算2016年数字货币的皮尔森相关系数
combined_df_2016 = combined_df[combined_df.index.year == 2016]
combined_df_2016.pct_change().corr(method='pearson')
نام | ڈیش | ETC | ETH | ایل ٹی سی | ایس سی | ایس ٹی آر | XEM | XMR | ایکس آر پی | بی ٹی سی |
---|---|---|---|---|---|---|---|---|---|---|
ڈیش | 1.000000 | 0.003992 | 0.122695 | -0.012194 | 0.026602 | 0.058083 | 0.014571 | 0.121537 | 0.088657 | -0.014040 |
ETC | 0.003992 | 1.000000 | -0.181991 | -0.131079 | -0.008066 | -0.102654 | -0.080938 | -0.105898 | -0.054095 | -0.170538 |
ETH | 0.122695 | -0.181991 | 1.000000 | -0.064652 | 0.169642 | 0.035093 | 0.043205 | 0.087216 | 0.085630 | -0.006502 |
ایل ٹی سی | -0.012194 | -0.131079 | -0.064652 | 1.000000 | 0.012253 | 0.113523 | 0.160667 | 0.129475 | 0.053712 | 0.750174 |
ایس سی | 0.026602 | -0.008066 | 0.169642 | 0.012253 | 1.000000 | 0.143252 | 0.106153 | 0.047910 | 0.021098 | 0.035116 |
ایس ٹی آر | 0.058083 | -0.102654 | 0.035093 | 0.113523 | 0.143252 | 1.000000 | 0.225132 | 0.027998 | 0.320116 | 0.079075 |
XEM | 0.014571 | -0.080938 | 0.043205 | 0.160667 | 0.106153 | 0.225132 | 1.000000 | 0.016438 | 0.101326 | 0.227674 |
XMR | 0.121537 | -0.105898 | 0.087216 | 0.129475 | 0.047910 | 0.027998 | 0.016438 | 1.000000 | 0.027649 | 0.127520 |
ایکس آر پی | 0.088657 | -0.054095 | 0.085630 | 0.053712 | 0.021098 | 0.320116 | 0.101326 | 0.027649 | 1.000000 | 0.044161 |
بی ٹی سی | -0.014040 | -0.170538 | -0.006502 | 0.750174 | 0.035116 | 0.079075 | 0.227674 | 0.127520 | 0.044161 | 1.000000 |
اوپر دی گئی تصویر میں تمام متعلقہ عوامل دکھائے گئے ہیں۔ 1 یا 1 کے قریب ہونے والے عوامل کا مطلب ہے کہ ترتیب مثبت یا الٹا متعلق ہے ، اور 0 کے قریب ہونے والے عوامل کا مطلب ہے کہ متعلقہ اشیاء متعلقہ نہیں ہیں اور ان کی اتار چڑھاؤ ایک دوسرے سے آزاد ہیں۔
ہم نے ایک نئی مدد کی خصوصیت تخلیق کی ہے جو بہتر نمائش کے نتائج فراہم کرتی ہے۔
def correlation_heatmap(df, title, absolute_bounds=True):
'''Plot a correlation heatmap for the entire dataframe'''
heatmap = go.Heatmap(
z=df.corr(method='pearson').as_matrix(),
x=df.columns,
y=df.columns,
colorbar=dict(title='Pearson Coefficient'),
)
layout = go.Layout(title=title)
if absolute_bounds:
heatmap['zmax'] = 1.0
heatmap['zmin'] = -1.0
fig = go.Figure(data=[heatmap], layout=layout)
py.iplot(fig)
correlation_heatmap(combined_df_2016.pct_change(), "Cryptocurrency Correlations in 2016")
یہاں ، گہرے سرخ رنگ کے اعداد و شمار مضبوط وابستگی کی نمائندگی کرتے ہیں (ہر کرنسی واضح طور پر اپنی اونچائی سے وابستہ ہے) ، اور گہرے نیلے رنگ کے اعداد و شمار الٹا وابستگی کی نمائندگی کرتے ہیں۔ درمیانی رنگ - ہلکا نیلا / نیلے رنگ / سرمئی / بھوری رنگ - ان کے اعداد و شمار مختلف سطحوں پر کمزور وابستہ یا غیر وابستہ ہیں۔
اس گراف سے ہمیں کیا پتہ چلتا ہے؟ بنیادی طور پر ، یہ مختلف ڈیجیٹل کرنسیوں کی قیمتوں میں 2016 کے دوران اتار چڑھاؤ کی عکاسی کرتا ہے ، جس میں اعدادوشمار کے لحاظ سے کوئی نمایاں تعلق نہیں ہے۔
اب ، ہمارے مفروضے کی توثیق کرنے کے لئے کہ ڈیجیٹل کرنسیوں نے حالیہ مہینوں میں مطابقت کو بڑھاوا دیا ہے ، اگلا ، ہم 2017 سے شروع ہونے والے اعداد و شمار کا استعمال کرتے ہوئے اسی ٹیسٹ کو دہرائیں گے۔
combined_df_2017 = combined_df[combined_df.index.year == 2017]
combined_df_2017.pct_change().corr(method='pearson')
نام | ڈیش | ETC | ETH | ایل ٹی سی | ایس سی | ایس ٹی آر | XEM | XMR | ایکس آر پی | بی ٹی سی |
---|---|---|---|---|---|---|---|---|---|---|
ڈیش | 1.000000 | 0.384109 | 0.480453 | 0.259616 | 0.191801 | 0.159330 | 0.299948 | 0.503832 | 0.066408 | 0.357970 |
ETC | 0.384109 | 1.000000 | 0.602151 | 0.420945 | 0.255343 | 0.146065 | 0.303492 | 0.465322 | 0.053955 | 0.469618 |
ETH | 0.480453 | 0.602151 | 1.000000 | 0.286121 | 0.323716 | 0.228648 | 0.343530 | 0.604572 | 0.120227 | 0.421786 |
ایل ٹی سی | 0.259616 | 0.420945 | 0.286121 | 1.000000 | 0.296244 | 0.333143 | 0.250566 | 0.439261 | 0.321340 | 0.352713 |
ایس سی | 0.191801 | 0.255343 | 0.323716 | 0.296244 | 1.000000 | 0.417106 | 0.287986 | 0.374707 | 0.248389 | 0.377045 |
ایس ٹی آر | 0.159330 | 0.146065 | 0.228648 | 0.333143 | 0.417106 | 1.000000 | 0.396520 | 0.341805 | 0.621547 | 0.178706 |
XEM | 0.299948 | 0.303492 | 0.343530 | 0.250566 | 0.287986 | 0.396520 | 1.000000 | 0.397130 | 0.270390 | 0.366707 |
XMR | 0.503832 | 0.465322 | 0.604572 | 0.439261 | 0.374707 | 0.341805 | 0.397130 | 1.000000 | 0.213608 | 0.510163 |
ایکس آر پی | 0.066408 | 0.053955 | 0.120227 | 0.321340 | 0.248389 | 0.621547 | 0.270390 | 0.213608 | 1.000000 | 0.170070 |
بی ٹی سی | 0.357970 | 0.469618 | 0.421786 | 0.352713 | 0.377045 | 0.178706 | 0.366707 | 0.510163 | 0.170070 | 1.000000 |
کیا یہ اعداد و شمار زیادہ متعلقہ ہیں؟ کیا یہ سرمایہ کاری کا فیصلہ کرنے کے لئے کافی معیار ہیں؟ جواب منفی ہے۔
تاہم ، یہ بات قابل ذکر ہے کہ تقریبا all تمام ڈیجیٹل کرنسیاں تیزی سے منسلک ہو رہی ہیں۔
correlation_heatmap(combined_df_2017.pct_change(), "Cryptocurrency Correlations in 2017")
جیسا کہ آپ اوپر والے گراف سے دیکھ سکتے ہیں ، چیزیں زیادہ سے زیادہ دلچسپ ہوتی جارہی ہیں۔
یہ ایک اچھا سوال ہے۔ لیکن حقیقت یہ ہے کہ میں اس بات کا یقین نہیں کر سکتا کہ...
میرا پہلا رد عمل یہ ہے کہ ہیج فنڈز نے حال ہی میں ڈیجیٹل کرنسی مارکیٹوں میں تجارت کا آغاز کیا ہے۔ یہ فنڈز عام تاجروں سے کہیں زیادہ سرمایہ رکھتے ہیں ، جب کوئی فنڈ متعدد ڈیجیٹل کرنسیوں میں اپنے ان پٹ کیپٹل کا ہیجنگ کرتا ہے تو ، پھر ہر کرنسی کے لئے ایک ہی تجارتی حکمت عملی کا استعمال کرتا ہے جو آزاد متغیر (جیسے اسٹاک مارکیٹ) کے مطابق ہے۔ اگر اس نقطہ نظر سے دیکھا جائے تو ، اس طرح کی بڑھتی ہوئی وابستگی کا رجحان معقول ہے۔
XRP اور STR کی گہری تفہیم
مثال کے طور پر ، مندرجہ بالا گراف سے یہ واضح طور پر دیکھا جاسکتا ہے کہ ایکس آر پی (ریپل کا ٹوکن) دیگر ڈیجیٹل کرنسیوں کے ساتھ کم سے کم وابستگی رکھتا ہے۔ لیکن یہاں ایک قابل ذکر استثنا ہے STR (اسٹیلر کا ٹوکن ، جس کا سرکاری نام "لومینس" ہے) ، جس کا XRP کے ساتھ مضبوط تعلق ہے (رابطہ گتانک: 0.62) ۔
دلچسپ بات یہ ہے کہ اسٹیلر اور رپل بہت ہی ملتے جلتے فنانس ٹیک پلیٹ فارم ہیں ، اور ان دونوں کا مقصد بینک کے مابین بین الاقوامی ٹرانسفر کے دوران بوجھل اقدامات کو کم کرنا ہے۔ قابل ذکر بات یہ ہے کہ بلاکچین سروسز کے ٹوکن استعمال کرنے کی مماثلت کو مدنظر رکھتے ہوئے ، کچھ بڑے کھلاڑیوں اور ہیج فنڈز کو شاید اسی طرح کی تجارتی حکمت عملی کا استعمال کرتے ہوئے اسٹیلر اور رپل پر اپنی سرمایہ کاری کا استعمال کرنا چاہئے۔ شاید اسی وجہ سے ایکس آر پی دوسرے ڈیجیٹل کرنسیوں کے مقابلے میں ایس ٹی آر سے زیادہ مضبوط طور پر وابستہ ہے۔
مندرجہ بالا وضاحتیں بڑی حد تک قیاس آرائی کی ہیں ، اور شاید آپ بہتر کریں گے۔ ہم نے جو بنیاد رکھی ہے اس کی بنیاد پر ، آپ کے پاس سیکڑوں اور ہزاروں مختلف طریقے ہیں جن سے آپ اعداد و شمار میں پوشیدہ کہانیوں کی کھوج جاری رکھ سکتے ہیں۔
یہاں میری کچھ تجاویز ہیں جن سے قارئین ان پہلوؤں کی طرف آگے بڑھنے کے لئے حوالہ دے سکتے ہیں:
بٹ کوائن کے بارے میں ، اور عام طور پر ڈیجیٹل کرنسیوں کے بارے میں ، سب سے اچھی بات یہ ہے کہ ان کی غیر مرکزی نوعیت ہے ، جو اسے کسی بھی دوسرے اثاثے سے زیادہ آزاد ، جمہوری بناتی ہے۔ آپ اپنے تجزیات کو اوپن سورس میں شیئر کرسکتے ہیں ، کمیونٹی میں حصہ لے سکتے ہیں ، یا بلاگ لکھ سکتے ہیں۔ امید ہے کہ آپ اب خود تجزیہ کرنے کی مہارت حاصل کر چکے ہیں ، اور مستقبل میں کسی بھی قیاس آرائی کی ڈیجیٹل کرنسی کے بارے میں مضامین پڑھنے کے وقت ، خاص طور پر ان کی پیش گوئیوں کے بارے میں جو ڈیٹا کی حمایت نہیں کرتے ہیں۔ آپ کی پڑھائی کا شکریہ ، اگر آپ کے پاس اس ٹیوٹوریل کے بارے میں کوئی رائے ، مشورے یا تنقید ہے تو ، براہ کرم ہمیں بتائیں۔https://www.fmz.com/bbsآپ کا شکریہ۔
ruixiao1989بہت قیمتی مضمون ، سیکھا ، شکریہ۔
نیکیآپ کی پسند کے لئے شکریہ!