وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ڈیجیٹل کرنسی مارکیٹ کا مقداری تجزیہ

مصنف:نیکی, تخلیق: 2019-08-16 10:37:23, تازہ کاری: 2023-10-19 21:04:20

img

ڈیٹا پر مبنی ڈیجیٹل کرنسی کی قیاس آرائی کا تجزیہ

بٹ کوائن کی قیمت کیسے چلتی ہے؟ اس کی قیمتوں میں اضافے اور کمی کی وجوہات کیا ہیں؟ کیا مختلف کوکیز کی مارکیٹ کی قیمتیں آپس میں جڑی ہوئی ہیں یا بڑی حد تک آزاد ہیں؟ ہم آگے کیا ہونے کا اندازہ کیسے لگاسکتے ہیں؟

ڈیجیٹل کرنسیوں جیسے بٹ کوائن اور ایتھرین کے بارے میں مضامین اب مختلف قیاس آرائیوں سے بھرے ہوئے ہیں ، اور سینکڑوں خود کو ماہر قرار دینے والے ایسے رجحانات کی وکالت کر رہے ہیں جن کی وہ توقع کرتے ہیں۔ ان میں سے بہت سے تجزیوں میں بنیادی اعداد و شمار اور شماریاتی ماڈل کی ٹھوس بنیاد کا فقدان ہے۔

اس مضمون کا مقصد پیئٹن کا استعمال کرتے ہوئے ڈیجیٹل کرنسی تجزیہ کے لئے ایک مختصر تعارف فراہم کرنا ہے۔ ہم مختلف ڈیجیٹل کرنسیوں کے اعداد و شمار کو ایک سادہ پیئٹن اسکرپٹ کے ذریعہ تلاش ، تجزیہ اور تصور کریں گے۔ اس دوران ، ہم ان اتار چڑھاؤ والے مارکیٹ کے رویوں اور ان کے ارتقاء کے بارے میں دلچسپ رجحانات کو دریافت کریں گے۔

img

یہ ایک مضمون نہیں ہے جس میں ڈیجیٹل کرنسیوں کی وضاحت کی گئی ہے ، اور نہ ہی یہ کہ کون سی مخصوص کرنسیاں بڑھیں گی اور کون سی گریں گی۔ اس کے بجائے ، ہم اس سبق میں صرف خام اعداد و شمار حاصل کرنے اور اعداد و شمار میں پوشیدہ کہانیوں کو دریافت کرنے پر توجہ مرکوز کر رہے ہیں۔

پہلا مرحلہ: اپنے ڈیٹا کے کام کرنے کے ماحول کی تعمیر

یہ سبق ہر قسم کی مہارت کی سطح کے شوقین ، انجینئرز اور ڈیٹا سائنسدانوں کے لئے تیار کیا گیا ہے۔ چاہے آپ انڈسٹری کا بڑا آدمی ہو یا کم عمر پروگرامر ، آپ کو صرف اس بات کی مہارت کی ضرورت ہے کہ آپ کو پیتھون پروگرامنگ زبان کی بنیادی معلومات اور کمانڈ لائن آپریشن کے بارے میں کافی معلومات حاصل ہوں (صرف ایک ڈیٹا سائنس پروجیکٹ ترتیب دینے کے لئے) ۔

1.1 انوینٹر کوانٹیفیکیشن مینیجر انسٹال کریں اور Anaconda سیٹ اپ کریں

  • موجد کی طرف سے مقداری طور پر منظم نظام

发明者量化平台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/

اگر آپ ایک تجربہ کار پائیتھون پروگرامر ہیں اور آپ کو اناکونڈا استعمال کرنے کی ضرورت محسوس نہیں ہوتی ہے تو یہ بالکل ٹھیک ہے۔ میں یہ فرض کروں گا کہ آپ کو ضروری انحصار والے ماحول کو انسٹال کرنے میں مدد کی ضرورت نہیں ہے ، آپ براہ راست دوسرے حصے پر جاسکتے ہیں۔

1.2 ایک اناکونڈا ڈیٹا تجزیہ پروجیکٹ ماحول تخلیق کریں

ایک بار جب 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

