Type/to search
3
Follow
1507
Followers
মন্দার বাজারের তলানিতে ক্রয়ের জন্য চিরস্থায়ী ভারসাম্য কৌশল
Discussions
Created 2022-06-02 10:00:04  Updated 2024-12-02 21:36:36
 7
 6500

img

অতীতে, FMZ আনুষ্ঠানিকভাবে একটি চিরস্থায়ী গ্রিড কৌশল প্রকাশ করেছিল, যা ব্যবহারকারীদের মধ্যে বেশ জনপ্রিয় ছিল এবং TRX-এর রিয়েল-টাইম ট্রেডিং গত বছর বা তারও বেশি সময় ধরে নিয়ন্ত্রণযোগ্য ঝুঁকি সহ প্রচুর লাভ অর্জন করেছে। একক টেকসই গ্রিড কৌশলেরও কিছু সমস্যা রয়েছে:

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

আমি পূর্বে ভারসাম্য কৌশলের নীতি এবং গ্রিড কৌশলের সাথে এর তুলনা সম্পর্কে একটি নিবন্ধ লিখেছি আপনি এখনও এটি উল্লেখ করতে পারেন: https://www.fmz.com/digest-topic/5930৷ ভারসাম্যপূর্ণ কৌশল সর্বদা একটি নির্দিষ্ট মান অনুপাত বা মান সহ একটি অবস্থান ধারণ করে, যখন এটি বেড়ে যায় তখন কিছু বিক্রি করে এবং যখন এটি পড়ে তখন এটি সহজভাবে সেট আপ করা যায়। মুদ্রার দাম অনেক বেড়ে গেলেও কম যাওয়ার আশঙ্কা নেই। স্পট ব্যালেন্সিং কৌশলের সমস্যা হল মূলধন ব্যবহারের হার কম এবং লিভারেজ বাড়ানোর কোন সহজ উপায় নেই। চিরস্থায়ী চুক্তি সমস্যার সমাধান করতে পারে। উদাহরণস্বরূপ, যদি মোট তহবিল 1,000 হয়, আপনি 2,000 স্থিরভাবে ধরে রাখতে পারেন, যা মূল তহবিলকে ছাড়িয়ে যায় এবং তহবিলের ব্যবহারের হারকে উন্নত করে। আরেকটি পরামিতি হল সামঞ্জস্য অনুপাত, যা নিয়ন্ত্রণ করে কত পজিশন যোগ করা বা কমানো হয় যখন দাম বেড়ে যায় বা কমে যায়, উদাহরণস্বরূপ, যদি এটি 0.01 সেট করা হয়, এর মানে হল মূল্য 1% বেড়ে গেলে পজিশনটি একবার কমে যাবে। এবং মূল্য 1% কমে গেলে, পজিশন একবার যোগ করা হবে।

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

আরও ট্রেডিং জোড়ার ব্যাকটেস্টিং সহজতর করার জন্য, এই ডকুমেন্টটি সম্পূর্ণ ব্যাকটেস্টিং প্রক্রিয়া দেখাবে ব্যবহারকারীরা তুলনা করার জন্য বিভিন্ন প্যারামিটার এবং ট্রেডিং পেয়ার সামঞ্জস্য করতে পারে। (সংস্করণটি হল Python3 এবং বাজারে ডাউনলোড করার জন্য একজন এজেন্টের প্রয়োজন৷ ব্যবহারকারীরা নিজেরাই Anancoda3 ডাউনলোড করতে পারেন বা Google এর colab এর মাধ্যমে চালাতে পারেন)

