Сравнить значения словаря в al oop установить столбец на 1 или -1 python - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь установить покупки и продажи в столбце в фрейме данных словарей. Я создавал такие функции:

tff = ["GBPUSD","USDJPY","USDCHF","AUDUSD","GBPJPY","EURUSD","EURGBP","GBPCHF","GBPAUD","GBPAUD","USDCAD","EURCHF","EURCAD","AUDCAD","AUDCHF","AUDJPY","CADCHF"]       
TF = ["M1","M2","M3","M4","M5","M6","M10","M12","M15","M20","M30","H1","H2","H3","H4","H6","H8","H12","D1","W1",]

for r in TF:
    for item in tff:
        ratesC =  {item: {r:pd.DataFrame(mt5.copy_rates_from(item, getattr(mt5, 'TIMEFRAME_%s' % r), utc_from ,  288),
           columns=['time', 'open', 'low', 'high', 'close', 'tick_volume', 'spread', 'real_volume']).drop(['tick_volume','spread','real_volume'], axis=1)for r in TF}for item in tff } 

       
for k2, w2 in ratesC.items():
       for r in TF:
            w2[r]['time'] = pd.to_datetime(w2[r]['time'], unit='s')
            w2[r]['MA20'] = (w2['M1']['close'].rolling(window=20).mean())
            w2[r]['MA200'] = w2[r]['close'].rolling(window=200).mean()
            w2[r]['20dSTD'] = w2[r]['close'].rolling(window=20).std()
            w2[r]['Upper'] = w2[r]['MA20'] + (w2[r]['20dSTD'] * 2)
            w2[r]['Lower'] = w2[r]['MA20'] - (w2[r]['20dSTD'] * 2)


Я пытаюсь отобразить условия и установить для столбца значение 1 или -1, но это не работает, и я не уверен, как действовать дальше. Мне нужно использовать фреймы данных? Какой-нибудь совет?

for klk, wlkl in ratesC.values():
       for r in TF:            
         if wlkl[r]['close']  >=  wlkl[r]['AllHigh']:
                 wlkl[r]['AllHighPosition']  = -1
            
         if wlkl[r]['close']  <= wlkl[r]['AllLow1']:
                wlkl[r]['AllHighPosition']  = 1

1 Ответ

0 голосов
/ 11 июля 2020

Вы сравниваете значения, которые не являются int - они строковые, поэтому программа работает некорректно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...