اس پروجیکٹ کو انسٹال کرنے کے لئے درکار تمام انحصار پیکجوں کا استعمال کریں۔

نوٹ: اگر آپ اپنے کمپیوٹر پر بہت سارے پطرون پروجیکٹس چلانے کا ارادہ رکھتے ہیں تو ، تنازعات سے بچنے کے لئے مختلف پروجیکٹس کے انحصار پیک (سافٹ ویئر لائبریری اور پیک) کو الگ کرنا مددگار ہے۔ انانونڈا ہر پروجیکٹ کے انحصار پیک کے لئے ایک خاص ماحول کی فہرست بناتا ہے تاکہ تمام پیک کو مناسب طریقے سے منظم اور الگ کیا جاسکے۔

1.3 ایک جیوپیٹر نوٹ بک بنانا

ایک بار جب ماحول اور انحصار پیکج انسٹال ہوجائیں تو چلیں

jupyter notebook

آئی پیتھون کور شروع کریں اور اپنے براؤزر میں http://localhost:8888/اس کے بعد، آپ کو ایک نیا پیڈون نوٹ بک بنانا ہے اور اس بات کو یقینی بنانا ہے کہ اس کا استعمال کیا جائے:

Python [conda env:cryptocurrency-analysis]

نیوکلیئر

img

1.4 انحصار پیک درآمد کریں

ایک نیا خالی جیوپیٹر نوٹ بک بنائیں، اور پھر پہلی چیز جو ہم کریں گے وہ یہ ہے کہ ضروری انحصار پیکجوں کو درآمد کریں۔

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

2.1 کوئنڈل ڈیٹا کلیکشن فنکشن لکھنا

ہم نے ایک فنکشن لکھا ہے جو 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

یہاں پکسل لائبریری کا استعمال ڈیٹا کو ترتیب دینے اور ڈاؤن لوڈ کردہ ڈیٹا کو فائل میں محفوظ کرنے کے لئے کیا جاتا ہے تاکہ پروگرام ہر بار چلتے وقت ایک ہی ڈیٹا کو دوبارہ ڈاؤن لوڈ نہ کرے۔ یہ فنکشن پانڈا ڈیٹا فریم فارمیٹ میں ڈیٹا واپس کرے گا۔ اگر آپ ڈیٹا فریم کے تصور سے زیادہ واقف نہیں ہیں تو ، آپ اسے ایک طاقتور ایکسل شیٹ کی طرح تصور کرسکتے ہیں۔

2.2 کرکن ایکسچینج سے ڈیجیٹل کرنسیوں کی قیمتوں کا ڈیٹا حاصل کریں

ہم کرکن بٹ کوائن ایکسچینج کو بطور مثال لیتے ہیں اور اس کی قیمت سے شروع کرتے ہیں۔

# 获取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])

img

这里,我们用Plotly来完成可视化部分。相对于使用一些更成熟的Python数据可视化库,比如Matplotlib,用Plotly是一个不那么普遍的选择,但Plotly确实是一个不错的选择,因为它可以调用D3.js的充分交互式图表。这些图表有非常漂亮的默认设置,易于探索,而且非常方便嵌入到网页中。

ایک چھوٹی سی ٹپ: پیدا کردہ چارٹ کو بڑے پیمانے پر تبادلوں پر بٹ کوائن کی قیمت کے چارٹ (جیسے OKEX ، Binance یا Huobi پر چارٹ) کے ساتھ موازنہ کیا جاسکتا ہے تاکہ یہ یقینی بنایا جاسکے کہ ڈاؤن لوڈ کردہ اعداد و شمار کی مجموعی طور پر مطابقت ہے۔

2.3 بڑے پیمانے پر بٹ کوائن تبادلے سے قیمت کا ڈیٹا حاصل کریں

محتاط قارئین نے شاید محسوس کیا ہوگا کہ مندرجہ بالا اعداد و شمار میں سے کچھ میں اعداد و شمار کی کمی ہے ، خاص طور پر 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

2.4 تمام اعداد و شمار کو ایک ڈیٹا بیس میں ضم کریں