python
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
python
## 当前交易对 Info = requests.get('https://fapi.binance.com/fapi/v1/exchangeInfo') symbols = [s['symbol'] for s in Info.json()['symbols']] symbols = list(set(filter(lambda x: x[-4:] == 'USDT', [s.split('_')[0] for s in symbols]))- set(['1000SHIBUSDT','1000XECUSDT','BTCDOMUSDT','DEFIUSDT','BTCSTUSDT'])) + ['SHIBUSDT','XECUSDT'] print(symbols)
['FLMUSDT', 'ICPUSDT', 'CHZUSDT', 'APEUSDT', 'DARUSDT', 'TLMUSDT', 'ETHUSDT', 'STMXUSDT', 'ENJUSDT', 'LINKUSDT', 'OGNUSDT', 'RSRUSDT', 'QTUMUSDT', 'UNIUSDT', 'BNBUSDT', 'XLMUSDT', 'ATOMUSDT', 'LPTUSDT', 'UNFIUSDT', 'DASHUSDT', 'BTCUSDT', 'NEOUSDT', 'AAVEUSDT', 'DUSKUSDT', 'XRPUSDT', 'IOTXUSDT', 'CVCUSDT', 'SANDUSDT', 'XTZUSDT', 'IOTAUSDT', 'BELUSDT', 'MANAUSDT', 'IOSTUSDT', 'IMXUSDT', 'THETAUSDT', 'SCUSDT', 'DOGEUSDT', 'CELOUSDT', 'BNXUSDT', 'SNXUSDT', 'ZRXUSDT', 'HBARUSDT', 'DOTUSDT', 'ANKRUSDT', 'CELRUSDT', 'BAKEUSDT', 'GALUSDT', 'ICXUSDT', 'LRCUSDT', 'AVAXUSDT', 'C98USDT', 'MTLUSDT', 'FTTUSDT', 'MASKUSDT', 'RLCUSDT', 'MATICUSDT', 'COMPUSDT', 'BLZUSDT', 'CRVUSDT', 'ZECUSDT', 'RUNEUSDT', 'LITUSDT', 'ONEUSDT', 'ADAUSDT', 'NKNUSDT', 'LTCUSDT', 'ATAUSDT', 'GALAUSDT', 'BALUSDT', 'ROSEUSDT', 'EOSUSDT', 'YFIUSDT', 'SKLUSDT', 'BANDUSDT', 'ALGOUSDT', 'NEARUSDT', 'AXSUSDT', 'KSMUSDT', 'AUDIOUSDT', 'SRMUSDT', 'HNTUSDT', 'MKRUSDT', 'KLAYUSDT', 'FLOWUSDT', 'STORJUSDT', 'BCHUSDT', 'DYDXUSDT', 'ARUSDT', 'GMTUSDT', 'CHRUSDT', 'API3USDT', 'VETUSDT', 'KAVAUSDT', 'WAVESUSDT', 'EGLDUSDT', 'SFPUSDT', 'RENUSDT', 'SUSHIUSDT', 'SOLUSDT', 'RVNUSDT', 'ONTUSDT', 'BTSUSDT', 'ZILUSDT', 'GTCUSDT', 'ZENUSDT', 'ALICEUSDT', 'ETCUSDT', 'TRXUSDT', 'TOMOUSDT', 'FILUSDT', 'ARPAUSDT', 'CTKUSDT', 'BATUSDT', 'SXPUSDT', '1INCHUSDT', 'HOTUSDT', 'WOOUSDT', 'LINAUSDT', 'REEFUSDT', 'GRTUSDT', 'RAYUSDT', 'COTIUSDT', 'XMRUSDT', 'PEOPLEUSDT', 'OCEANUSDT', 'JASMYUSDT', 'TRBUSDT', 'ANTUSDT', 'XEMUSDT', 'DGBUSDT', 'ENSUSDT', 'OMGUSDT', 'ALPHAUSDT', 'FTMUSDT', 'DENTUSDT', 'KNCUSDT', 'CTSIUSDT', 'SHIBUSDT', 'XECUSDT']
python
#获取任意周期K线的函数 def GetKlines(symbol='BTCUSDT',start='2020-8-10',end='2021-8-10',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: 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) #print(url) 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

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

বর্তমান সূচকটি প্রায় 3, যা 2021 সালের শুরুর তুলনায় এখনও 200% বৃদ্ধি। বাজারের উন্নয়ন বিবেচনা করে, এটি বর্তমানে একটি আপেক্ষিক নীচে হওয়া উচিত।

যে মুদ্রাগুলির সর্বোচ্চ দাম বছরের শুরু থেকে 10 গুণেরও বেশি বেড়েছে:

'MKRUSDT': 10.294, 'CRVUSDT': 10.513, 'STORJUSDT': 10.674, 'SKLUSDT': 11.009, 'CVCUSDT': 11.026, 'SRMUSDT': 11.031, 'QTUMUSDT': 12.066, 'ALPHAUSDT': 12.103, 'ZENUSDT': 12.631, 'VETUSDT': 13.296, 'ROSEUSDT': 13.429, 'FTTUSDT': 13.705, 'IOSTUSDT': 13.786, 'COTIUSDT': 13.958, 'NEARUSDT': 14.855, 'HBARUSDT': 15.312, 'RLCUSDT': 15.432, 'SCUSDT': 15.6, 'GALAUSDT': 15.722, 'RUNEUSDT': 15.795, 'ADAUSDT': 16.94, 'MTLUSDT': 17.18, 'BNBUSDT': 17.899, 'RVNUSDT': 18.169, 'EGLDUSDT': 18.879, 'LRCUSDT': 19.499, 'ANKRUSDT': 21.398, 'ETCUSDT': 23.51, 'DUSKUSDT': 23.55, 'AUDIOUSDT': 25.306, 'OGNUSDT': 25.524, 'GMTUSDT': 28.83, 'ENJUSDT': 33.073, 'STMXUSDT': 33.18, 'IOTXUSDT': 35.866, 'AVAXUSDT': 36.946, 'CHZUSDT': 37.128, 'CELRUSDT': 37.273, 'HNTUSDT': 38.779, 'CTSIUSDT': 41.108, 'HOTUSDT': 46.466, 'CHRUSDT': 61.091, 'MANAUSDT': 62.143, 'NKNUSDT': 70.636, 'ONEUSDT': 84.132, 'DENTUSDT': 99.973, 'DOGEUSDT': 121.447, 'SOLUSDT': 140.296, 'MATICUSDT': 161.846, 'FTMUSDT': 192.507, 'SANDUSDT': 203.219, 'AXSUSDT': 270.41

