এ সম্পর্কেঃম্যাকড পরিমাণ মূল্য বিপরীত যখন হোল্ডিং মুদ্রা বিক্রিমূলনীতি বাস্তবায়নঃবর্তমান ম্যাকডি মান দিয়ে শুরু করুন এবং বর্তমান ম্যাকডি মানের চেয়ে বড় একটি সূচক খুঁজে বের করুন, যা বর্তমান ম্যাকডি মানের চেয়ে বড় একটি সূচক সম্পর্কিত কে-লাইন বন্ধের মূল্যকে লক করে দেয়, যা বর্তমান ম্যাকডি মানের মধ্যে সর্বাধিক মানের মধ্যে প্রাসঙ্গিক কে-লাইন দামকে লক করে দেয়, যদি বর্তমান দামটি অঞ্চলের সর্বোচ্চ মূল্যের চেয়ে বড় হয় তবে বিক্রয় শুরু হয়। ম্যাকড ডেটা জুড়ে সর্বাধিক সংরক্ষণের দৈর্ঘ্য 15 এর চেয়ে বড় হলে, ম্যাকডের সর্বাধিক মান নির্বাচন করুন রিসেট ডেটাঃ
ব্যাখ্যাঃকৌশলটি কেবলমাত্র তাত্ক্ষণিকভাবে সমর্থন করে, একাধিক মুদ্রায় একসাথে চালানো যেতে পারে, উত্স কোডটি কেবলমাত্র রেফারেন্সের জন্য, বাস্তব ডিস্ক অপারেশন দয়া করে সাবধানতার সাথে চালান।
'''backtest start: 2023-01-01 00:00:00 end: 2023-05-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Bitfinex","currency":"BTC_USD","stocks":10}] ''' # from matplotlib import pyplot as plt # plt.figure() class ExitTop(object): def __init__(self,index): self.index = index self.totestlist = [] # MACD数据 self.klist = [] # k线数据 self.toplus = [] self.tocpn = [] self.Sell = False # 获取k线及MACD数据 def GetRecord(self) -> bool: self.totestlist = [] self.klist = [] self.toplus = [] self.tocpn = [] records = exchanges[self.index].GetRecords() macd = TA.MACD(records, 12, 26, 9) # 判断DIF是否大于DEA if not macd[0][-2] > macd[1][-2] and macd[0][-3] < macd[1][-3] or not macd[0][-2] > macd[1][-2] and macd[0][-4] < macd[1][-4]: return False self.totestlist = macd[0][len(macd[0])-80:] # 封装k线数据 for get in range(len(records)): self.klist.append(records[get]["Close"]) self.klist = self.klist[len(self.klist)-80:] return True def mepath(self): if not self.GetRecord(): return False # 向前遍历发现最大值 maxsign = -1000000000000 for i in range(len(self.totestlist)-1,-1,-1): if self.totestlist[i] > maxsign: maxsign = self.totestlist[i] self.tocpn.append([1,i]) else: if len(self.tocpn) > 0: self.tocpn[-1][0] = self.tocpn[-1][0]+1 self.toplus.insert(0,maxsign) sign = False shorttime = [0,0] # 步长 , 索引 for i in range(len(self.tocpn)): if self.tocpn[i][0] > 15 and sign == False: shorttime = [self.tocpn[i][0],self.tocpn[i][1]] sign = True # 如果最大索引不是自己 if shorttime[1] < len(self.klist)-4: # 锁定区域内最高价格 are = max(self.klist[shorttime[1]:-4]) # 判断是否存在大于当前macd值,如果当前价格大于区域内最高价格 if self.totestlist[-2]+300 < self.totestlist[shorttime[1]] and self.klist[-2] >= are: return True return False return False def main(self): result = self.mepath() if result == True and self.Sell == False: exchanges[self.index].Sell(-1, num) self.Sell = True elif result == False: if self.Sell == True: self.Sell = False # plt.plot(self.totestlist) # plt.plot(self.toplus) # LogStatus(plt) def main(): transaction = [] for index in range(len(exchanges)): transaction.append(ExitTop(index)) while True: for tran in range(len(transaction)): transaction[tran].main() Sleep(1000*60)