<jupyter_start><jupyter_text>Obtendo e Tratando dados<jupyter_code>carteira = 1111
acao_codigo = 'BBSE3'
mm1 = ('MM20', 13)
mm2 = ('MM200', 200)
var = 20
dados = pd.DataFrame()
dados[acao_codigo] = wb.get_data_yahoo(acao_codigo+'.SA', start=2000)['Adj Close']
dados
dados[mm1[0]] = dados[acao_codigo].rolling(mm1[1]).mean()
dados[mm2[0]] = dados[acao_codigo].rolling(mm2[1]).mean()
dados = dados.dropna()
print(dados)
dados.plot(figsize=(22,8), label=acao_codigo)
plt.show()
def format_money(m):
    return f'R$ {m:.2f}'
n, lucro, h = 0, 0, 0
compra, vende = 0, 0
aporte = carteira
print(f'Carteira: {format_money(carteira)}')
stopAtivado = False
precoStopAtivado = 0
for i in dados.index:
    preco_acao = dados[acao_codigo][i]
    dia = f'{i.year}/{i.month:02}/{i.day:02}'
    # Comprando
    if dados[mm1[0]][i] >= dados[mm2[0]][i] and dados[mm1[0]][h] <= dados[mm2[0]][h] and compra == 0:
        n = int(carteira // preco_acao)
        carteira = carteira % preco_acao
        compra = preco_acao
        print(f'{dia} - Compra {n} acões à {format_money(compra)}...')
        print(f'Carteira: {format_money(carteira)}')
        stop_acao = preco_acao*(1-(var/100))
    elif stopAtivado and dados[mm1[0]][i] >= dados[mm2[0]][i] and precoStopAtivado <= preco_acao and compra == 0:
        n = int(carteira // preco_acao)
        carteira = carteira % preco_acao
        compra = preco_acao
        print(f'{dia} - Compra {n} acões à {format_money(compra)}...')
        print(f'Carteira: {format_money(carteira)}')
        stop_acao = preco_acao*(1-(var/100*2))
        stopAtivado = False

    # Vendendo
    elif compra != 0:
        menor_preco_acao = preco_acao*(1-(var/100))
        if menor_preco_acao > stop_acao:
            stop_acao = menor_preco_acao
            print(f'{dia} - Stop da açao foi para {format_money(stop_acao)}')
        elif dados[mm1[0]][i] <= dados[mm2[0]][i] and dados[mm1[0]][h] >= dados[mm2[0]][h] or preco_acao < stop_acao:
            if preco_acao < stop_acao:
                stopAtivado = True
                precoStopAtivado = preco_acao
                print(f"{'Foi stopado!':>60}")
            vende = preco_acao
            print(f'{dia} - Vende {n} ações à {format_money(vende)}...')
            luc_parcial = (vende - compra)*n
            if luc_parcial > 0:
                print(f';D Lucro de: {format_money(luc_parcial)}...\n')
            else:
                print(f':( Preju de: {format_money(luc_parcial)}...\n')
            lucro += luc_parcial
            carteira += (n*vende)
            print(f'Carteira: {format_money(carteira)}')
            compra, vende, n = 0, 0, 0
    elif dados[mm1[0]][i] <= dados[mm2[0]][i] and dados[mm1[0]][h] >= dados[mm2[0]][h]:
        stopAtivado = False
        precoStopAtivado = 9999999
    h = i

if compra != 0:
    vende = dados[acao_codigo][-1]
    print(f'{dia} - Vende {n} ações à {format_money(vende)}...')
    luc_parcial = (vende - compra)*n
    if luc_parcial > 0:
        print(f';D Lucro de: {format_money(luc_parcial)}...\n')
    else:
        print(f':( Preju de: {format_money(luc_parcial)}...\n')
    lucro += luc_parcial
    carteira += (n*vende)

print(f'Carteira: {format_money(carteira)}')
print(f'Lucro total: {format_money(lucro)}')
lucr_porc = lucro/aporte*100
print(f'Lucro de: {lucr_porc:.2f}%')
dados_fatiado = dados[(dados.index.year == 2020)]
#dados_fatiado = dados_fatiado[(dados_fatiado.index.month == 3)]
dados_fatiado.plot(figsize=(22,8), label=acao_codigo)
plt.show()
dados_fatiado<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.16709003669206887, 'fraction_numerical': 0.03302286198137172, 'mean_word_length': 3.1257275902211874, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '584911', 'license': 'MIT', 'n_tokens_mistral': 1576, 'n_tokens_neox': 1479, 'n_words': 255, 'path': 'Estratégias/Cruzamento de Medias Móveis/CMM na Prática.ipynb', 'repo_name': 'BigWalvi/An-lise-Financeira-com-Python', 'size': '3543'}