2021 ক্রিপ্টোকারেন্সি TAQ পর্যালোচনা এবং 10-বারের বৃদ্ধির সহজতম মিসড কৌশল

লেখক:নিনাবাদাস, সৃষ্টিঃ ২০২২-০৪-০৭ ১১ঃ৩৬ঃ৩২, আপডেটঃ ২০২২-০৪-১৩ ০৯ঃ২৫ঃ২৩

2021 ক্রিপ্টোকারেন্সি TAQ পর্যালোচনা এবং 10-বারের বৃদ্ধির সহজতম মিসড কৌশল

২০২১ সালের সমাপ্তি এবং ভবিষ্যতের কৌশল.ipynb

২০২১ সাল শেষ হতে চলেছে, এবং ডিইএফআই থেকে গেমএফআই পর্যন্ত হট স্পটগুলি একের পর এক আবির্ভূত হচ্ছে, এবং সামগ্রিকভাবে বাজারটি এখনও একটি ষাঁড়ের বাজারে রয়েছে। এখন ফিরে তাকিয়ে, আপনি ২০২১ সালে কত উপার্জন করেছেন? কোন সুযোগটি মিস করেছেন? কোনও সফল বিনিয়োগ আছে কি? সম্প্রতি, আমি গত বছরের ইতিহাসের বাজার কোটগুলি টানলাম এবং একটি অপ্রত্যাশিতভাবে সহজ মুনাফা কৌশল পেয়েছি, তবে এটি একটি মাল্টি-মুদ্রা সূচক।

প্ল্যাটফর্মে তালিকাভুক্ত অনেকগুলি মুদ্রা প্রতীক রয়েছে এবং অনেকগুলি অজানা হওয়ার জন্য নির্ধারিত এবং এমনকি ট্রেডিং থেকে প্রত্যাহার করা যেতে পারে। এখানে আমরা মুদ্রা প্রতীকগুলি বেছে নিই যা বিন্যান্স চিরস্থায়ী স্যুপে তালিকাভুক্ত হয়েছে। এগুলি সাধারণত পরীক্ষা করা হয়েছে এবং মূলধারার মুদ্রা হিসাবে স্বীকৃত, যা তুলনামূলকভাবে নিরাপদ। একটি সাধারণ স্ক্রিনিংয়ের পরে, কিছু সূচক মুদ্রা সরানো হয়েছিল এবং 134 টি মুদ্রা অবশেষে বেঁচে ছিল।

[1] এঃ আমদানির অনুরোধ তারিখ-সময় থেকে আমদানি তারিখ, তারিখ-সময় আমদানি সময় পিডি হিসাবে পান্ডা আমদানি করুন এনপি হিসাবে আমদানি করুন plt হিসাবে matplotlib.pyplot আমদানি করুন % ম্যাটপ্লটলিব ইনলাইন

[১৪৪] এঃ ##বর্তমান ট্রেডিং জোড়া ইনফো = অনুরোধ.গ্রেট"https://fapi.binance.com/fapi/v1/exchangeInfo’) symbols = [s[symbol] for s in Info.json() [symbols]]

[১৫৪] এঃ 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)

[১৫৫] এঃ print(len(symbols_f))

গত বছরের বাজার

তারপর, আমরা গত বছরের তাদের দৈনিক বন্ধ মূল্য পেতে, এবং আমরা লক্ষ্য করি যে কিছু মুদ্রা প্রতীক শুধুমাত্র একটি স্বল্প সময়ের জন্য বাজারে ছিল, তাই তথ্য unitization প্রক্রিয়াকরণ প্রয়োজন। তথ্য unitizing দ্বারা, সূচক গণনা করা যেতে পারে।

চূড়ান্ত সূচক মুনাফা প্রায় 12 গুণ, অর্থাৎ, আপনি যদি 2021 সালের 1 জানুয়ারী গড়ে এই 134 টি মুদ্রা প্রতীক কিনে থাকেন তবে কিছুই না করার চূড়ান্ত মুনাফা 12 গুণ, এবং এটি অনুমান করা হয় যে 90% এরও বেশি লোক গড় সূচককে ছাড়িয়ে যায় না। তাদের মধ্যে, সর্বাধিক হ্রাস সহ মুদ্রা প্রতীকগুলিঃ আইসিপি 93%, ডোডো 85% হ্রাস পেয়েছে এবং লিনা 75% হ্রাস পেয়েছে। প্রায় একশো গুণ বৃদ্ধিঃ সোল, এফটিএম, লুনা, ম্যাটিক, স্যান্ড, এক্সএস। তাদের মধ্যে, এক্সএস 168 গুণ বৃদ্ধি পেয়েছে এবং বৃহত্তম কালো ঘোড়া। মাঝারি 3 গুণ বৃদ্ধি পেয়েছে। বলা যেতে পারে যে সূচকটি মূলত পাবলিক চেইন এবং গেমস দ্বারা চালিত হয়। এই সময়ের মধ্যে নতুন তালিকাভুক্ত মুদ্রা প্রতীকগুলি বাদ দিয়ে বেঁচে থাকার পক্ষপাত রোধ করার জন্য, এটি প্রায় 11 গুণ মুনাফা অর্জন করেছে। এটি কেবল বিটিসির হোল্ডিং।