اگلا مرحلہ، ہم ایک خاص فنکشن کی وضاحت کریں گے جو اعداد و شمار کی مختلف کالموں میں مشترکہ کالموں کو ایک نئی کالم میں ضم کرے گا۔ آئیے اسے 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

جیسا کہ اوپر کی شکل سے دیکھا جا سکتا ہے کہ یہ اعداد و شمار ہماری توقعات کے مطابق ہیں، اعداد و شمار کا دائرہ کار تقریباً ایک جیسا ہے، صرف مختلف ایکسچینجز کی تاخیر یا ان کی مخصوص خصوصیات کی بنیاد پر تھوڑا سا مختلف ہے۔

2.5 قیمتوں کے اعداد و شمار کی نمائش کا عمل

تجزیاتی منطق سے، اگلا مرحلہ یہ ہے کہ اعداد و شمار کو ایک دوسرے کے ساتھ موازنہ کرنے کے لئے. اس کے لئے، ہم نے پہلے ایک معاون فعل کی وضاحت کرنے کی ضرورت ہے، جس میں ایک لائن کمانڈ فراہم کرنے کے ذریعے اعداد و شمار کی پیداوار کے چارٹ کا استعمال کرتے ہوئے، ہم اسے ڈی ایف_اسکیٹر فنکشن کہتے ہیں.

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')

img

2.6 مجموعی قیمتوں کے اعداد و شمار کو صاف اور شامل کریں

مندرجہ بالا گراف سے یہ دیکھا جاسکتا ہے کہ اگرچہ یہ چاروں اعداد و شمار کے سلسلے تقریبا ایک ہی راستے پر چلتے ہیں ، لیکن ان میں کچھ غیر معمولی تبدیلیاں ہیں ، اور ہم ان غیر معمولی تبدیلیوں کو صاف کرنے کی کوشش کریں گے۔

ہم جانتے ہیں کہ بٹ کوائن کی قیمت کبھی بھی صفر کے برابر نہیں تھی، لہذا ہم نے پہلے اعداد و شمار کے خانے سے تمام صفر کو ہٹا دیا تھا۔

# 清除"0"值
btc_usd_datasets.replace(0, np.nan, inplace=True)

ڈیٹا بیس کی تعمیر نو کے بعد ، ہم زیادہ واضح گراف دیکھ سکتے ہیں ، بغیر ڈیٹا کی کمی کے۔

# 绘制修订后的数据框
df_scatter(btc_usd_datasets, 'Bitcoin Price (USD) By Exchange')

img

اب ہم ایک نیا کالم حساب کر سکتے ہیں: تمام تبادلے پر بٹ کوائن کی اوسط یومیہ قیمت۔

# 将平均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])

img

ایسا لگتا ہے کہ واقعی کوئی مسئلہ نہیں ہے ، اور بعد میں ، ہم اس مجموعی قیمت کے سلسلے کے اعداد و شمار کا استعمال کرتے ہوئے جاری رکھیں گے تاکہ دیگر ڈیجیٹل کرنسیوں کے مقابلے میں ڈالر کے مابین تبادلہ کی شرح کا تعین کیا جاسکے۔

تیسرا مرحلہ: الٹکوئنز کی قیمت جمع کرنا

اب تک ، ہمارے پاس بٹ کوائن کی قیمتوں کے بارے میں ٹائم سیریل ڈیٹا موجود ہے۔ اگلا ، ہم غیر بٹ کوائن ڈیجیٹل کرنسیوں کے بارے میں کچھ اعداد و شمار دیکھیں گے ، جو کہ الٹکوئنز کے معاملے میں ہیں ، یقینا ، الٹکوئنز کا لفظ تھوڑا سا زیادہ وزن ہوسکتا ہے ، لیکن موجودہ ڈیجیٹل کرنسیوں کی حالت کے بارے میں ، مارکیٹ کی قیمتوں میں سب سے اوپر 10 کے علاوہ (جیسے بٹ کوائن ، ایتھروئن ، ای او ایس ، یو ایس ڈی ٹی وغیرہ) ، زیادہ تر کو بٹ کوائن کہا جاسکتا ہے ، اور ہمیں تجارت کے دوران ان سے دور رہنے کی کوشش کرنی چاہئے ، کیونکہ ان کی الجھن اور دھوکہ دہی بہت زیادہ ہے۔