যে মুদ্রাগুলির বর্তমান রিট্রেসমেন্ট সর্বোচ্চ পয়েন্টের তুলনায় 80%-এর বেশি:

ICPUSDT': 0.022, 'FILUSDT': 0.043, 'BAKEUSDT': 0.046, 'TLMUSDT': 0.05, 'LITUSDT': 0.053, 'LINAUSDT': 0.054, 'JASMYUSDT': 0.056, 'ALPHAUSDT': 0.062, 'RAYUSDT': 0.062, 'GRTUSDT': 0.067, 'DENTUSDT': 0.068, 'RSRUSDT': 0.068, 'XEMUSDT': 0.068, 'UNFIUSDT': 0.072, 'DYDXUSDT': 0.074, 'SUSHIUSDT': 0.074, 'OGNUSDT': 0.074, 'COMPUSDT': 0.074, 'NKNUSDT': 0.078, 'SKLUSDT': 0.08, 'DGBUSDT': 0.081, 'RLCUSDT': 0.085, 'REEFUSDT': 0.086, 'BANDUSDT': 0.086, 'HOTUSDT': 0.092, 'SRMUSDT': 0.092, 'RENUSDT': 0.092, 'BTSUSDT': 0.093, 'THETAUSDT': 0.094, 'FLMUSDT': 0.094, 'EOSUSDT': 0.095, 'TRBUSDT': 0.095, 'SXPUSDT': 0.095, 'ATAUSDT': 0.096, 'NEOUSDT': 0.096, 'FLOWUSDT': 0.097, 'YFIUSDT': 0.101, 'BALUSDT': 0.106, 'MASKUSDT': 0.106, 'ONTUSDT': 0.108, 'CELRUSDT': 0.108, 'AUDIOUSDT': 0.108, 'SCUSDT': 0.11, 'GALAUSDT': 0.113, 'GTCUSDT': 0.117, 'CTSIUSDT': 0.117, 'STMXUSDT': 0.118, 'DARUSDT': 0.118, 'ALICEUSDT': 0.119, 'SNXUSDT': 0.124, 'FTMUSDT': 0.126, 'BCHUSDT': 0.127, 'SFPUSDT': 0.127, 'ROSEUSDT': 0.128, 'DOGEUSDT': 0.128, 'RVNUSDT': 0.129, 'OCEANUSDT': 0.129, 'VETUSDT': 0.13, 'KSMUSDT': 0.131, 'ICXUSDT': 0.131, 'UNIUSDT': 0.131, 'ONEUSDT': 0.131, '1INCHUSDT': 0.134, 'IOTAUSDT': 0.139, 'C98USDT': 0.139, 'WAVESUSDT': 0.14, 'DUSKUSDT': 0.141, 'LINKUSDT': 0.143, 'DASHUSDT': 0.143, 'OMGUSDT': 0.143, 'PEOPLEUSDT': 0.143, 'AXSUSDT': 0.15, 'ENJUSDT': 0.15, 'QTUMUSDT': 0.152, 'SHIBUSDT': 0.154, 'ZENUSDT': 0.154, 'BLZUSDT': 0.154, 'ANTUSDT': 0.155, 'XECUSDT': 0.155, 'CHZUSDT': 0.158, 'RUNEUSDT': 0.163, 'ENSUSDT': 0.165, 'LRCUSDT': 0.167, 'CHRUSDT': 0.168, 'IOTXUSDT': 0.174, 'TOMOUSDT': 0.176, 'ALGOUSDT': 0.177, 'EGLDUSDT': 0.177, 'ARUSDT': 0.178, 'LTCUSDT': 0.178, 'HNTUSDT': 0.18, 'LPTUSDT': 0.181, 'SOLUSDT': 0.183, 'ARPAUSDT': 0.184, 'BELUSDT': 0.184, 'ETCUSDT': 0.186, 'ZRXUSDT': 0.187, 'AAVEUSDT': 0.187, 'CVCUSDT': 0.188, 'STORJUSDT': 0.189, 'COTIUSDT': 0.19, 'CELOUSDT': 0.191, 'SANDUSDT': 0.191, 'ADAUSDT': 0.192, 'HBARUSDT': 0.194, 'DOTUSDT': 0.195, 'XLMUSDT': 0.195

python
#下载所有交易对的收盘价 start_date = '2021-1-1' end_date = '2022-05-30' period = '1d' df_all = pd.DataFrame(index=pd.date_range(start=start_date, end=end_date, freq=period),columns=symbols) for i in range(len(symbols)): #print(symbols[i]) symbol = symbols[i] df_s = GetKlines(symbol=symbol,start=start_date,end=end_date,period=period,base='api',v='v3') df_all[symbol] = df_s[~df_s.index.duplicated(keep='first')].close
python
#指数变化 df_norm = df_all/df_all.fillna(method='bfill').iloc[0] #归一化 df_norm.mean(axis=1).plot(figsize=(15,6),grid=True);