এটি একটি হতাশাজনক মুনাফা অনুপাত। আমি কঠোর পরিশ্রম করেছি এবং সমস্ত ধরণের কৌশল চেষ্টা করেছি, এবং আমি কোনও অতিরিক্ত প্রচেষ্টা না করে এমন এক বছরের মতো বেশি মুনাফা অর্জন করতে পারি নি। তবে, এটি লক্ষ করা উচিত যে অনুপাতের বেশ কয়েকটি বৃদ্ধি খুব বিশাল, এবং স্পষ্টতই সূচক থেকে বিচ্যুত হয়। যদি এই মুদ্রা প্রতীকগুলি বছরের শুরুতে নির্বাচিত না হয় তবে মুনাফাটি মধ্যস্থের কাছাকাছি হবে, যা অনেক কম বিশিষ্ট।

[১৫৭] এঃ #কোনও সময়ের মধ্যে 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 + 86060১০০০ end_time = int(time.mktime(datetime.strptime(end, %Y-%m-%d).timetuple()))1000 + 86060১০০০ intervel_map = {m:60১০০০,h:৬০601000,d:246060১০০০ 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 = requests.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) == তালিকাঃ শুরু_সময় = শুরু_সময়+১০০০int ((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

[১৬৪] এঃ df_all_s = pd.DataFrame ((index=pd.date_range ((start=2021-1-1, end=2021-12-28, freq=1d),columns=symbols_s) i এর জন্য range ((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

[১৬৫] এঃ df_all_s.tail() #ডাটা স্ট্রাকচার আউট[165]:

[১৭৪] এঃ df_all = df_all_s.fillna ((method=bfill) # পূরণ তথ্য df_norm = df_all/df_all.iloc[0] #unitization df_norm.mean ((axis=1).plot ((figsize=(12,4),grid=True); # চূড়ান্ত সূচক মুনাফার চার্ট আউট[174]:img

[১৭৫] এঃ # মধ্যম বৃদ্ধি df_norm.median ((axis=1).plot ((figsize=(12,4),grid=True); আউট[175]:img

[১৬৮] এঃ #উঠা এবং পতন বাছাই print ((df_norm.iloc[-1].round ((2).sort_values().to_dict())

[317] এঃ গত বছরের সর্বোচ্চ মূল্যের তুলনায় বর্তমান মূল্যের সর্বোচ্চ প্রত্যাহার print (((1-df_norm.iloc[-1]/df_norm.max()) round ((2).sort_values().to_dict())

[১৭৭] এঃ df_all_f = pd.DataFrame ((index=pd.date_range ((start=2021-1-1, end=2021-12-28, freq=1d),columns=symbols_s) i এর জন্য range ((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

[২১২] এঃ #বিটিসির তুলনায় (df.mean(axis=1)/df.BTCUSDT).plot(figsize=(12,4),grid=True); আউট[212]:img

[২১৩] এঃ # পুরানো ব্যাকটেস্ট ইঞ্জিন ব্যবহার করুন ক্লাস এক্সচেঞ্জঃ

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] এঃ # আরো সঠিক ব্যাকটেস্টের জন্য, 1 ঘন্টা কে-লাইন ক্রল করুন df_all_s = pd.DataFrame ((index=pd.date_range ((start=2021-1-1, end=2021-12-28, freq=1h),columns=symbols_s) i এর জন্য range ((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

সুষম কৌশল কার্যকারিতা

ব্যাকটেস্টটি 1 জানুয়ারী, 2021 তারিখে বাইনান্স চিরস্থায়ী চুক্তিতে তালিকাভুক্ত সমস্ত মুদ্রা প্রতীক নির্বাচন করেছে। কে-লাইন সময়কাল 1h, এবং পরামিতিটি হ'ল পজিশন পরিমাণ গড়ের 5% এর চেয়ে কম হলে কিনতে শুরু করুন এবং 5% এর বেশি হলে বিক্রি শুরু করুন। যখন ব্যাকটেস্টটি সমস্ত মুদ্রা প্রতীকগুলির হয়, চূড়ান্ত কৌশল লাভ 7.7 গুণ। 13 গুণের গড় লাভের তুলনায় উল্লেখযোগ্যভাবে খারাপ। এটিও আমার প্রত্যাশায়। সর্বোপরি, সেই মুদ্রা প্রতীকগুলি যা একশত গুণ বৃদ্ধি পেয়েছে সেগুলি খুব বিশেষ, এবং ভারসাম্যপূর্ণ কৌশল তাদের সমস্ত বিক্রি করবে।

যদি ব্যাকটেস্টটি সর্বোচ্চ বৃদ্ধির সাথে 10 টি মুদ্রা প্রতীক অপসারণের সিদ্ধান্ত নেয় এবং কেবলমাত্র তুলনামূলকভাবে মাঝারি মুদ্রা প্রতীকগুলি পরীক্ষা করে, চূড়ান্ত মুনাফা 4.8 গুণ, যা 3.4 গুণের গড় পারফরম্যান্সের চেয়ে অনেক বেশি।

যদি শুধুমাত্র সর্বোচ্চ বৃদ্ধি সহ 3 টি মুদ্রা প্রতীক ঘোরানো হয়, তাহলে চূড়ান্ত মুনাফা 373 গুণ, যা 160 গুণের গড় পারফরম্যান্সের তুলনায় অনেক বেশি। এটি দেখায় যে যদি নির্বাচিত ঘোরানো মুদ্রা প্রতীকটির প্রবণতা এবং বৃদ্ধি ধারাবাহিক হয়, তবে ঘোরানোর ফলাফলটি ঘোরানোর চেয়ে অনেক ভাল হবে।

[৪৯৪] এঃ #backtest সব চিহ্ন symbols = list ((df.iloc[-1].sort_values() [:].index) e = এক্সচেঞ্জ ((সিম্বল, ফি=০.০০১, প্রাথমিক_বালান্স=১০০০০) 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) *total/prices[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)

[৪৯৫] এঃ e.account[USDT] আউট[495]:

[৪৯৬] এঃ #backtest সব চিহ্ন কর্মক্ষমতা (res.total/10000).plot ((figsize=(12,4), গ্রিড = সত্য); df[symbols].mean ((axis=1).plot ((figsize=(12,4),grid=True); আউট[496]:img

[৪৯৮] এঃ # বড় বৃদ্ধি সঙ্গে প্রতীক হ্রাস symbols = list ((df.iloc[-1].sort_values() [:-10].index) e = এক্সচেঞ্জ ((সিম্বল, ফি=০.০০১, প্রাথমিক_বালান্স=১০০০০) res_list = [] avg_pct = 1/len (প্রতীক) df[symbols].iterrows ((() এর রঙের জন্যঃ দাম = সারি [1] মোট = ই.অ্যাকাউন্ট[USDT][মোট] e. আপডেট ((মূল্য) চিহ্নের মধ্যে চিহ্নের জন্যঃ pct = e.account[symbol][value]/total যদি 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) *total/prices[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)

[৫০১] এঃ e.account[USDT] আউট[501]:

৪৯৯ সালেঃ (res.total/10000).plot ((figsize=(12,4), গ্রিড = সত্য); df[symbols].mean ((axis=1).plot ((figsize=(12,4),grid=True); আউট [499]:img

[৫০৩] এঃ #শুধুমাত্র সর্বোচ্চ বৃদ্ধি সঙ্গে চিহ্ন পরীক্ষা symbols = list ((df.iloc[-1].sort_values() [-3:].index) e = এক্সচেঞ্জ ((সিম্বল, ফি=০.০০১, প্রাথমিক_বালান্স=১০০০০) 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) *total/prices[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)

[৫০৪] এঃ e.account[USDT] আউট[504]:

[৫০৫] এঃ (res.total/10000).plot ((figsize=(12,4), গ্রিড = সত্য); df[symbols].mean ((axis=1).plot ((figsize=(12,4),grid=True); আউট[505]:img

সিদ্ধান্ত

সাধারণভাবে, ২০২১ সালটি অনুলিপি মুদ্রার জন্য একটি বড় ষাঁড়ের বাজার এবং বিটিসির জন্য একটি নির্জন বছর ছিল। বিটিসির বাজার মূল্য বছরের শুরুতে ৭০% থেকে এখন ৪০% এ নেমে গেছে, যা ইতিমধ্যে ইতিহাসের সর্বনিম্ন স্তরে রয়েছে। অতএব, গত বছরে অনুলিপি মুদ্রার প্রতীকগুলি কেনার এবং তাদের ধরে রাখার গড় মুনাফা বিটিসি রাখার তুলনায় অনেক বেশি ছিল। ২০২২ সালের দিকে এগিয়ে তাকিয়ে, যদি আপনি মনে করেন যে ভবিষ্যতে বর্তমান বাজারে এখনও কয়েকশ গুণ মুদ্রা জন্মগ্রহণ করবে, আপনি সাহসের সাথে আপনার রাখা মুদ্রার প্রতীকগুলি বৈচিত্র্যময় করতে পারেন এবং ধৈর্য সহকারে অপেক্ষা করতে পারেন। যদি আপনি কয়েকটি মুদ্রার প্রতীক বা গড় বাজারের বিষয়ে বিশেষভাবে আশাবাদী হন তবে আপনি চিন্তা না করে অতিরিক্ত মুনাফা অর্জনের জন্য ঘূর্ণন কৌশলটি ব্যবহার করতে পারেন। যদি আপনি সম্মত হন যে জিনিসগুলি যখন চরম হয়ে যায় তখন বিটিসি বিপরীত দিকে বিকশিত হবে, আপনি আরও ভাল মুনাফা এবং সুরক্ষার জন্য নীচে মাছ ধরতে পারেন।


আরো