3.1 پولونیکس ایکسچینج کے API کے ذریعے معاون افعال کی وضاحت کریں

سب سے پہلے، ہم پولونیکس ایکسچینج کے 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&currencyPair={}&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

مذکورہ بالا فنکشن ڈیجیٹل کرنسی کے جوڑے والے کوڈ (جیسے بی ٹی سی_ای ٹی ایچ کیڑے) نکالتا ہے اور ڈیٹا بیس کو واپس کرتا ہے جس میں دونوں کرنسیوں کی تاریخی قیمتیں شامل ہوتی ہیں۔

3.2 پولونیکس سے ٹریڈنگ کی قیمتوں کا ڈیٹا ڈاؤن لوڈ کریں

زیادہ تر سکے براہ راست امریکی ڈالر میں نہیں خریدے جاسکتے ہیں۔ عام طور پر ، ان کو حاصل کرنے کے لئے ، افراد کو پہلے بٹ کوائن خریدنا پڑتا ہے ، اور پھر ان کی قیمتوں کے تناسب کے مطابق ان کو بٹ کوائن میں تبدیل کرنا پڑتا ہے۔ لہذا ، ہمیں ہر ڈیجیٹل کرنسی کے لئے بٹ کوائن کے تبادلے کی شرح ڈاؤن لوڈ کرنا پڑتی ہے ، اور پھر موجودہ بٹ کوائن کی قیمت کے اعداد و شمار کو ڈالر میں تبدیل کرنا پڑتا ہے۔ ہم سب سے اوپر 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

3.3 تمام قیمتوں کے اعداد و شمار کی کرنسیوں کو ڈالر میں متحد کرنا

اب، ہم بی ٹی سی اور کوکیز کے تبادلے کے اعداد و شمار کو اپنے بٹ کوائن قیمت انڈیکس کے ساتھ جوڑ سکتے ہیں تاکہ براہ راست ہر کوکی کی تاریخی قیمت (یونٹ: ڈالر) کا حساب لگائیں۔

# 将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 کو دوبارہ بلایا ہے تاکہ تمام سککوں کی قیمتوں کو چارٹ کے طور پر دکھایا جاسکے۔

img

یہ چارٹ ٹھیک لگ رہا ہے، اور یہ چارٹ ہمیں گزشتہ چند سالوں میں ہر ڈیجیٹل کرنسی کے تبادلے کی قیمتوں میں ہونے والی تبدیلیوں کا ایک مکمل جائزہ دیتا ہے۔

نوٹ: یہاں ہم نے ایک ہی گراف پر تمام ڈیجیٹل کرنسیوں کا موازنہ کرنے کے لئے لوجسٹک کی وضاحت کے y محور کا استعمال کیا ہے۔ آپ دوسرے مختلف پیرامیٹرز کی قدر بھی آزما سکتے ہیں (مثال کے طور پر پیمانہ = لکیری ) جو ڈیٹا کو مختلف نقطہ نظر سے سمجھ سکتے ہیں۔

3.4 وابستگی کا تجزیہ شروع کریں

محتاط قارئین نے شاید محسوس کیا ہو کہ ڈیجیٹل کرنسیوں کی قیمتیں متعلقہ نظر آتی ہیں ، حالانکہ ان کی کرنسیوں کی قیمتوں میں بہت فرق ہے اور یہ بہت زیادہ اتار چڑھاؤ ہے۔ خاص طور پر اپریل 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")

img

یہاں ، گہرے سرخ رنگ کے اعداد و شمار مضبوط وابستگی کی نمائندگی کرتے ہیں (ہر کرنسی واضح طور پر اپنی اونچائی سے وابستہ ہے) ، اور گہرے نیلے رنگ کے اعداد و شمار الٹا وابستگی کی نمائندگی کرتے ہیں۔ درمیانی رنگ - ہلکا نیلا / نیلے رنگ / سرمئی / بھوری رنگ - ان کے اعداد و شمار مختلف سطحوں پر کمزور وابستہ یا غیر وابستہ ہیں۔

