2021 کریپٹوکرنسی ٹی اے کیو جائزہ اور 10 گنا اضافے کی سادہ ترین گمشدہ حکمت عملی

مصنف:نینا باداس, تخلیق: 2022-04-07 11:36:32, تازہ کاری: 2022-04-13 09:25:23

2021 کریپٹوکرنسی ٹی اے کیو جائزہ اور 10 گنا اضافے کی سادہ ترین گمشدہ حکمت عملی

2021 کا اختتام اور مستقبل کی حکمت عملی.ipynb

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

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

میں [1]: درآمد کی درخواستیں تاریخ سےوقت درآمد کی تاریخ،تاریخ اور وقت درآمد کا وقت پی ڈی کے طور پر پانڈا درآمد نپ کے طور پر نپ درآمد درآمد matplotlib.pyplot کے طور پر plt %مٹپلوٹلیب ان لائن

[144] میں: ##موجودہ ٹریڈنگ جوڑی معلومات = درخواستیں.get ((https://fapi.binance.com/fapi/v1/exchangeInfo’) علامات = [s[symbol] کے لئے s میں Info.json() [symbols]]

[154] میں: symbols_f = list(set(filter(lambda x: x[-4:] == USDT، [s.split(_) [0] علامتوں میں s کے لئے]))- set (([1000SHIBUSDT,1000XECUSDT,BTCDOMUSDT,DEFIUSDT,BTCSTUSDT])) + [SHIBUSDT,XECUSDT] print ((symbols_f)

[155] میں: print(len(symbols_f))

گذشتہ سال میں مارکیٹ

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

حتمی انڈیکس منافع تقریبا 12 گنا ہے ، یعنی ، اگر آپ 1 جنوری 2021 کو اوسطا these ان 134 کرنسیوں کی علامتوں کو خریدتے ہیں تو ، کچھ نہ کرنے کا حتمی منافع 12 گنا ہے ، اور یہ اندازہ لگایا جاتا ہے کہ 90 فیصد سے زیادہ لوگ اوسط انڈیکس سے بہتر کارکردگی کا مظاہرہ نہیں کرتے ہیں۔ ان میں ، سب سے زیادہ کمی کے ساتھ کرنسیوں کی علامتیں: آئی سی پی میں 93 فیصد کمی واقع ہوئی ، ڈوڈو میں 85 فیصد کمی واقع ہوئی ، اور لینا میں 75 فیصد کمی واقع ہوئی۔ تقریبا ایک سو گنا اضافہ ہوا: SOL ، FTM ، LUNA ، MATIC ، SAND ، AXS۔ ان میں سے ، AXS میں 168 گنا اضافہ ہوا ہے اور یہ سب سے بڑا سیاہ گھوڑا ہے۔ میڈین میں 3 گنا اضافہ ہوا ہے۔ یہ کہا جاسکتا ہے کہ انڈیکس بنیادی طور پر عوامی زنجیروں اور کھیلوں سے چلتا ہے۔ اس مدت کے دوران نئے درج کردہ کرنسیوں کی علامتوں کو خارج کرتے ہوئے ، بقا کے تعصب کو روکنے کے لئے ، اس نے تقریبا 11 گنا منافع بھی حاصل کیا۔ یہ صرف 7 BTC کا انعقاد ہے۔

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

[157] میں: # کسی بھی مدت میں K لائن حاصل کرنے کے لئے تقریب def GetKlines ((symbol=BTCUSDT,start=2020-8-10,end=2021-8-10,period=1h,base=fapi,v = v1): کلینز = [] start_time = int(time.mktime(datetime.strptime(start، %Y-%m-%d).timetuple()))1000 + 860601000 end_time = int(time.mktime(datetime.strptime(end، %Y-%m-%d).timetuple()))1000 + 860601000 intervel_map = {m:601000،h:60601000،d:2460601000} while start_time < end_time: جبکہ شروع_وقت < اختتامی_وقت: mid_time = min(start_time+1000*int(period[:-1])intervel_map[period[-1],end_time] url = https://+base+.binance.com/+base+/+v+/klines؟symbol=%s&interval=%s&startTime=%s&endTime=%s&limit=1000%(symbol,period,start_time,mid_time) res = درخواستیں.get (url) res_list = res.json() if type ((res_list) == list اور len ((res_list) > 0: start_time = res_list[-1][0] کلینز += res_list elif type ((res_list) == فہرست: شروع_وقت = شروع_وقت+1000int(period[:-1])*intervel_map[period[-1]] دیگر: وقفہ

df = pd.DataFrame(Klines,columns=['time','open','high','low','close','amount','end_time','volume','count','buy_amount','buy_volume','null']).astype('float')
df.index = pd.to_datetime(df.time,unit='ms')
profit df

[164] میں: df_all_s = pd.DataFrame ((index=pd.date_range ((start=2021-1-1, end=2021-12-28, freq=1d),columns=symbols_s) رینج میں i کے لئے ((len ((symbols_f)): #print ((symbols_s[i]) symbol_s = symbols_f[i] df_s = GetKlines ((symbol=symbol_s,start=2021-1-1,end=2021-12-28,period=1d,base=api,v=v3) df_all_s[symbol_s] = df_s[~df_s.index.duplicated(keep=first) ].close

[165] میں: df_all_s.tail() #ڈیٹا ڈھانچہ باہر[165]:

[174] میں: df_all = df_all_s.fillna ((method=bfill) # ڈیٹا بھریں df_norm = df_all/df_all.iloc[0] #unitization df_norm.mean ((محور=1).plot ((figsize=(12,4),grid=true) ؛ #فائنل انڈیکس منافع کا گراف باہر [1]:img

[175] میں: #میڈین اضافہ df_norm.median ((محور=1).plot ((figsize=(12,4),grid=true) ؛ باہر [1]:img

[168] میں: #اٹھنے اور گرنے کی ترتیب print ((df_norm.iloc[-1].round ((2).sort_values().to_dict())

[317] میں: # گزشتہ سال کی سب سے زیادہ قیمت کے مقابلے میں موجودہ قیمت کی زیادہ سے زیادہ واپسی print (((1-df_norm.iloc[-1]/df_norm.max()) گول ((2).sort_values().to_dict())

[177] میں: df_all_f = pd.DataFrame ((index=pd.date_range ((start=2021-1-1, end=2021-12-28, freq=1d),columns=symbols_s) رینج میں i کے لئے ((len ((symbols_f)): #print ((symbols_s[i]) symbol_f = symbols_f[i] df_f = GetKlines ((symbol=symbol_f,start=2021-1-1,end=2021-12-28,period=1d,base=fapi,v=v1) df_all_f[symbol_f] = df_f[~df_f.index.duplicated ((keep=first) ].close

[208] میں: نئی علامتیں شامل نہیں ہیں df = df_all_s[df_all_s.columns[~df_all_f.iloc[0].isnull() ] df = df.fillna ((طریقہ=bfill) df = df/df.iloc[0] df.mean ((axis=1).plot ((figsize=(12,4),grid=true) ؛ باہر[208]:img

[212] میں: #بی ٹی سی کے مقابلے میں (df.mean(axis=1)/df.BTCUSDT).plot(figsize=(12,4),grid=True) ۔ باہر[212]:img

[213] میں: #پرانے بیک ٹیسٹ انجن کا استعمال کریں کلاس تبادلہ:

def __init__(self, trade_symbols, fee=0.0004, initial_balance=10000):
    self.initial_balance = initial_balance #initial asset  
    self.fee = fee
    self.trade_symbols = trade_symbols
    self.account = {'USDT':{'realised_profit':0, 'unrealised_profit':0, 'total':initial_balance, 'fee':0}}
    for symbol in trade_symbols:
        self.account[symbol] = {'amount':0, 'hold_price':0, 'value':0, 'price':0, 'realised_profit':0,'unrealised_profit':0,'fee':0}
        
def Trade(self, symbol, direction, price, amount):
    
    cover_amount = 0 if direction*self.account[symbol]['amount'] >=0 else min(abs(self.account[symbol]['amount']), amount)
    open_amount = amount - cover_amount
    self.account['USDT']['realised_profit'] -= price*amount*self.fee #deduct service fee
    self.account['USDT']['fee'] += price*amount*self.fee
    self.account[symbol]['fee'] += price*amount*self.fee

    if cover_amount > 0: #close first 
        self.account['USDT']['realised_profit'] += -direction*(price - self.account[symbol]['hold_price'])*cover_amount  #profit
        self.account[symbol]['realised_profit'] += -direction*(price - self.account[symbol]['hold_price'])*cover_amount
        
        self.account[symbol]['amount'] -= -direction*cover_amount
        self.account[symbol]['hold_price'] = 0 if self.account[symbol]['amount'] == 0 else self.account[symbol]['hold_price']
        
    if open_amount > 0:
        total_cost = self.account[symbol]['hold_price']*direction*self.account[symbol]['amount'] + price*open_amount
        total_amount = direction*self.account[symbol]['amount']+open_amount
        
        self.account[symbol]['hold_price'] = total_cost/total_amount
        self.account[symbol]['amount'] += direction*open_amount
                

def Buy(self, symbol, price, amount):
    self.Trade(symbol, 1, price, amount)
    
def Sell(self, symbol, price, amount):
    self.Trade(symbol, -1, price, amount)
    
def Update(self, close_price): #update asset
    self.account['USDT']['unrealised_profit'] = 0
    for symbol in self.trade_symbols:
        self.account[symbol]['unrealised_profit'] = (close_price[symbol] - self.account[symbol]['hold_price'])*self.account[symbol]['amount']
        self.account[symbol]['price'] = close_price[symbol]
        self.account[symbol]['value'] = abs(self.account[symbol]['amount'])*close_price[symbol]
        self.account['USDT']['unrealised_profit'] += self.account[symbol]['unrealised_profit']
    self.account['USDT']['total'] = round(self.account['USDT']['realised_profit'] + self.initial_balance + self.account['USDT']['unrealised_profit'],6)

[418] میں: #زیادہ درست backtest کے لئے، 1-گھنٹے K-لائن کرال df_all_s = pd.DataFrame ((index=pd.date_range ((start=2021-1-1, end=2021-12-28, freq=1h),columns=symbols_s) رینج میں i کے لئے ((len ((symbols_f)): #print ((symbols_s[i]) symbol_s = symbols_f[i] df_s = GetKlines ((symbol=symbol_s,start=2021-1-1,end=2021-12-28,period=1h,base=api,v=v3) df_all_s[symbol_s] = df_s[~df_s.index.duplicated(keep=first) ].close

[419] میں: df = df_all_s[df_all_s.columns[~df_all_f.iloc[0].isnull() ] df = df.fillna ((طریقہ=bfill) df = df/df.iloc[0] df.mean ((axis=1).plot ((figsize=(12,4),grid=true) ؛ باہر[419]:img

متوازن حکمت عملی کی کارکردگی

بیک ٹیسٹ نے یکم جنوری 2021 کو بائننس پرپکٹیو کنٹریکٹس پر درج تمام کرنسی کے علامتوں کو منتخب کیا۔ K لائن کی مدت 1h ہے ، اور پیرامیٹر یہ ہے کہ جب پوزیشن کی رقم اوسط کا 5٪ سے کم ہو تو خریدنا شروع کریں اور 5٪ سے زیادہ ہونے پر فروخت کرنا شروع کریں۔ جب بیک ٹیسٹ تمام کرنسی کے علامتوں کا ہوتا ہے تو ، حتمی حکمت عملی کا منافع 7.7 گنا ہوتا ہے۔ اوسط منافع 13 گنا سے نمایاں طور پر بدتر ہے۔ یہ بھی میری توقع میں ہے۔ بہر حال ، وہ کرنسی کے علامتیں جو سو گنا بڑھ گئیں وہ بہت خاص ہیں ، اور متوازن حکمت عملی ان سب کو فروخت کرے گی۔

اگر بیک ٹیسٹ میں 10 کرنسی کے نشانات کو ہٹانے کا انتخاب کیا جاتا ہے جن میں سب سے زیادہ اضافہ ہوتا ہے ، اور صرف نسبتا average معمولی کرنسی کے نشانات کا جائزہ لیا جاتا ہے ، تو حتمی منافع 4.8 گنا ہے ، جو اوسط کارکردگی سے کہیں زیادہ ہے 3.4 گنا.

اگر صرف 3 کرنسی کے نشانات جن میں سب سے زیادہ اضافہ ہوتا ہے ، گھومے جاتے ہیں تو ، حتمی منافع 373 گنا ہے ، جو اوسط کارکردگی سے 160 گنا زیادہ ہے۔ اس سے پتہ چلتا ہے کہ اگر منتخب کردہ گھومنے والی کرنسی کی علامت کا رجحان اور اضافہ مستقل ہوتا ہے تو ، گھومنے کا نتیجہ گھومنے سے کہیں بہتر ہوگا۔

[494] میں: #backtest تمام علامتوں کی علامات = list(df.iloc[-1].sort_values() [:].index) e = ایکسچینج ((علامات، فیس=0.001، ابتدائی_باقی=10000) res_list = [] avg_pct = 1/len ((علامات) df[symbols].iterrows میں صف کے لئے: قیمتیں = قطار [1] کل = ای.اکاؤنٹ[USDT][کل] e.اپ ڈیٹ ((قیمتیں) علامات میں علامت کے لئے: pct = e.account[symbol][value]/کل اگر pct < 0.95*avg_pct: e.Buy ((symbol,prices[symbol],(avg_pct-pct) خریدیںکل/قیمتیں[علامت]) اگر pct > 1.05 ہوavg_pct: e.Sell ((symbol,prices[symbol],(pct-avg_pct) *کل/قیمتیں[symbol]) res_list.append (([e.account[symbol][value] symbols in symbols] + [e.account[USDT][total]]) res = pd.DataFrame ((data=res_list, columns=symbols+[total],index = df.index)

[495] میں: ای.اکاؤنٹ[USDT] باہر[495]:

[496] میں: #backtest تمام علامتوں کی کارکردگی (res.total/10000).plot(figsize=(12,4),grid = True) ۔ df[symbols].mean ((axis=1).plot ((figsize=(12,4),grid=True) ؛ باہر[496]:img

[498] میں: #کم علامتوں کے ساتھ بہت بڑا اضافہ علامات = فہرست ((df.iloc[-1].sort_values() [:-10].index) e = ایکسچینج ((علامات، فیس=0.001، ابتدائی_باقی=10000) res_list = [] avg_pct = 1/len ((علامات) df[symbols].iterrows میں صف کے لئے: قیمتیں = قطار [1] کل = ای.اکاؤنٹ[USDT][کل] e.اپ ڈیٹ ((قیمتیں) علامات میں علامت کے لئے: pct = e.account[symbol][value]/کل اگر pct < 0.95*avg_pct: e.Buy ((symbol,prices[symbol],(avg_pct-pct) خریدیںکل/قیمتیں[علامت]) اگر pct > 1.05 ہوavg_pct: e.Sell ((symbol,prices[symbol],(pct-avg_pct) *کل/قیمتیں[symbol]) res_list.append (([e.account[symbol][value] symbols in symbols] + [e.account[USDT][total]]) res = pd.DataFrame ((data=res_list, columns=symbols+[total],index = df.index)

[501] میں: ای.اکاؤنٹ[USDT] باہر[501]:

میں [499]: (res.total/10000).plot(figsize=(12,4),grid = True) ۔ df[symbols].mean ((axis=1).plot ((figsize=(12,4),grid=True) ؛ باہر[499]:img

[503] میں: #صرف سب سے زیادہ اضافہ کے ساتھ علامتوں کی جانچ کریں علامات = list(df.iloc[-1].sort_values()[-3:].index) e = تبادلہ ((علامات، فیس=0.001، ابتدائی_باقی=10000) res_list = [] avg_pct = 1/len ((علامات) df[symbols].iterrows میں صف کے لئے ((): قیمتیں = قطار [1] کل = ای.اکاؤنٹ[USDT][کل] e.اپ ڈیٹ ((قیمتیں) علامتوں میں علامت کے لئے: pct = e.account[symbol][value]/کل اگر pct < 0.95*avg_pct: e.Buy ((symbol,prices[symbol],(avg_pct-pct) خریدیںکل/قیمتیں[علامت]) اگر pct > 1.05 ہوavg_pct: e.Sell ((symbol,prices[symbol],(pct-avg_pct) *کل/قیمتیں[symbol]) res_list.append (([e.account[symbol][value] symbols in symbols] + [e.account[USDT][total]]) res = pd.DataFrame ((data=res_list, columns=symbols+[total],index = df.index)

[504] میں: ای.اکاؤنٹ[USDT] باہر[504]:

[505] میں: (res.total/10000).plot(figsize=(12,4),grid = True) ۔ df[symbols].mean ((axis=1).plot ((figsize=(12,4),grid=True) ؛ باہر[505]:img

نتیجہ

عام طور پر ، 2021 کاپی کرنسیوں کے لئے ایک بڑا بیل مارکیٹ تھا اور بی ٹی سی کے لئے ایک ویران سال تھا۔ بی ٹی سی کی مارکیٹ ویلیو سال کے آغاز میں 70٪ سے گر کر اب 40٪ ہوگئی ہے ، جو پہلے ہی تاریخ کی سب سے کم سطح ہے۔ لہذا ، نقل کرنسی کے نشانات خریدنے اور انہیں رکھنے کا اوسط منافع گذشتہ سال بی ٹی سی رکھنے سے کہیں زیادہ تھا۔ 2022 کو آگے دیکھتے ہوئے ، اگر آپ کو لگتا ہے کہ مستقبل میں موجودہ مارکیٹ میں ابھی بھی کئی سو گنا کرنسیاں پیدا ہوں گی ، تو آپ جرات مندانہ طور پر اپنے پاس موجود کرنسی کے نشانات میں تنوع پیدا کرسکتے ہیں اور صبر سے انتظار کرسکتے ہیں۔ اگر آپ خاص طور پر چند کرنسی کے نشانات یا اوسط مارکیٹ کے بارے میں پرامید ہیں تو ، آپ بغیر سوچے زیادہ منافع حاصل کرنے کے لئے گردش کی حکمت عملی کا استعمال کرسکتے ہیں۔ اگر آپ اس بات پر متفق ہیں کہ جب وہ انتہائی ہوجائیں گے تو چیزیں مخالف سمت میں ترقی کریں گی ، تو آپ بہتر منافع اور سیکیورٹی کے لئے بی ٹی سی کے نیچے مچھلی مار سکتے ہیں۔


مزید