png

python
#比年初的最高涨幅 max_up = df_all.max()/df_all.fillna(method='bfill').iloc[0] print(max_up.map(lambda x:round(x,3)).sort_values().to_dict())
{'JASMYUSDT': 1.0, 'ICPUSDT': 1.0, 'LINAUSDT': 1.0, 'WOOUSDT': 1.0, 'GALUSDT': 1.0, 'PEOPLEUSDT': 1.0, 'XECUSDT': 1.026, 'ENSUSDT': 1.032, 'TLMUSDT': 1.039, 'IMXUSDT': 1.099, 'FLOWUSDT': 1.155, 'ATAUSDT': 1.216, 'DARUSDT': 1.261, 'ALICEUSDT': 1.312, 'BNXUSDT': 1.522, 'API3USDT': 1.732, 'GTCUSDT': 1.833, 'KLAYUSDT': 1.891, 'BAKEUSDT': 1.892, 'DYDXUSDT': 2.062, 'SHIBUSDT': 2.281, 'BTCUSDT': 2.302, 'MASKUSDT': 2.396, 'SFPUSDT': 2.74, 'LPTUSDT': 2.75, 'APEUSDT': 2.783, 'ARUSDT': 2.928, 'CELOUSDT': 2.951, 'ZILUSDT': 2.999, 'LTCUSDT': 3.072, 'SNXUSDT': 3.266, 'XEMUSDT': 3.555, 'XMRUSDT': 3.564, 'YFIUSDT': 3.794, 'BANDUSDT': 3.812, 'RAYUSDT': 3.924, 'REEFUSDT': 4.184, 'ANTUSDT': 4.205, 'XTZUSDT': 4.339, 'CTKUSDT': 4.352, 'LITUSDT': 4.38, 'RSRUSDT': 4.407, 'LINKUSDT': 4.412, 'BCHUSDT': 4.527, 'DASHUSDT': 5.037, 'BALUSDT': 5.172, 'OCEANUSDT': 5.277, 'EOSUSDT': 5.503, 'RENUSDT': 5.538, 'XLMUSDT': 5.563, 'TOMOUSDT': 5.567, 'ZECUSDT': 5.654, 'COMPUSDT': 5.87, 'DGBUSDT': 5.948, 'ALGOUSDT': 5.981, 'ONTUSDT': 5.997, 'BELUSDT': 6.101, 'TRXUSDT': 6.116, 'ZRXUSDT': 6.135, 'GRTUSDT': 6.45, '1INCHUSDT': 6.479, 'DOTUSDT': 6.502, 'ETHUSDT': 6.596, 'KAVAUSDT': 6.687, 'ICXUSDT': 6.74, 'SUSHIUSDT': 6.848, 'AAVEUSDT': 6.931, 'BTSUSDT': 6.961, 'KNCUSDT': 6.966, 'C98USDT': 7.091, 'THETAUSDT': 7.222, 'ATOMUSDT': 7.553, 'OMGUSDT': 7.556, 'SXPUSDT': 7.681, 'UNFIUSDT': 7.696, 'XRPUSDT': 7.726, 'TRBUSDT': 8.241, 'BLZUSDT': 8.434, 'NEOUSDT': 8.491, 'FLMUSDT': 8.506, 'KSMUSDT': 8.571, 'FILUSDT': 8.591, 'IOTAUSDT': 8.616, 'BATUSDT': 8.647, 'ARPAUSDT': 9.055, 'UNIUSDT': 9.104, 'WAVESUSDT': 9.106, 'MKRUSDT': 10.294, 'CRVUSDT': 10.513, 'STORJUSDT': 10.674, 'SKLUSDT': 11.009, 'CVCUSDT': 11.026, 'SRMUSDT': 11.031, 'QTUMUSDT': 12.066, 'ALPHAUSDT': 12.103, 'ZENUSDT': 12.631, 'VETUSDT': 13.296, 'ROSEUSDT': 13.429, 'FTTUSDT': 13.705, 'IOSTUSDT': 13.786, 'COTIUSDT': 13.958, 'NEARUSDT': 14.855, 'HBARUSDT': 15.312, 'RLCUSDT': 15.432, 'SCUSDT': 15.6, 'GALAUSDT': 15.722, 'RUNEUSDT': 15.795, 'ADAUSDT': 16.94, 'MTLUSDT': 17.18, 'BNBUSDT': 17.899, 'RVNUSDT': 18.169, 'EGLDUSDT': 18.879, 'LRCUSDT': 19.499, 'ANKRUSDT': 21.398, 'ETCUSDT': 23.51, 'DUSKUSDT': 23.55, 'AUDIOUSDT': 25.306, 'OGNUSDT': 25.524, 'GMTUSDT': 28.83, 'ENJUSDT': 33.073, 'STMXUSDT': 33.18, 'IOTXUSDT': 35.866, 'AVAXUSDT': 36.946, 'CHZUSDT': 37.128, 'CELRUSDT': 37.273, 'HNTUSDT': 38.779, 'CTSIUSDT': 41.108, 'HOTUSDT': 46.466, 'CHRUSDT': 61.091, 'MANAUSDT': 62.143, 'NKNUSDT': 70.636, 'ONEUSDT': 84.132, 'DENTUSDT': 99.973, 'DOGEUSDT': 121.447, 'SOLUSDT': 140.296, 'MATICUSDT': 161.846, 'FTMUSDT': 192.507, 'SANDUSDT': 203.219, 'AXSUSDT': 270.41}
python
#当前最大回测 draw_down = df_all.iloc[-1]/df_all.max() print(draw_down.map(lambda x:round(x,3)).sort_values().to_dict())
{'ICPUSDT': 0.022, 'FILUSDT': 0.043, 'BAKEUSDT': 0.046, 'TLMUSDT': 0.05, 'LITUSDT': 0.053, 'LINAUSDT': 0.054, 'JASMYUSDT': 0.056, 'ALPHAUSDT': 0.062, 'RAYUSDT': 0.062, 'GRTUSDT': 0.067, 'DENTUSDT': 0.068, 'RSRUSDT': 0.068, 'XEMUSDT': 0.068, 'UNFIUSDT': 0.072, 'DYDXUSDT': 0.074, 'SUSHIUSDT': 0.074, 'OGNUSDT': 0.074, 'COMPUSDT': 0.074, 'NKNUSDT': 0.078, 'SKLUSDT': 0.08, 'DGBUSDT': 0.081, 'RLCUSDT': 0.085, 'REEFUSDT': 0.086, 'BANDUSDT': 0.086, 'HOTUSDT': 0.092, 'SRMUSDT': 0.092, 'RENUSDT': 0.092, 'BTSUSDT': 0.093, 'THETAUSDT': 0.094, 'FLMUSDT': 0.094, 'EOSUSDT': 0.095, 'TRBUSDT': 0.095, 'SXPUSDT': 0.095, 'ATAUSDT': 0.096, 'NEOUSDT': 0.096, 'FLOWUSDT': 0.097, 'YFIUSDT': 0.101, 'BALUSDT': 0.106, 'MASKUSDT': 0.106, 'ONTUSDT': 0.108, 'CELRUSDT': 0.108, 'AUDIOUSDT': 0.108, 'SCUSDT': 0.11, 'GALAUSDT': 0.113, 'GTCUSDT': 0.117, 'CTSIUSDT': 0.117, 'STMXUSDT': 0.118, 'DARUSDT': 0.118, 'ALICEUSDT': 0.119, 'SNXUSDT': 0.124, 'FTMUSDT': 0.126, 'BCHUSDT': 0.127, 'SFPUSDT': 0.127, 'ROSEUSDT': 0.128, 'DOGEUSDT': 0.128, 'RVNUSDT': 0.129, 'OCEANUSDT': 0.129, 'VETUSDT': 0.13, 'KSMUSDT': 0.131, 'ICXUSDT': 0.131, 'UNIUSDT': 0.131, 'ONEUSDT': 0.131, '1INCHUSDT': 0.134, 'IOTAUSDT': 0.139, 'C98USDT': 0.139, 'WAVESUSDT': 0.14, 'DUSKUSDT': 0.141, 'LINKUSDT': 0.143, 'DASHUSDT': 0.143, 'OMGUSDT': 0.143, 'PEOPLEUSDT': 0.143, 'AXSUSDT': 0.15, 'ENJUSDT': 0.15, 'QTUMUSDT': 0.152, 'SHIBUSDT': 0.154, 'ZENUSDT': 0.154, 'BLZUSDT': 0.154, 'ANTUSDT': 0.155, 'XECUSDT': 0.155, 'CHZUSDT': 0.158, 'RUNEUSDT': 0.163, 'ENSUSDT': 0.165, 'LRCUSDT': 0.167, 'CHRUSDT': 0.168, 'IOTXUSDT': 0.174, 'TOMOUSDT': 0.176, 'ALGOUSDT': 0.177, 'EGLDUSDT': 0.177, 'ARUSDT': 0.178, 'LTCUSDT': 0.178, 'HNTUSDT': 0.18, 'LPTUSDT': 0.181, 'SOLUSDT': 0.183, 'ARPAUSDT': 0.184, 'BELUSDT': 0.184, 'ETCUSDT': 0.186, 'ZRXUSDT': 0.187, 'AAVEUSDT': 0.187, 'CVCUSDT': 0.188, 'STORJUSDT': 0.189, 'COTIUSDT': 0.19, 'CELOUSDT': 0.191, 'SANDUSDT': 0.191, 'ADAUSDT': 0.192, 'HBARUSDT': 0.194, 'DOTUSDT': 0.195, 'XLMUSDT': 0.195, 'AVAXUSDT': 0.206, 'ANKRUSDT': 0.207, 'MTLUSDT': 0.208, 'MANAUSDT': 0.209, 'CRVUSDT': 0.213, 'API3USDT': 0.221, 'IOSTUSDT': 0.227, 'XRPUSDT': 0.228, 'BATUSDT': 0.228, 'MKRUSDT': 0.229, 'MATICUSDT': 0.229, 'CTKUSDT': 0.233, 'ZILUSDT': 0.233, 'WOOUSDT': 0.234, 'ATOMUSDT': 0.237, 'KLAYUSDT': 0.239, 'XTZUSDT': 0.245, 'IMXUSDT': 0.278, 'NEARUSDT': 0.285, 'GALUSDT': 0.299, 'APEUSDT': 0.305, 'ZECUSDT': 0.309, 'KAVAUSDT': 0.31, 'GMTUSDT': 0.327, 'FTTUSDT': 0.366, 'KNCUSDT': 0.401, 'ETHUSDT': 0.416, 'XMRUSDT': 0.422, 'BTCUSDT': 0.47, 'BNBUSDT': 0.476, 'TRXUSDT': 0.507, 'BNXUSDT': 0.64}