اس گراف سے ہمیں کیا پتہ چلتا ہے؟ بنیادی طور پر ، یہ مختلف ڈیجیٹل کرنسیوں کی قیمتوں میں 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")

img

جیسا کہ آپ اوپر والے گراف سے دیکھ سکتے ہیں ، چیزیں زیادہ سے زیادہ دلچسپ ہوتی جارہی ہیں۔

یہ کیوں ہو رہا ہے؟

یہ ایک اچھا سوال ہے۔ لیکن حقیقت یہ ہے کہ میں اس بات کا یقین نہیں کر سکتا کہ...

میرا پہلا رد عمل یہ ہے کہ ہیج فنڈز نے حال ہی میں ڈیجیٹل کرنسی مارکیٹوں میں تجارت کا آغاز کیا ہے۔ یہ فنڈز عام تاجروں سے کہیں زیادہ سرمایہ رکھتے ہیں ، جب کوئی فنڈ متعدد ڈیجیٹل کرنسیوں میں اپنے ان پٹ کیپٹل کا ہیجنگ کرتا ہے تو ، پھر ہر کرنسی کے لئے ایک ہی تجارتی حکمت عملی کا استعمال کرتا ہے جو آزاد متغیر (جیسے اسٹاک مارکیٹ) کے مطابق ہے۔ اگر اس نقطہ نظر سے دیکھا جائے تو ، اس طرح کی بڑھتی ہوئی وابستگی کا رجحان معقول ہے۔

XRP اور STR کی گہری تفہیم

مثال کے طور پر ، مندرجہ بالا گراف سے یہ واضح طور پر دیکھا جاسکتا ہے کہ ایکس آر پی (ریپل کا ٹوکن) دیگر ڈیجیٹل کرنسیوں کے ساتھ کم سے کم وابستگی رکھتا ہے۔ لیکن یہاں ایک قابل ذکر استثنا ہے STR (اسٹیلر کا ٹوکن ، جس کا سرکاری نام "لومینس" ہے) ، جس کا XRP کے ساتھ مضبوط تعلق ہے (رابطہ گتانک: 0.62) ۔

دلچسپ بات یہ ہے کہ اسٹیلر اور رپل بہت ہی ملتے جلتے فنانس ٹیک پلیٹ فارم ہیں ، اور ان دونوں کا مقصد بینک کے مابین بین الاقوامی ٹرانسفر کے دوران بوجھل اقدامات کو کم کرنا ہے۔ قابل ذکر بات یہ ہے کہ بلاکچین سروسز کے ٹوکن استعمال کرنے کی مماثلت کو مدنظر رکھتے ہوئے ، کچھ بڑے کھلاڑیوں اور ہیج فنڈز کو شاید اسی طرح کی تجارتی حکمت عملی کا استعمال کرتے ہوئے اسٹیلر اور رپل پر اپنی سرمایہ کاری کا استعمال کرنا چاہئے۔ شاید اسی وجہ سے ایکس آر پی دوسرے ڈیجیٹل کرنسیوں کے مقابلے میں ایس ٹی آر سے زیادہ مضبوط طور پر وابستہ ہے۔

ٹھیک ہے، آپ کی باری ہے!

مندرجہ بالا وضاحتیں بڑی حد تک قیاس آرائی کی ہیں ، اور شاید آپ بہتر کریں گے۔ ہم نے جو بنیاد رکھی ہے اس کی بنیاد پر ، آپ کے پاس سیکڑوں اور ہزاروں مختلف طریقے ہیں جن سے آپ اعداد و شمار میں پوشیدہ کہانیوں کی کھوج جاری رکھ سکتے ہیں۔

