Не работает elif после if
Не могу решить следующию проблему:
Код довольно простой. У нас есть библиотека tradingview_ta
По задача код должен запускать цикл while true дальше проходимся по словарю и берем значение монет и проверяем его на условие. Если выйдет значение "BUY" либо же "STRONG_BUY" он должен купить и ждать пока следующее условие не поменяется на "SELL" либо же "STRONG_SELL" и продавать монету. Код не должен покупать новую валюту пока не продаст уже купленную. И когда из словаря берет монету и нету условия на покупку он должен переходить к следующей монете пока условия на покупку не совпадут.
Но в моем коде. Срабатывает первое условие (if) на покупку и он не ждет пока выйдет условия (elif) на продажу а постоянно покупает новые и новые валюты. Видимо я условие на продажу поставил не правильно. Помогите разобраться и поставить правильное условие:
from tradingview_ta import TA_Handler, Interval, Exchange
last_order = {
'TRBUSDT': 'sell',
'ALGOUSDT': 'sell',
'COTIUSDT': 'sell'}
while True:
for key, values in last_order.items():
tesla = TA_Handler(
symbol=key,
exchange="BINANCE",
screener="CRYPTO",
interval=Interval.INTERVAL_1_MINUTE,
)
rec = tesla.get_analysis().moving_averages["RECOMMENDATION"]
if "STRONG_BUY" in rec and values == "sell" or "BUY" in rec and values == "sell":
values = "buy"
elif "SELL" in rec and values == "buy" or "STRONG_SELL" in rec and values == "buy":
values = "sell"
От того, что ты что-то присвоил values, значение в last_order никак не поменялось: как было 'sell', так и осталось. И на каждой итерации цикла for значение values снова будет 'sell'.
last_order = {
'TRBUSDT' : 'sell',
'ALGOUSDT': 'sell',
'COTIUSDT': 'sell'
}
while True:
for key in last_order:
tesla = TA_Handler(
symbol=key,
exchange='BINANCE',
screener='CRYPTO',
interval=Interval.INTERVAL_1_MINUTE,
)
rec = tesla.get_analysis().moving_averages['RECOMMENDATION']
if last_order[key] == 'sell' and ('STRONG_BUY' in rec or 'BUY' in rec):
last_order[key] = 'buy'
elif last_order[key] == 'buy' and ('STRONG_SELL' in rec or 'SELL' in rec):
last_order[key] = 'sell'
Судя по всему, ты собираешься наступить на грабли очередного лохотрона очередных "биржевых сигналов".
Делай элиф не внутри блока иф, а для него сделай новый блок
логично, если elif не отрабатывает, значит выполняется условие if, для понимания перед условием выводи поступающие данные и тогда станет понятно, почему так