প্রথমত, আমরা পরবর্তী নিম্নমুখী প্রবণতা অনুকরণ করতে সহজতম কোড ব্যবহার করি এবং বিভিন্ন অবস্থানের মানের লিকুইডেশন মূল্যের দিকে তাকাই। যেহেতু কৌশলটি সর্বদা দীর্ঘ, তাই উল্টোদিকে কোন ঝুঁকি নেই। প্রাথমিক মূলধন হল 1000, মুদ্রার মূল্য হল 1, এবং সমন্বয় অনুপাত হল 0.01৷ ফলাফল নিম্নরূপ. এটি দেখা যায় যে 1.5 গুণ লিভারেজের সাথে লং পজিশন লিকুইডেশনের ঝুঁকি কম নয়, এটি 50% ড্রপ প্রতিরোধ করতে পারে। বর্তমান আপেক্ষিক নিম্ন পরিস্থিতির অধীনে, এটি একটি ঝুঁকি যা সহ্য করা যেতে পারে।

অবস্থানের মানদীর্ঘ লিকুইডেশন মূল্য যান
3000.035
5000.133
8000.285
10000.362
15000.51
20000.599
30000.711
50000.81
100000.904
python
for Hold_value in [300,500,800,1000,1500,2000,3000,5000,10000]: amount = Hold_value/1 hold_price = 1 margin = 1000 Pct = 0.01 i = 0 while margin > 0: i += 1 if i>500: break buy_price = (1-Pct)*Hold_value/amount buy_amount = Hold_value*Pct/buy_price hold_price = (amount * hold_price + buy_amount * buy_price) / (buy_amount + amount) amount += buy_amount margin = 1000 + amount * (buy_price - hold_price) print(Hold_value, round(buy_price,3))
300 0.035 500 0.133 800 0.285 1000 0.362 1500 0.51 2000 0.599 3000 0.711 5000 0.81 10000 0.904
python
#还是用原来的回测引擎 class Exchange: def __init__(self, trade_symbols, fee=0.0004, initial_balance=10000): self.initial_balance = initial_balance #初始的资产 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 #扣除手续费 self.account['USDT']['fee'] += price*amount*self.fee self.account[symbol]['fee'] += price*amount*self.fee if cover_amount > 0: #先平仓 self.account['USDT']['realised_profit'] += -direction*(price - self.account[symbol]['hold_price'])*cover_amount #利润 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): #对资产进行更新 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)

