def chaikin_money_flow(close_data, high_data, low_data, volume, period):
catch_errors.check_for_input_len_diff(<EOL>close_data, high_data, low_data, volume)<EOL>catch_errors.check_for_period_error(close_data, period)<EOL>close_data = np.array(close_data)<EOL>high_data = np.array(high_data)<EOL>low_data = np.array(low_data)<EOL>volume = np.array(volume)<EOL>cmf = [sum((((close_data[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>] - low_data[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>]) -<EOL>(high_data[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>] - close_data[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>])) /<EOL>(high_data[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>] - low_data[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>])) *<EOL>volume[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>]) / sum(volume[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>]) for idx in range(period-<NUM_LIT:1>, len(close_data))]<EOL>cmf = fill_for_noncomputable_vals(close_data, cmf)<EOL>return cmf<EOL>
Chaikin Money Flow.

Formula:
CMF = SUM[(((Cn - Ln) - (Hn - Cn)) / (Hn - Ln)) * V] / SUM(Vn)