Wert soll nur nach Veränderung ausgegeben werden.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Zerox035
User
Beiträge: 5
Registriert: Montag 8. März 2021, 21:38

Servus,
habe eine Frage zu folgendem Skript. Da sich die Definition der Variablen über 170 Zeilen ersteckt, habe ich mir gedacht, dass ich euch nur den für meine Frage relevanten Teil herauskopiere.
Nun zu meiner Frage:
Wie ihr im Output sehen könnt wird bisher immer alle 60 Sekunden geprüft, welches Signal korrekt ist und dieses wird dann im Output ausgegeben. Mein Ziel wäre nun, dass das Signal nur ausgegeben wird, wenn eine Änderung dieser Variable vorliegt.
D. h. der Output sollte wie folgt aussehen: sell, buy, sell, buy

Ich bin, wie man an meiner Frage sehen kann, noch ein Anfäger.
Würde mich deshalb sehr über eine Lösung oder ein Stichwort für die richtige Suche freuen :)

Danke im Voraus!



while 0 == 0:

if ema_20 > ema_010:
signal = 'sell'
else:
signal = 'buy'

print(signal)

time.sleep(60)


Output (nach 3x60 Sekunden):
sell
sell
sell
JakobPrie
User
Beiträge: 91
Registriert: Sonntag 21. Juni 2020, 11:12

Hi,
wie wäre es, wenn du ne zusätzliche variable last_signal (außerhalb der while-schleife) machst und dann mit ner simplen if-Abfrage das prüfst (also if last_signal == signal: print(...))

Außerdem mach bitte "while True" und nicht "while 0 == 0" :D
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@Zerox035: 170 Zeilen hört sich nicht gut an. Zwar gibt es für die Länge einer Funktion keine Obergrenze, aber je kürzer, desto besser. Das lässt sich auch besser testen. Wenn ich JakobPries Idee aufgreife, könnte das so aussehen:

Code: Alles auswählen

previous_signal = None
while True:
    signal = get_signal()
    if signal != previous_signal:
        previous_signal = signal
        do_action(signal)
...
Wo das Signal herkommt und was bei Änderung anschließend zu tun ist, ist hier in andere Funktionen ausgelagert. So kannst Du ein Programm kleinteiliger halten und übersichtlicher gestalten.
Antworten