রিসোর্স লোড হচ্ছে... লোডিং...

ডিজিটাল মুদ্রা জোড়া ট্রেডিং কৌশল বিস্তারিত ব্যাখ্যা

লেখক:এফএমজেড-লিডিয়া, তৈরিঃ 2024-07-08 11:41:23, আপডেটঃ 2024-07-12 15:54:35

img

পরিচিতি

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

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

কৌশল নীতি

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

অনুমান করুন যে মুদ্রা A এবং মুদ্রা B এর একটি উচ্চ মূল্য সম্পর্ক রয়েছে। একটি নির্দিষ্ট মুহুর্তে, A / B মূল্য অনুপাতের গড় মান হল 1. যদি একটি নির্দিষ্ট মুহুর্তে, A / B মূল্য অনুপাত 0.001 এর বেশি, অর্থাৎ 1.001 এর বেশি বিচ্যুত হয়, তবে আপনি নিম্নলিখিত উপায়ে বাণিজ্য করতে পারেনঃ B এ একটি দীর্ঘ অবস্থান খুলুন এবং A এ একটি সংক্ষিপ্ত অবস্থান খুলুন। বিপরীতভাবে, যখন A / B মূল্য অনুপাত 0.999 এর চেয়ে কম হয়ঃ A এ একটি দীর্ঘ অবস্থান খুলুন এবং B এ একটি সংক্ষিপ্ত অবস্থান খুলুন।

মুনাফা অর্জনের মূল চাবিকাঠি হল যখন দামগুলি গড় থেকে বিচ্যুত হয় এবং স্বাভাবিক অবস্থায় ফিরে আসে তখন স্প্রেড লাভ হয়। যেহেতু মূল্য বিচ্যুতি সাধারণত স্বল্পকালীন হয়, ব্যবসায়ীরা যখন দামগুলি গড়ের দিকে ফিরে আসে এবং স্প্রেড থেকে মুনাফা অর্জন করে তখন তাদের অবস্থানগুলি বন্ধ করতে পারে।

তথ্য প্রস্তুত করুন

সংশ্লিষ্ট লাইব্রেরি আমদানি করুন

এই কোডগুলি সরাসরি ব্যবহার করা যেতে পারে। Anancoda ডাউনলোড করা এবং Jupyer নোটবুক এ এটি ডিবাগ করা ভাল। এটিতে সরাসরি সাধারণভাবে ব্যবহৃত ডেটা বিশ্লেষণের জন্য প্যাকেজ অন্তর্ভুক্ত রয়েছে।

import requests
from datetime import date,datetime
import time
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import requests, zipfile, io
%matplotlib inline

সব ট্রেডিং জোড়া ট্রেড করা হচ্ছে পেতে

Info = requests.get('https://fapi.binance.com/fapi/v1/exchangeInfo')
b_symbols = [s['symbol'] for s in Info.json()['symbols'] if s['contractType'] == 'PERPETUAL' and s['status'] == 'TRADING' and s['quoteAsset'] == 'USDT']
b_symbols = list(filter(lambda x: x[-4:] == 'USDT', [s.split('_')[0] for s in b_symbols]))
b_symbols = [x[:-4] for x in b_symbols]
print(b_symbols) # Get all trading pairs being traded

কে-লাইন ফাংশন ডাউনলোড করুন

GetKlines ফাংশনের প্রধান ফাংশন হ'ল বাইনান্স এক্সচেঞ্জ থেকে নির্দিষ্ট ট্রেডিং জোড়া চিরস্থায়ী চুক্তির historicalতিহাসিক কে-লাইন ডেটা প্রাপ্ত করা এবং একটি পান্ডা ডেটাফ্রেমে ডেটা সঞ্চয় করা। কে-লাইন ডেটাতে খোলার মূল্য, সর্বোচ্চ মূল্য, সর্বনিম্ন মূল্য, বন্ধের মূল্য এবং ট্রেডিং ভলিউমের মতো তথ্য অন্তর্ভুক্ত রয়েছে। এই সময় আমরা মূলত বন্ধের দামের ডেটা ব্যবহার করি।