প্রথমত, আমরা TRX ভারসাম্যপূর্ণ কৌশলের কার্যকারিতা পরীক্ষা করি এই রাউন্ড অফ বিয়ার মার্কেটে TRX-এর সর্বাধিক রিট্রেসমেন্ট তুলনামূলকভাবে ছোট, তাই এর কিছু বিশেষ বৈশিষ্ট্য রয়েছে। ডেটা 2021 থেকে বর্তমান পর্যন্ত 5minK লাইন নির্বাচন করে প্রাথমিক মূলধন হল 1000, সমন্বয় অনুপাত হল 0.01, অবস্থানের মান হল 2000 এবং হ্যান্ডলিং ফি হল 0.0002৷

TRX-এর প্রারম্ভিক মূল্য ছিল 0.02676U, এবং এই সময়ের মধ্যে সর্বোচ্চ মূল্য 0.18U-এ পৌঁছেছে এবং এটি বর্তমানে 0.08U এর কাছাকাছি, এবং ওঠানামা খুবই হিংসাত্মক। আপনি যদি শুরু থেকে একটি দীর্ঘ-সংক্ষিপ্ত গ্রিড কৌশল চালান, তাহলে আপনি অনিবার্যভাবে একটি সংক্ষিপ্ত অবস্থান এবং অবসানের সাথে শেষ হবে। ভারসাম্য কৌশল একটি সমস্যা কম.