یہاں میری کچھ تجاویز ہیں جن سے قارئین ان پہلوؤں کی طرف آگے بڑھنے کے لئے حوالہ دے سکتے ہیں:

  • مزید ڈیجیٹل کرنسیوں کے اعداد و شمار کو پورے تجزیہ میں شامل کیا گیا
  • ہم آہنگی کے تجزیہ کے وقت کی حد اور پارٹیلیٹی کو بہتر یا بڑے پیمانے پر پارٹیلیٹی کے رجحانات کا نظارہ حاصل کرنے کے لئے ایڈجسٹ کریں۔
  • ٹرانزیکشن حجم یا بلاکچین کے اعداد و شمار سے کھدائی کرنے کے لئے رجحانات تلاش کرنے کے لئے مرکوز؛ اگر آپ مستقبل کی قیمتوں میں اتار چڑھاؤ کی پیش گوئی کرنا چاہتے ہیں تو ، آپ کو خام قیمت کے اعداد و شمار کے مقابلے میں خرید / فروخت کے تناسب کے اعداد و شمار کی ضرورت ہوسکتی ہے۔
  • اسٹاک ، اجناس ، اور قانونی کرنسیوں پر قیمت کے اعداد و شمار کو شامل کریں تاکہ یہ طے کیا جاسکے کہ ان میں سے کون ڈیجیٹل کرنسیوں سے وابستہ ہے ((لیکن ، یہ مت بھولنا کہ یہ کہاوت ہے کہ اس میں کوئی وجہ نہیں ہے)
  • ایونٹ رجسٹری ، جی ڈی ای ایل ٹی ، اور گوگل ٹرینڈز کا استعمال کرتے ہوئے مخصوص ڈیجیٹل کرنسیوں کے ارد گرد گرم الفاظ کی تعداد کو مقدار میں استعمال کریں۔
  • اعداد و شمار کا استعمال کرتے ہوئے ایک پیش گوئی کرنے والے مشین لرننگ ماڈل کو تربیت دینے کے لئے کل کی قیمتوں کا اندازہ لگانا۔ اگر آپ کے پاس زیادہ عزائم ہیں تو ، آپ یہاں تک کہ سرکلر نیورل نیٹ ورکس (RNN) کے ساتھ مذکورہ بالا تربیت کرنے کی کوشش کرنے پر بھی غور کرسکتے ہیں۔
  • آپ کے تجزیات کا استعمال کرتے ہوئے ایک خودکار ٹریڈنگ روبوٹ بنائیں ، جو کہ اسی ایپلی کیشن پروگرامنگ انٹرفیس (API) کے ذریعہ ، جیسے کہ پولونیکس ٹائم یا سکے بیس ٹائم والے تبادلے کی ویب سائٹوں پر لاگو ہوتا ہے۔ محتاط رہیں: ایک ناقص کارکردگی کا مظاہرہ کرنے والا روبوٹ آپ کے اثاثوں کو فوری طور پر دھواں دے سکتا ہے۔这里推荐使用发明者量化平台FMZ.COM

بٹ کوائن کے بارے میں ، اور عام طور پر ڈیجیٹل کرنسیوں کے بارے میں ، سب سے اچھی بات یہ ہے کہ ان کی غیر مرکزی نوعیت ہے ، جو اسے کسی بھی دوسرے اثاثے سے زیادہ آزاد ، جمہوری بناتی ہے۔ آپ اپنے تجزیات کو اوپن سورس میں شیئر کرسکتے ہیں ، کمیونٹی میں حصہ لے سکتے ہیں ، یا بلاگ لکھ سکتے ہیں۔ امید ہے کہ آپ اب خود تجزیہ کرنے کی مہارت حاصل کر چکے ہیں ، اور مستقبل میں کسی بھی قیاس آرائی کی ڈیجیٹل کرنسی کے بارے میں مضامین پڑھنے کے وقت ، خاص طور پر ان کی پیش گوئیوں کے بارے میں جو ڈیٹا کی حمایت نہیں کرتے ہیں۔ آپ کی پڑھائی کا شکریہ ، اگر آپ کے پاس اس ٹیوٹوریل کے بارے میں کوئی رائے ، مشورے یا تنقید ہے تو ، براہ کرم ہمیں بتائیں۔https://www.fmz.com/bbsآپ کا شکریہ۔


متعلقہ

مزید

ruixiao1989بہت قیمتی مضمون ، سیکھا ، شکریہ۔

نیکیآپ کی پسند کے لئے شکریہ!