def GetKlines(symbol='BTCUSDT',start='2020-8-10',end='2024-7-01',period='1h',base='fapi',v = 'v1'):
    Klines = []
    start_time = int(time.mktime(datetime.strptime(start, "%Y-%m-%d").timetuple()))*1000 + 8*60*60*1000
    end_time =  min(int(time.mktime(datetime.strptime(end, "%Y-%m-%d").timetuple()))*1000 + 8*60*60*1000,time.time()*1000)
    intervel_map = {'m':60*1000,'h':60*60*1000,'d':24*60*60*1000}
    while start_time < end_time:
        time.sleep(0.3)
        mid_time = start_time+1000*int(period[:-1])*intervel_map[period[-1]]
        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 and len(res_list) > 0:
            start_time = res_list[-1][0]+int(period[:-1])*intervel_map[period[-1]]
            Klines += res_list
        if type(res_list) == list and len(res_list) == 0:
            start_time = start_time+1000*int(period[:-1])*intervel_map[period[-1]]
        if mid_time >= end_time:
            break
    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')
    return df

ডাটা ডাউনলোড করুন

ডাটা ভলিউম তুলনামূলকভাবে বড়। দ্রুত ডাউনলোড করার জন্য, শুধুমাত্র গত তিন মাসের ঘন্টার K- লাইন ডেটা পাওয়া যায়। df_close সমস্ত মুদ্রার বন্ধ মূল্যের তথ্য ধারণ করে।

start_date = '2024-04-01'
end_date   = '2024-07-05'
period = '1h'
df_dict = {}

for symbol in b_symbols:   
    print(symbol)
    if symbol in df_dict.keys():
        continue
    df_s = GetKlines(symbol=symbol+'USDT',start=start_date,end=end_date,period=period)
    if not df_s.empty:
        df_dict[symbol] = df_s
df_close = pd.DataFrame(index=pd.date_range(start=start_date, end=end_date, freq=period),columns=df_dict.keys())
for symbol in symbols:
    df_close[symbol] = df_dict[symbol].close
df_close = df_close.dropna(how='all')

ব্যাকটেস্টিং ইঞ্জিন

আমরা নিম্নলিখিত ব্যাকটেস্টের জন্য একটি এক্সচেঞ্জ অবজেক্ট সংজ্ঞায়িত করি।

