Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #
- # SM_Impulse
- #
- #
- # version 1.0
- #
- input Show_Impulse_Extras = yes;
- ####################################
- #
- # Exponential moving average
- #
- # Uses 13-period by default for "fast" EMA, and then a 65 period for slow EMA.
- # This replicates the Impulse System's requirement to use both the current
- # time-frame, and a time-frame 5x larger than the current one. (13x5 = 65)
- #
- ####################################
- input EMA_Fast_Length = 13; #Impulse uses 13 EMA by default
- input EMA_Slow_Length = 65; #13 x (5 times larger time)
- def EMA_price = close;
- def EMA_calculation = ExpAverage(EMA_price, EMA_fast_Length);
- def EMA_slow = ExpAverage(EMA_price, EMA_slow_Length);
- def EMA_fast_above = if close > EMA_calculation then 1 else 0;
- def EMA_fast_below = if close <= EMA_calculation then 1 else 0;
- def EMA_slow_above = if close > EMA_slow then 1 else 0;
- def EMA_slow_below = if close <= EMA_slow then 1 else 0;
- ####################################
- #
- # MACD + MACD Histogram
- #
- ####################################
- input MACD_fastLength = 12;
- input MACD_slowLength = 26;
- input MACDLength = 9;
- input MACD_averageType = AverageType.EXPONENTIAL;
- def MACD_Value = MovingAverage(MACD_averageType, close, MACD_fastLength) - MovingAverage(MACD_averageType, close, MACD_slowLength);
- def MACD_Avg = MovingAverage(MACD_averageType, MACD_Value, MACDLength);
- def MACD_Diff = MACD_Value - MACD_Avg;
- def ZeroLine = 0;
- def MACD_PositiveAndUp;
- def MACD_PositiveAndDown;
- def MACD_NegativeAndDown;
- def MACD_NegativeAndUp;
- def MACD_GoingUp;
- def MACD_GoingDown;
- if MACD_Diff >= 0 {
- if MACD_Diff > MACD_Diff[1] {
- MACD_PositiveAndUp = 1;
- MACD_PositiveAndDown = 0;
- MACD_NegativeAndUp = 0;
- MACD_NegativeAndDown = 0;
- MACD_GoingUp = 1;
- MACD_GoingDown = 0;
- } else {
- MACD_PositiveAndUp = 0;
- MACD_PositiveAndDown = 1;
- MACD_NegativeAndUp = 0;
- MACD_NegativeAndDown = 0;
- MACD_GoingUp = 0;
- MACD_GoingDown = 1;
- }
- } else {
- if MACD_Diff < MACD_Diff[1] {
- MACD_PositiveAndUp = 0;
- MACD_PositiveAndDown = 0;
- MACD_NegativeAndUp = 0;
- MACD_NegativeAndDown = 1;
- MACD_GoingUp = 0;
- MACD_GoingDown = 1;
- } else {
- MACD_PositiveAndUp = 0;
- MACD_PositiveAndDown = 0;
- MACD_NegativeAndUp = 1;
- MACD_NegativeAndDown = 0;
- MACD_GoingUp = 1;
- MACD_GoingDown = 0;
- }
- }
- ####################################
- #
- # Impulse
- #
- ####################################
- def Impulse_Up;
- def Impulse_Down;
- def Impulse_Neutral;
- def both_EMA_up = if EMA_fast_above == 1 and EMA_slow_above == 1 then 1 else 0;
- def both_EMA_down = if EMA_fast_below == 1 and EMA_slow_below == 1 then 1 else 0;
- def both_EMA_neutral = if both_EMA_up == 0 and both_EMA_down == 0 then 1 else 0;
- if both_EMA_up == 1 {
- Impulse_Down = 0; # Impulse down requires EMA_Down
- Impulse_Up = if MACD_GoingUp == 1 then 1 else 0;
- Impulse_Neutral = if MACD_GoingDown == 1 then 1 else 0;
- } else if both_EMA_down == 1 {
- Impulse_Up = 0;
- Impulse_Down = if MACD_GoingDown == 1 then 1 else 0;
- Impulse_Neutral = if MACD_GoingUp == 1 then 1 else 0;
- } else {
- Impulse_Up = 0;
- Impulse_Down = 0;
- Impulse_Neutral = 1;
- }
- AddLabel(Impulse_Up, "IMPULSE", COLOR.DARK_GREEN);
- AddLabel(Impulse_Down, "IMPULSE", COLOR.DARK_RED);
- AddLabel(Impulse_Neutral, "IMPULSE", COLOR.GRAY);
- #AddLabel(both_EMA_up, "EMA", COLOR.DARK_GREEN);
- #AddLabel(both_EMA_down, "EMA", COLOR.DARK_RED);
- #AddLabel(both_EMA_neutral, "EMA", COLOR.GRAY);
- ####################################
- # MACD Histogram label
- ####################################
- def show_MACD_PU;
- def show_MACD_PD;
- def show_MACD_NU;
- def show_MACD_ND;
- if Show_Impulse_Extras == yes {
- show_MACD_PU = if MACD_PositiveAndUp == 1 then 1 else 0;
- show_MACD_PD = if MACD_PositiveAndDown == 1 then 1 else 0;
- show_MACD_NU = if MACD_NegativeAndUp == 1 then 1 else 0;
- show_MACD_ND = if MACD_NegativeAndDown == 1 then 1 else 0;
- } else {
- show_MACD_PU = 0;
- show_MACD_PD = 0;
- show_MACD_NU = 0;
- show_MACD_ND = 0;
- }
- AddLabel(show_MACD_PU, "MACD Histogram", COLOR.DARK_GREEN);
- AddLabel(show_MACD_PD, "MACD Histogram", COLOR.DARK_RED);
- AddLabel(show_MACD_NU, "MACD Histogram", COLOR.DARK_GREEN);
- AddLabel(show_MACD_ND, "MACD Histogram", COLOR.DARK_RED);
- ####################################
- #
- # EMA Label
- #
- ####################################
- def show_fEMA_up;
- def show_fEMA_down;
- def show_sEMA_up;
- def show_sEMA_down;
- if Show_Impulse_Extras == yes {
- show_fEMA_up = if EMA_fast_above == 1 then 1 else 0;
- show_fEMA_down = if EMA_fast_below == 1 then 1 else 0;
- show_sEMA_up = if EMA_slow_above == 1 then 1 else 0;
- show_sEMA_down = if EMA_slow_below == 1 then 1 else 0;
- } else {
- show_fEMA_up = 0;
- show_fEMA_down = 0;
- show_sEMA_up = 0;
- show_sEMA_down = 0;
- }
- #AddLabel(show_fEMA_up, "Fast EMA: " + EMA_calculation, COLOR.DARK_GREEN);
- #AddLabel(show_fEMA_down, "Fast EMA :" + EMA_calculation, COLOR.DARK_RED);
- AddLabel(show_fEMA_up, "Fast EMA", COLOR.DARK_GREEN);
- AddLabel(show_fEMA_down, "Fast EMA", COLOR.DARK_RED);
- #AddLabel(show_sEMA_up, "Slow EMA: " + EMA_slow, COLOR.DARK_GREEN);
- #AddLabel(show_sEMA_down, "Slow EMA: " + EMA_slow, COLOR.DARK_RED);
- AddLabel(show_sEMA_up, "Slow EMA", COLOR.DARK_GREEN);
- AddLabel(show_sEMA_down, "Slow EMA", COLOR.DARK_RED);
Add Comment
Please, Sign In to add comment