def media_simple(valor, tiempo, tipo, data): # cortes de una media simple titulo = "SMA" importes_operaciones = [] for periodo in range(5,200): # print ("Calculando media {}".format(periodo)), # calculo la sma de un periodo con datos de cierre array_data = fb.get_sma_periodo(periodo, data['close']) # devuelve array LARGO, CORTO por cada elemento del array cruces = fb.get_cortes(array_data, data['close']) # devuelve un array con pares de posiciones de inicio fin del corte # de un array de cruces # un array para posiciones largas y otro para cortas (12, 16) largos,cortos = fb.get_pares_corte(cruces) numero_operaciones = len(largos)+len(cortos) # devuelve un array con fecha inicio, fin, e importe # de las operaciones ('2018-02-14', '2018-02-27', 99.0), l,c = fb.get_simulacion_importes(data,largos,cortos) # suma los importes de un array devuelto por get_simulacion_importes imp_l = fb.sumar_importes(l) imp_c = fb.sumar_importes(c) # anado elemento al array importes_operaciones.append((periodo, numero_operaciones, imp_l + imp_c, imp_l, imp_c)) importes_operaciones.sort(key=lambda (a,b,c,d,e):c, reverse=True) (periodo, numero_operaciones, total, largos, cortos) = importes_operaciones[0] return (valor, tiempo, tipo, titulo, periodo, numero_operaciones, total, largos, cortos)
def sma_sma100(valor, tiempo, tipo, data): titulo = "SMA SMA100" importes_operaciones = [] cortes_media_50 = fb.get_cortes(data['sma100'], data['close']) for periodo in range(5,100): array_data = fb.get_sma_periodo(periodo, data['close']) cortes_media = fb.get_cortes(array_data, data['close']) cruces = fb.get_cortes_cruce(cortes_media,cortes_media_50) largos,cortos = fb.get_pares_corte(cruces) numero_operaciones = len(largos)+len(cortos) l,c = fb.get_simulacion_importes(data,largos,cortos) imp_l = fb.sumar_importes(l) imp_c = fb.sumar_importes(c) importes_operaciones.append((periodo, numero_operaciones, imp_l + imp_c, imp_l, imp_c)) importes_operaciones.sort(key=lambda (a,b,c,d,e):c, reverse=True) (periodo, numero_operaciones, total, largos, cortos) = importes_operaciones[0] return (valor, tiempo, tipo, titulo, periodo, numero_operaciones, total, largos, cortos)