Получение функции def для применения.() К моим акциям

У меня проблемы с тем, чтобы заставить мой код работать. Я кодирую python в тестовой среде под названием "Quantopian". Независимо от того,.apply(), series, .pd или любая другая терминология выходит за рамки моего уровня квалификации. (при условии, что я даже на правильном пути, лол)

Чего я пытаюсь добиться: взяв пару акций и постоянно рассчитывая MACD. Затем, когда индикатор удовлетворяет определенному условию, алгоритм покупает или продает эту конкретную акцию.

Что MACD упрощенно: Индикатор импульса, который смотрит на исторические данные, используя 12, 26 и 9-дневные экспоненциальные скользящие средние и сравнивая их друг с другом. Я разработал свою собственную функцию, это не моя проблема....

Справка: я пытаюсь применить его к пулу акций в моей вселенной, чтобы постоянно вычислять MACD каждую минуту.

Где я в замешательстве: я определил функцию MACD, но не знаю, как заставить ее вычислять каждую минуту для любых запасов в моем пуле.


КОД:

import numpy as np
import math
import talib as ta
import pandas as pd

def initialize(context):
set_commission(commission.PerTrade(cost=10))
context.stocks = symbols('AAPL', 'GOOG_L')

def handle_data(context, data):
    for stock in context.stocks:
        prices_fast = data.history(context.stocks, "close", 390, "1m").resample("30min").dropna()
        prices_slow = data.history(context.stocks, "close", 390, "1m").resample("30min").dropna()
        prices_signal = data.history(context.stocks, "close", 390, "1m").resample("30min").dropna()
        curr_price = data.history(context.stocks, "price", 30, "1m").resample("30min")[-1:].dropna()

        series = pd.Series([stock]).dropna()
        macd = series.apply(MACD)

        macd_func = stock.apply(MACD)
        if macd_func[stock] > 0:
            order(stock, 1)

    print macd_func
    record(macd=macd_func[stock])

def MACD(prices_fast, prices_slow, prices_signal, curr_price):        
    # Setting MACD Conditions:
    slow = 26
    fast = 12
    signal = 9

    # Calcualting Averages:
    avg_fast = pd.rolling_sum(prices_fast[:fast], fast)[-1:] / fast
    avg_slow = pd.rolling_sum(prices_slow[:slow], slow)[-1:] / slow
    avg_signal = pd.rolling_sum(prices_signal[:signal], signal)[-1:] / signal

    # Calculating the Weighting Multipliers:
    A = 2 / (fast + 1)
    B = 2 / (slow + 1) 
    C = 2 / (signal + 1)

    # Calculating the Exponential Moving Averages:
    EMA_fast =  (curr_price * A) + [avg_fast * (1 - A)]
    EMA_slow =  (curr_price * B) + [avg_slow * (1 - B)]
    EMA_signal = (curr_price * C) + [avg_signal * (1 - C)]

    # Calculating MACD Histogram:
    macd = EMA_fast - EMA_slow - EMA_signal

Если бы кто-то мог дать мне ручку, я был бы очень признателен!

Большое большое спасибо,

Майк

0 ответов

Другие вопросы по тегам