ব্যাকটেস্টের চূড়ান্ত রিটার্ন ছিল 0.18-এ TRX-এর রিটার্নের খুব কাছাকাছি। এই সময়ের মধ্যে, পদের মান চান্স বাড়ানো যেতে পারে। কিন্তু আয় 2000U এর নিচে অপরিবর্তিত রয়েছে। এটিও ভারসাম্য রক্ষার কৌশলের একটি অসুবিধা।

python
symbol = 'TRXUSDT' df_trx = GetKlines(symbol=symbol,start='2021-1-1',end='2022-5-30',period='5m')
python
df_trx.close.plot(figsize=(15,6),grid=True);

png

python
#TRX平衡策略回测 hold_value = 2000 pct = 0.01 e = Exchange([symbol], fee=0.0002, initial_balance=1000) init_price = df_trx.iloc[0].open res_list = [] #用于储存中间结果 e.Buy(symbol,init_price,hold_value/init_price) e.Update({symbol:init_price}) for row in df_trx.itertuples(): buy_price = (1-pct)*hold_value/e.account[symbol]['amount'] sell_price = (1+pct)*hold_value/e.account[symbol]['amount'] while row.low < buy_price: e.Buy(symbol,buy_price,pct*hold_value/buy_price) e.Update({symbol:row.close}) buy_price = (1-pct)*hold_value/e.account[symbol]['amount'] sell_price = (1+pct)*hold_value/e.account[symbol]['amount'] while row.high > sell_price: e.Sell(symbol,sell_price,pct*hold_value/sell_price) e.Update({symbol:row.close}) buy_price = (1-pct)*hold_value/e.account[symbol]['amount'] sell_price = (1+pct)*hold_value/e.account[symbol]['amount'] if int(row.time)%(60*60*1000) == 0: e.Update({symbol:row.close}) res_list.append([row.time, row.close, e.account[symbol]['amount'],e.account[symbol]['amount']*row.close, e.account['USDT']['total']-e.initial_balance]) res_trx = pd.DataFrame(data=res_list, columns=['time','price','amount','value','profit']) res_trx.index = pd.to_datetime(res_trx.time,unit='ms') print(pct,e.account['USDT']['realised_profit']+e.account['USDT']['unrealised_profit'] ,round(e.account['USDT']['fee'],0))
0.01 4524.226998288555 91.0
python
#收益 res_trx.profit.plot(figsize=(15,6),grid=True);

png

python
#实际占用杠杆 (res_trx.value/(res_trx.profit+1000)).plot(figsize=(15,6),grid=True);

png

আসুন আবার WAVES পরীক্ষা করা যাক এই মুদ্রাটি শুরুতে 6U থেকে সর্বোচ্চ 60U-এ উঠেছিল এবং শেষ পর্যন্ত 8U-এ ফিরে এসেছে। চূড়ান্ত আয় ছিল 4945, যা মুদ্রা ধারণ থেকে আয়ের চেয়ে অনেক বেশি।

python
symbol = 'WAVESUSDT' df_waves = GetKlines(symbol=symbol,start='2021-1-1',end='2022-5-30',period='5m')
python
df_waves.close.plot(figsize=(15,6),grid=True);

png

python
#TWAVES平衡策略回测 hold_value = 2000 pct = 0.01 e = Exchange([symbol], fee=0.0002, initial_balance=1000) init_price = df_waves.iloc[0].open res_list = [] #用于储存中间结果 e.Buy(symbol,init_price,hold_value/init_price) e.Update({symbol:init_price}) for row in df_waves.itertuples(): buy_price = (1-pct)*hold_value/e.account[symbol]['amount'] sell_price = (1+pct)*hold_value/e.account[symbol]['amount'] while row.low < buy_price: e.Buy(symbol,buy_price,pct*hold_value/buy_price) e.Update({symbol:row.close}) buy_price = (1-pct)*hold_value/e.account[symbol]['amount'] sell_price = (1+pct)*hold_value/e.account[symbol]['amount'] while row.high > sell_price: e.Sell(symbol,sell_price,pct*hold_value/sell_price) e.Update({symbol:row.close}) buy_price = (1-pct)*hold_value/e.account[symbol]['amount'] sell_price = (1+pct)*hold_value/e.account[symbol]['amount'] if int(row.time)%(60*60*1000) == 0: e.Update({symbol:row.close}) res_list.append([row.time, row.close, e.account[symbol]['amount'],e.account[symbol]['amount']*row.close, e.account['USDT']['total']-e.initial_balance]) res_waves = pd.DataFrame(data=res_list, columns=['time','price','amount','value','profit']) res_waves.index = pd.to_datetime(res_waves.time,unit='ms') print(pct,e.account['USDT']['realised_profit']+e.account['USDT']['unrealised_profit'] ,round(e.account['USDT']['fee'],0))
0.01 4945.149323437233 178.0
python
df_waves.profit.plot(figsize=(15,6),grid=True);

