Ich möchte das letzte Element einer Liste abrufen. Ich benutze die Liste [-1], aber es meldet Index außerhalb des Bereichs. Der Schritt der Funktion ist für jedes i im Bereich (0, Tage), zuerst um tr zu berechnen, dann sei N = mean tr. Vergleichen Sie den Strom N mit dem vorherigen N, wenn Strom N> 1.5 vorheriger N, dann erzeugen Sie das Signal 1, andernfalls erzeugen Sie das Signal 0. Wie kann ich dieses Problem lösen?Liste [-1] meldet Index außerhalb des Bereichs Fehler
Hier ist der Code:
def cal_N():
if days <= number_days:
lst = []
for i in range(0,days): #cal tr
h_l = sh600004['high'][i]-sh600004['low'][i]
h_p = sh600004['high'][i]-sh600004['close'][i-1]
p_l = sh600004['close'][i-1]-sh600004['high']
tr = np.max(h_l,h_p,p_l)
lst.append(tr) #append tr
#calculate current N
current_N = np.mean(np.array(lst))
#signals['sys1 add'][date] = np.where(current_N > (N[-1]*0.5), 1.0, 0.0)
if current_N>(N[-1]*0.5):
positions['sh600004'] = 100 * signals['system1'] + 100*signals['system1'][i]
print(positions)
else:
positions['sh600004'] = 100 * signals['system1']
print(positions)
N.append(current_N)
else:
h_l = sh600004['high'][0]-sh600004['low'][0]
h_p = sh600004['high'][0]-sh600004['close'][0]
p_l = sh600004['close'][0]-sh600004['low'][0]
# Calculate the True Range
tr = max(h_l, h_p, p_l)
current_N = (tr + (number_days -1)*(N))/number_days
#signals['sys1 add'][date] = np.where(current_N > (N[-1]*0.5), 1.0, 0.0)
if current_N>(N[-1]*0.5):
positions['sh600004'] = 100 * signals['system1'] + 100*signals['system1'][i]
print(positions)
else:
positions['sh600004'] = 100 * signals['system1']
print(positions)
N.append(current_N)
Versuchen Sie, Ihr Beispiel kleiner zu machen. Es scheint so, als ob der größte Teil dieses Codes für die Frage irrelevant ist, und dies wird nicht in einer geschlossenen Umgebung laufen (wo ist zum Beispiel 'N' definiert) – Cireo
Wenn 'lst [-1]' dann einen 'IndexError' verursacht Die Liste ist leer. – AChampion