def calculate_macd_and_spreadvssignal(my_verbose, this_data, cols_to_calculate):
    """
    Gets full dataset, and calculates MACD and spread between MACD and signal
    Important to use full dataset to ensure columns are same between training and test data.

    Parameters
    ----------
    my_verbose : string
        parameter to control printing of steps and plotting of outlier graphs
    this_data : dataframe
        The training + validation + test dataset
    cols_to_calculate : list
        All columns aside from target variable. Target var is highly correlated with one of Gold futures, thus not necessary to include

    Returns
    -------
    this_data
        A dataframe containing additional MACD and MACD-Signal spread per feature
    """  
    
    for this_col in cols_to_calculate:

        exp1 = this_data[this_col].ewm(span=12, adjust=False).mean()
        exp2 = this_data[this_col].ewm(span=26, adjust=False).mean()
        macd = exp1-exp2
        signal = macd.ewm(span=9, adjust=False).mean()
        macd_signal_spread = macd - signal

        this_data["{}_macd".format(this_col)] =  macd.values #.tolist()
        this_data["{}_macd_signal_spread".format(this_col)] =  macd_signal_spread.values #.tolist()
    
    if my_verbose==True:
        print("\nMACD and spread computed")
        
    #### transformed_data.to_csv(r'MACD.csv')
    
    return this_data