png

যাইহোক, গ্রিড কৌশলের পারফরম্যান্সের ব্যাকটেস্টিং, গ্রিড স্পেসিং 0.01 এবং গ্রিডের মান 10। প্রায় 10 গুণ বৃদ্ধির সাথে, WAVES এবং TRX উভয়ই বিশাল রিট্রেসমেন্টের সম্মুখীন হয়েছে, WAVES রিট্রেসিং 5,000U এবং TRX 3,000U ছাড়িয়ে গেলে, পজিশনটি মূলত লিকুইডেট হয়ে যাবে।

python
#网格策略 pct = 0.01 value = 10*pct/0.01 e = Exchange([symbol], fee=0.0002, initial_balance=1000) init_price = df_waves.iloc[0].open res_list = [] #用于储存中间结果 for row in df_waves.itertuples(): buy_price = (value / pct - value) / (value / (pct * init_price) + e.account[symbol]['amount']) sell_price = (value / pct + value) / (value / (pct *init_price) + e.account[symbol]['amount']) while row.low < buy_price: e.Buy(symbol,buy_price,value/buy_price) e.Update({symbol:row.close}) buy_price = (value / pct - value) / (value / (pct * init_price) + e.account[symbol]['amount']) #买单价格,由于是挂单成交,也是最终的撮合价格= while row.high > sell_price: e.Sell(symbol,sell_price,value/sell_price) e.Update({symbol:row.close}) sell_price = (value / pct + value) / (value / (pct *init_price) + e.account[symbol]['amount']) if int(row.time)%(60*60*1000) == 0: e.Update({symbol:row.close}) res_list.append([row.time, row.close, e.account[symbol]['amount'],e.account[symbol]['amount']*row.close, e.account['USDT']['total']-e.initial_balance]) res_waves_net = pd.DataFrame(data=res_list, columns=['time','price','amount','value','profit']) res_waves_net.index = pd.to_datetime(res_waves_net.time,unit='ms') print(pct,e.account['USDT']['realised_profit']+e.account['USDT']['unrealised_profit'] ,round(e.account['USDT']['fee'],0))
0.01 1678.0516101975015 70.0
python
res_waves_net.profit.plot(figsize=(15,6),grid=True);

png

python
#网格策略 pct = 0.01 value = 10*pct/0.01 e = Exchange([symbol], fee=0.0002, initial_balance=1000) init_price = df_trx.iloc[0].open res_list = [] #用于储存中间结果 for row in df_trx.itertuples(): buy_price = (value / pct - value) / (value / (pct * init_price) + e.account[symbol]['amount']) sell_price = (value / pct + value) / (value / (pct *init_price) + e.account[symbol]['amount']) while row.low < buy_price: e.Buy(symbol,buy_price,value/buy_price) e.Update({symbol:row.close}) buy_price = (value / pct - value) / (value / (pct * init_price) + e.account[symbol]['amount']) while row.high > sell_price: e.Sell(symbol,sell_price,value/sell_price) e.Update({symbol:row.close}) sell_price = (value / pct + value) / (value / (pct *init_price) + e.account[symbol]['amount']) if int(row.time)%(60*60*1000) == 0: e.Update({symbol:row.close}) res_list.append([row.time, row.close, e.account[symbol]['amount'],e.account[symbol]['amount']*row.close, e.account['USDT']['total']-e.initial_balance]) res_trx_net = pd.DataFrame(data=res_list, columns=['time','price','amount','value','profit']) res_trx_net.index = pd.to_datetime(res_trx_net.time,unit='ms') print(pct,e.account['USDT']['realised_profit']+e.account['USDT']['unrealised_profit'] ,round(e.account['USDT']['fee'],0))
0.01 -161.06952570521656 37.0
python
res_trx_net.profit.plot(figsize=(15,6),grid=True);

png

সারসংক্ষেপ

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

Related Recommendations
Comment
All comments (7)

    使用策略一定比持币不动更优吗?

    4 years ago

    每种策略都是在特定场景下有效,平衡策略是逆趋势策略,持币不动约等于不加仓不补仓杠杆为本金的顺趋势策略

    4 years ago

    怎么加入你们的千团大战?又如何使用你们的这个策略?

    4 years ago

    币安千团大战的策略在哪里呀?

    4 years ago

    美元加息缩表大背景下,加密货币市场还会处于熊市状态一段时间吧,这样的话最近半年内,像TRX、ETH这种是不是继续用网格收益率会高一些呢?

    4 years ago

    本文的缺点是没办法计算资费,长期持有的情况下,资费影响巨大!牛是资费通常为正,也就是说持有多仓会缴费,而且缴很多!而熊市反之。

    4 years ago

    牛逼

    4 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)