ایم اے سی ڈی کی چھلانگ کی حکمت عملی

مصنف:پروگرام، تاریخ: 2022-04-09 21:23:14
ٹیگز:

اس کا تعارف:MACD کی مقدار کی قیمتوں میں انحراف کے دوران ہولڈنگ کرنسی فروختاصولوں کو پورا کرنا:موجودہ MACD ویلیو کے ساتھ آگے بڑھنے کے لئے شروع کریں تاکہ موجودہ MACD ویلیو سے زیادہ انڈیکس کے مساوی K لائن اختتامی قیمتوں کا پتہ لگایا جاسکے ، جس سے متعلقہ K لائن کی قیمت کو موجودہ اختتامی K لائن کی حد میں سب سے زیادہ قیمت تک لاک کیا جاسکے ، اور اگر موجودہ قیمت علاقے میں سب سے زیادہ قیمت سے زیادہ ہے تو فروخت کو متحرک کیا جائے۔ MACD ڈیٹا میں آگے بڑھنے کے لئے جب زیادہ سے زیادہ ذخیرہ کی لمبائی 15 سے زیادہ ہو تو ، قریب ترین MACD کی زیادہ سے زیادہ قیمت کو منتخب کریںimg اعداد و شمار کی جانچ پڑتال: img

وضاحت:حکمت عملی صرف فوری طور پر حمایت کرتا ہے، ایک ہی وقت میں کئی کرنسیوں میں چل سکتا ہے، ماخذ کوڈ صرف حوالہ کے لئے ہے، براہ مہربانی احتیاط سے چلائیں.


'''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)

مزید