class Exchange:
    def __init__(self, trade_symbols, fee=0.0002, initial_balance=10000):
        self.initial_balance = initial_balance #Initial assets
        self.fee = fee
        self.trade_symbols = trade_symbols
        self.account = {'USDT':{'realised_profit':0, 'unrealised_profit':0, 'total':initial_balance,
                                'fee':0, 'leverage':0, 'hold':0, 'long':0, 'short':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 #Deduction fee
        self.account['USDT']['fee'] += price*amount*self.fee
        self.account[symbol]['fee'] += price*amount*self.fee
        if cover_amount > 0: #Close the position 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 the assets
        self.account['USDT']['unrealised_profit'] = 0
        self.account['USDT']['hold'] = 0
        self.account['USDT']['long'] = 0
        self.account['USDT']['short'] = 0
        for symbol in self.trade_symbols:
            if not np.isnan(close_price[symbol]):
                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'] = self.account[symbol]['amount']*close_price[symbol]
                if self.account[symbol]['amount'] > 0:
                    self.account['USDT']['long'] += self.account[symbol]['value']
                if self.account[symbol]['amount'] < 0:
                    self.account['USDT']['short'] += self.account[symbol]['value']
                self.account['USDT']['hold'] += abs(self.account[symbol]['value'])
                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)
        self.account['USDT']['leverage'] = round(self.account['USDT']['hold']/self.account['USDT']['total'],3)

ফিল্টার মুদ্রার সাথে সম্পর্ক বিশ্লেষণ

সম্পর্ক গণনা হল পরিসংখ্যানের একটি পদ্ধতি যা দুটি ভেরিয়েবলের মধ্যে রৈখিক সম্পর্ক পরিমাপ করতে ব্যবহৃত হয়। সর্বাধিক ব্যবহৃত সম্পর্ক গণনা পদ্ধতি হল পিয়ারসন সম্পর্ক সহগ। নীচে সম্পর্ক গণনার নীতি, সূত্র এবং বাস্তবায়ন পদ্ধতি রয়েছে। পিয়ারসন সম্পর্ক সহগ দুটি ভেরিয়েবলের মধ্যে রৈখিক সম্পর্ক পরিমাপ করতে ব্যবহৃত হয় এবং এর মান পরিসীমা -1 থেকে 1 এর মধ্যে রয়েছেঃ

  • 1 একটি নিখুঁত ধনাত্মক সম্পর্ক নির্দেশ করে, যেখানে দুটি পরিবর্তনশীল সর্বদা সিঙ্ক্রোনাইজেশন পরিবর্তন করে। যখন একটি পরিবর্তনশীল বৃদ্ধি পায়, অন্যটিও আনুপাতিকভাবে বৃদ্ধি পায়। এটি 1 এর কাছাকাছি যত বেশি, সম্পর্ক তত শক্তিশালী।
  • -1 একটি নিখুঁত নেতিবাচক সম্পর্ক নির্দেশ করে, যেখানে দুটি পরিবর্তনশীল সর্বদা বিপরীত দিক পরিবর্তন করে। এটি -1 এর কাছাকাছি যতই শক্তিশালী নেতিবাচক সম্পর্ক।
  • ০ মানে কোন রৈখিক সম্পর্ক নেই, দুটি ভেরিয়েবলের মধ্যে কোন সরল রেখা সম্পর্ক নেই।

পিয়ারসন কোঅর্ডিনেট কোঅর্ডিনেটর দুটি ভেরিয়েবলের মধ্যে তাদের কোভ্যারিয়েন্স এবং স্ট্যান্ডার্ড ডিভিয়েশন গণনা করে সম্পর্ক নির্ধারণ করে। সূত্রটি নিম্নরূপঃ

img

যার মধ্যেঃ

  • imgহ'ল ভেরিয়েবল এক্স এবং ওয়াই এর মধ্যে পিয়ারসন ক্যারেলেশন সহগ।
  • imgX এবং Y এর সহবিবর্তনীয়তা।
  • imgএবংimgযথাক্রমে X এবং Y এর মান বিচ্যুতি।

অবশ্যই, এটি কীভাবে গণনা করা হয় সে সম্পর্কে আপনার খুব বেশি চিন্তা করার দরকার নেই। আপনি পাইথনে সমস্ত মুদ্রার সম্পর্ক গণনা করতে 1 লাইন কোড ব্যবহার করতে পারেন। চিত্রটি একটি সম্পর্ক তাপ মানচিত্র দেখায়। লালটি ইতিবাচক সম্পর্ককে উপস্থাপন করে, নীলটি নেতিবাচক সম্পর্ককে উপস্থাপন করে এবং রঙটি যত গা dark়, সম্পর্ক তত শক্তিশালী। আপনি দেখতে পারেন যে বেশিরভাগ অঞ্চলটি গা dark় লাল, তাই ডিজিটাল মুদ্রার ইতিবাচক সম্পর্ক খুব শক্তিশালী।

img

import seaborn as sns
corr = df_close.corr()
plt.figure(figsize=(20, 20))
sns.heatmap(corr, annot=False, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('Correlation Heatmap of Cryptocurrency Closing Prices', fontsize=20);

কো-রেলেশনের উপর ভিত্তি করে, শীর্ষ 20 সর্বাধিক সম্পর্কিত মুদ্রা জোড়া নির্বাচন করা হয়। ফলাফলগুলি নিম্নরূপ। তাদের কো-রেলেশনগুলি খুব শক্তিশালী, সবগুলি 0.99 এর উপরে।

MANA     SAND     0.996562
ICX      ZIL      0.996000
STORJ    FLOW     0.994193
FLOW     SXP      0.993861
STORJ    SXP      0.993822
IOTA     ZIL      0.993204
         SAND     0.993095
KAVA     SAND     0.992303
ZIL      SXP      0.992285
         SAND     0.992103
DYDX     ZIL      0.992053
DENT     REEF     0.991789
RDNT     MANTA    0.991690
STMX     STORJ    0.991222
BIGTIME  ACE      0.990987
RDNT     HOOK     0.990718
IOST     GAS      0.990643
ZIL      HOOK     0.990576
MATIC    FLOW     0.990564
MANTA    HOOK     0.990563

সংশ্লিষ্ট কোডটি নিম্নরূপঃ

corr_pairs = corr.unstack()

# Remove self-correlation (i.e. values ​​on the diagonal)
corr_pairs = corr_pairs[corr_pairs != 1]

sorted_corr_pairs = corr_pairs.sort_values(kind="quicksort")

# Extract the top 20 most and least correlated currency pairs
most_correlated = sorted_corr_pairs.tail(40)[::-2]

print("The top 20 most correlated currency pairs are:")
print(most_correlated)

ব্যাকটেস্টিং যাচাইকরণ

নির্দিষ্ট ব্যাকটেস্ট কোডটি নিম্নরূপ। প্রদর্শন কৌশলটি মূলত দুটি ক্রিপ্টোকারেন্সির (আইওটিএ এবং জিআইএল) দামের অনুপাত পর্যবেক্ষণ করে এবং এই অনুপাতের পরিবর্তন অনুযায়ী বাণিজ্য করে। নির্দিষ্ট পদক্ষেপগুলি নিম্নরূপঃ

  1. প্রারম্ভিকীকরণঃ
  • ট্রেডিং জোড়া নির্ধারণ করুন (pair_a = IOTA, pair_b = ZIL) ।
  • একটি এক্সচেঞ্জ অবজেক্ট তৈরি করুনe১০,০০০ ডলারের প্রাথমিক ব্যালেন্স এবং ০.০২% লেনদেনের ফি দিয়ে।
  • প্রাথমিক গড় মূল্য অনুপাত গণনা করুনavg.
  • একটি প্রাথমিক লেনদেন মান সেট করুনvalue = 1000.
  1. দামের তথ্যের উপর পুনরাবৃত্তি করুনঃ
  • প্রতিটি সময় পয়েন্টে মূল্য তথ্য ক্রস করুনdf_close.
  • গড় থেকে বর্তমান মূল্য অনুপাতের বিচ্যুতি গণনা করেdiff.
  • লক্ষ্য লেনদেনের মানটি বিচ্যুতির ভিত্তিতে গণনা করা হয়aim_value০.০১ ডিভিয়েশনের জন্য একটি মান ট্রেড করা হয়। ক্রয় ও বিক্রয় ক্রয় ও বিক্রয় ক্রয় ও বিক্রয় ক্রয় ও বিক্রয় ক্রয় ও বিক্রয় ক্রয় ও বিক্রয় ক্রয় ও বিক্রয় ক্রয় ও বিক্রয় ক্রয় ক্রয় ক্রয় ও বিক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয় ক্রয়
  • যদি বিচ্যুতি খুব বড় হয়, বিক্রি কার্যকরpair_aএবং কিনতেpair_b operations.
  • যদি বিচ্যুতি খুব ছোট হয়, কিনতেpair_aএবং বিক্রিpair_bঅপারেশন করা হয়।
  1. গড় মান সামঞ্জস্য করুনঃ
  • গড় মূল্য অনুপাত আপডেট করেavgসর্বশেষ মূল্য অনুপাত প্রতিফলিত করতে।
  1. অ্যাকাউন্ট এবং রেকর্ড আপডেট করুন:
  • এক্সচেঞ্জ অ্যাকাউন্টের অবস্থান এবং ব্যালেন্সের তথ্য আপডেট করুন।
  • প্রতিটি ধাপে অ্যাকাউন্টের অবস্থা রেকর্ড করুন (মোট সম্পদ, আটককৃত সম্পদ, লেনদেনের ফি, দীর্ঘ ও সংক্ষিপ্ত অবস্থান)res_list.
  1. ফলাফল আউটপুটঃ
  • রূপান্তরres_listডেটাফ্রেমেresআরও বিশ্লেষণ এবং উপস্থাপনের জন্য।
pair_a = 'IOTA'
pair_b = "ZIL"
e = Exchange([pair_a,pair_b], fee=0.0002, initial_balance=10000) #Exchange definition is placed in the comments section
res_list = []
index_list = []
avg = df_close[pair_a][0] / df_close[pair_b][0]
value = 1000
for idx, row in df_close.iterrows():
    diff = (row[pair_a] / row[pair_b] - avg)/avg
    aim_value = -value * diff / 0.01
    if -aim_value + e.account[pair_a]['amount']*row[pair_a] > 0.5*value:
        e.Sell(pair_a,row[pair_a],(-aim_value + e.account[pair_a]['amount']*row[pair_a])/row[pair_a])
        e.Buy(pair_b,row[pair_b],(-aim_value - e.account[pair_b]['amount']*row[pair_b])/row[pair_b])
    if -aim_value + e.account[pair_a]['amount']*row[pair_a]  < -0.5*value:
        e.Buy(pair_a, row[pair_a],(aim_value - e.account[pair_a]['amount']*row[pair_a])/row[pair_a])
        e.Sell(pair_b, row[pair_b],(aim_value + e.account[pair_b]['amount']*row[pair_b])/row[pair_b])
    avg = 0.99*avg + 0.01*row[pair_a] / row[pair_b]
    index_list.append(idx)
    e.Update(row)
    res_list.append([e.account['USDT']['total'],e.account['USDT']['hold'],
                         e.account['USDT']['fee'],e.account['USDT']['long'],e.account['USDT']['short']])
res = pd.DataFrame(data=res_list, columns=['total','hold', 'fee', 'long', 'short'],index = index_list)
res['total'].plot(grid=True);

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

img

সম্ভাব্য ঝুঁকি এবং উন্নতির উপায়

যদিও জোড়া ট্রেডিং কৌশল তত্ত্বগতভাবে লাভজনক হতে পারে, তবুও প্রকৃত ক্রিয়াকলাপে কিছু ঝুঁকি রয়েছেঃ মুদ্রার মধ্যে সম্পর্ক সময়ের সাথে সাথে পরিবর্তিত হতে পারে, যার ফলে কৌশলটি ব্যর্থ হতে পারে; চরম বাজারের অবস্থার অধীনে, মূল্য বিচ্যুতি বৃদ্ধি পেতে পারে, যার ফলে বৃহত্তর ক্ষতি হতে পারে; কিছু মুদ্রার নিম্ন তরলতা লেনদেনগুলি কার্যকর করা কঠিন বা ব্যয় বাড়িয়ে তুলতে পারে; এবং ঘন ঘন লেনদেন দ্বারা উত্পন্ন ফি লাভ হ্রাস করতে পারে।

ঝুঁকি কমাতে এবং কৌশলগুলির স্থিতিশীলতা উন্নত করতে, নিম্নলিখিত উন্নতিমূলক ব্যবস্থা বিবেচনা করা যেতে পারেঃ নিয়মিতভাবে মুদ্রার মধ্যে সম্পর্ক পুনরায় গণনা করুন এবং ট্রেডিং জোড়াগুলি সময়মতো সামঞ্জস্য করুন; একটি একক লেনদেনের সর্বাধিক ক্ষতি নিয়ন্ত্রণ করতে স্টপ লস এবং মুনাফা পয়েন্ট সেট করুন; ঝুঁকিগুলি বৈচিত্র্য করার জন্য একই সাথে একাধিক মুদ্রা জোড়া বাণিজ্য করুন।

সিদ্ধান্ত

ডিজিটাল মুদ্রা জোড়া ট্রেডিং কৌশল মুদ্রার দামের সম্পর্ক এবং দামের বিচ্যুতিতে সালিশ অপারেশন সম্পাদন করে মুনাফা অর্জন করে। এই কৌশলটির উচ্চ তাত্ত্বিক সম্ভাব্যতা রয়েছে। এই কৌশলটির উপর ভিত্তি করে একটি সহজ লাইভ ট্রেডিং কৌশল উত্স কোড পরে প্রকাশ করা হবে। আপনার যদি আরও প্রশ্ন থাকে বা আরও আলোচনার প্রয়োজন হয় তবে দয়া করে যোগাযোগ করতে দ্বিধা করবেন না।


আরো