StockFetcher Forums · Filter Exchange · TRADING DIVERGENCES ON THE S&P 500<< 1 ... 20 21 22 23 24 ... 33 >>Post Follow-up
mahkoh
891 posts
msg #112593
Ignore mahkoh
4/2/2013 2:41:19 PM

Well.. that is what Jack was trying.

Cheese
118 posts
msg #112594
Ignore Cheese
modified
4/2/2013 3:44:54 PM

Thank you Kevin_in_GA, mahkoh, frsrblch, and everyone for the info you've shared in this thread.
Here is my version of the divergence filter using ^SPX

* * *
Note (Apr 2, 2013 at 7PM PST):
- Filter designed to be run after close end-of-day
- Suggestions for improvement are welcome

Edit (Apr 2, 2013 at 7PM PST):
- change code for exit1 and exit2 to use close of ^SPX instead of SPY, per Kevin_in_GA

Disclaimers (Apr 2, 2013 at 7PM PST):
- The total number of divergences using ^SPX in sF may not always match Kevin_in_GA in SS, or Excel from frsrblch
* * *



Fetcher[

SYMLIST(SPY)




/*CODING FOR DIVERGENCE BETWEEN ind(^SPX,MA(3)) AND CHAIKIN MONEY FLOW*/

SET{CMF14DOWN, COUNT(ind(^SPX,CMF(14)) BELOW ind(^SPX,CMF(14)) 7 DAYS AGO,1)}
SET{CMF14DOWN2, COUNT(ind(^SPX,CMF(14)) DROPPED MORE THAN 2% OVER THE LAST 7
DAYS,1)}

SET{MA3UP1, COUNT(ind(^SPX,MA(3)) ABOVE ind(^SPX,MA(3)) 7 DAYS AGO,1)}
SET{MA3UP1_2, COUNT(ind(^SPX,MA(3)) GAINED MORE THAN 2% OVER THE LAST 7 DAYS,1)}

SET{DIV1A, CMF14DOWN * MA3UP1}
SET{DIV2A, CMF14DOWN2 + MA3UP1_2}
SET{DIV3A, COUNT(DIV2A ABOVE 0.5,1)}
SET{CMF14DIV, DIV1A*DIV3A}

ADD COLUMN CMF14DIV



/*CODING FOR DIVERGENCE BETWEEN ind(^SPX,MA(3)) AND THE STOCHASTIC MOMENTUM
INDICATOR*/

SET{SMI11down, COUNT(ind(^SPX,SMI(3,6,6)) below ind(^SPX,SMI(3,6,6)) 11 days ago,1)}
SET{SMI11down7, COUNT(ind(^SPX,SMI(3,6,6)) DROPPED MORE THAN 7% OVER THE LAST 11
DAYS,1)}

SET{MA3UP2, COUNT(ind(^SPX,MA(3)) above ind(^SPX,MA(3)) 11 days ago,1)}
SET{MA3UP2_7, COUNT(ind(^SPX,MA(3)) gained MORE THAN 7% OVER THE LAST 11 DAYS,1)}

SET{DIV1B, SMI11down * MA3UP2}
SET{DIV2B, SMI11DOWN7 + MA3UP2_7}
SET{DIV3B, COUNT(DIV2B ABOVE 0.5,1)}
SET{SMI11DIV, DIV1B*DIV3B}

ADD COLUMN SMI11DIV




/*CODING FOR DIVERGENCE BETWEEN ind(^SPX,MA(3)) AND THE WILLIAMS %R INDICATOR*/

SET{WLR12down, COUNT(ind(^SPX,WILLIAMS %R(14)) below ind(^SPX,WILLIAMS %R(14)) 12 days ago,1)}
SET{WLR12down1, COUNT(ind(^SPX,WILLIAMS %R(14)) DROPPED MORE THAN 1% OVER THE LAST
12 DAYS,1)}

SET{MA3UP3, COUNT(ind(^SPX,MA(3)) above ind(^SPX,MA(3)) 12 days ago,1)}
SET{MA3UP3_1, COUNT(ind(^SPX,MA(3)) gained MORE THAN 1% OVER THE LAST 12 DAYS,1)}

SET{DIV1C, WLR12down * MA3UP3}
SET{DIV2C, WLR12DOWN1 + MA3UP3_1}
SET{DIV3C, COUNT(DIV2C ABOVE 0.5,1)}
SET{WLR12DIV, DIV1C * DIV3C}

ADD COLUMN WLR12DIV




/*CODING FOR DIVERGENCE BETWEEN ind(^SPX,MA(3)) AND THE +DI INDICATOR*/
SET{PDI10down, COUNT(ind(^SPX,PDI(10)) below ind(^SPX,PDI(10)) 8 days ago,1)}
SET{PDI10down10, COUNT(ind(^SPX,PDI(10)) DROPPED MORE THAN 10% OVER THE LAST 8 DAYS,1)}

SET{MA3UP4, COUNT(ind(^SPX,MA(3)) above ind(^SPX,MA(3)) 8 days ago,1)}
SET{MA3UP4_1, COUNT(ind(^SPX,MA(3)) gained MORE THAN 10% OVER THE LAST 8 DAYS,1)}

SET{DIV1D, PDI10down * MA3UP4}
SET{DIV2D, PDI10DOWN10 + MA3UP4_1}
SET{DIV3D, COUNT(DIV2D ABOVE 0.5,1)}
SET{PDI10DIV, DIV1D * DIV3D}

ADD COLUMN PDI10DIV




/*CODING FOR DIVERGENCE BETWEEN ind(^SPX,MA(3)) AND THE AROON UP INDICATOR*/

SET{ARUP6down, COUNT(ind(^SPX,AROON UP(6)) below ind(^SPX,AROON UP(6)) 4 days ago,1)}
SET{ARUP6down4, COUNT(ind(^SPX,AROON UP(6)) DROPPED MORE THAN 4% OVER THE LAST 4 DAYS,1)}

SET{MA3UP5, COUNT(ind(^SPX,MA(3)) above ind(^SPX,MA(3)) 4 days ago,1)}
SET{MA3UP5_1, COUNT(ind(^SPX,MA(3)) gained MORE THAN 4% OVER THE LAST 10 DAYS,1)}

SET{DIV1E, ARUP6down * MA3UP5}
SET{DIV2E, ARUP6DOWN4 + MA3UP5_1}
SET{DIV3E, COUNT(DIV2E ABOVE 0.5,1)}
SET{ARUP6DIV, DIV1E * DIV3E}

ADD COLUMN ARUP6DIV




/*CODING FOR DIVERGENCE BETWEEN ind(^SPX,MA(3)) AND THE LINEAR REGRESSION SLOPE*/

SET{LRS8down, COUNT(ind(^SPX,LRS(8)) below ind(^SPX,LRS(8)) 10 days ago,1)}
SET{LRS8down10, COUNT(ind(^SPX,LRS(8)) DROPPED MORE THAN 10% OVER THE LAST 10 DAYS,1)}

SET{MA3UP6, COUNT(ind(^SPX,MA(3)) above ind(^SPX,MA(3)) 10 days ago,1)}
SET{MA3UP6_1, COUNT(ind(^SPX,MA(3)) gained MORE THAN 10% OVER THE LAST 10 DAYS,1)}

SET{DIV1F, LRS8down * MA3UP6}
SET{DIV2F, LRS8DOWN10 + MA3UP6_1}
SET{DIV3F, COUNT(DIV2F ABOVE 0.5,1)}
SET{LRS8DIV, DIV1F * DIV3F}

ADD COLUMN LRS8DIV





/*CODING FOR DIVERGENCE BETWEEN ind(^SPX,MA(3)) AND THE Q-STICK INDICATOR*/

SET{QST12down, COUNT(ind(^SPX,QSTICK(12)) below QST(12) 12 days ago,1)}
SET{QST12down2, COUNT(ind(^SPX,QSTICK(12)) DROPPED MORE THAN 2% OVER THE LAST 12 DAYS,1)}

SET{MA3UP7, COUNT(ind(^SPX,MA(3)) above ind(^SPX,MA(3)) 12 days ago,1)}
SET{MA3UP7_1, COUNT(ind(^SPX,MA(3)) gained MORE THAN 2% OVER THE LAST 12 DAYS,1)}

SET{DIV1G, QST12down * MA3UP7}
SET{DIV2G, QST12DOWN2 + MA3UP7_1}
SET{DIV3G, COUNT(DIV2G ABOVE 0.5,1)}
SET{QST12DIV, DIV1G * DIV3G}

ADD COLUMN QST12DIV





/*CODING FOR DIVERGENCE BETWEEN ind(^SPX,MA(3)) AND THE RSI INDICATOR*/

SET{RSI10down, COUNT(ind(^SPX,RSI(10)) below ind(^SPX,RSI(10)) 12 days ago,1)}
SET{RSI10down3, COUNT(ind(^SPX,RSI(10)) DROPPED MORE THAN 3% OVER THE LAST 12 DAYS,1)}

SET{MA3UP8, COUNT(ind(^SPX,MA(3)) above ind(^SPX,MA(3)) 12 days ago,1)}
SET{MA3UP8_1, COUNT(ind(^SPX,MA(3)) gained MORE THAN 3% OVER THE LAST 12 DAYS,1)}

SET{DIV1H, RSI10down * MA3UP8}
SET{DIV2H, RSI10DOWN3 + MA3UP8_1}
SET{DIV3H, COUNT(DIV2H ABOVE 0.5,1)}
SET{RSI10DIV, DIV1H * DIV3H}

ADD COLUMN RSI10DIV




/*CODING FOR DIVERGENCE BETWEEN ind(^SPX,MA(3)) AND THE RMI INDICATOR*/

SET{RMI82down, COUNT(ind(^SPX,RMI(8,2)) below ind(^SPX,RMI(8,2)) 12 days ago,1)}
SET{RMI82down1, COUNT(ind(^SPX,RMI(8,2)) DROPPED MORE THAN 1% OVER THE LAST 12 DAYS,1)}

SET{MA3UP9, COUNT(ind(^SPX,MA(3)) above ind(^SPX,MA(3)) 12 days ago,1)}
SET{MA3UP9_1, COUNT(ind(^SPX,MA(3)) gained MORE THAN 1% OVER THE LAST 12 DAYS,1)}

SET{DIV1I, RMI82down * MA3UP9}
SET{DIV2I, RMI82DOWN1 + MA3UP9_1}
SET{DIV3I, COUNT(DIV2I ABOVE 0.5,1)}
SET{RMI82DIV, DIV1I * DIV3I}

ADD COLUMN RMI82DIV




/*CODING FOR DIVERGENCE BETWEEN ind(^SPX,MA(3)) AND THE STOCHASTICS %D INDICATOR*/

SET{STD325down, COUNT(ind(^SPX,FULL STOCHASTICS %D(3,2,5)) below ind(^SPX,FULL STOCHASTICS %D(3,2,5)) 11 days ago,1)}
SET{STD325down2, COUNT(ind(^SPX,FULL STOCHASTICS %D(3,2,5)) DROPPED MORE THAN 2% OVER THE LAST 11 DAYS,1)}

SET{MA3UP10, COUNT(ind(^SPX,MA(3)) above ind(^SPX,MA(3)) 11 days ago,1)}
SET{MA3UP10_1, COUNT(ind(^SPX,MA(3)) gained MORE THAN 2% OVER THE LAST 11 DAYS,1)}

SET{DIV1J, STD325down * MA3UP10}
SET{DIV2J, STD325DOWN2 + MA3UP10_1}
SET{DIV3J, COUNT(DIV2J ABOVE 0.5,1)}
SET{STD325DIV, DIV1J * DIV3J}

ADD COLUMN STD325DIV

set{x,cmf14div + smi11div}
set{x1,x + wlr12div}
set{x2,x1 + pdi10div}
set{x3,x2 + arup6div}
set{x4,x3 + lrs8div}
set{x5,x4 + qst12div}
set{x6,x5 + rsi10div}
set{x7,x6 + rmi82div}
set{comp,x7 + std325div}
add column comp
draw comp


set{exit1, count(ind(^SPX, close) reached a new 10 day high,1)}
set{exit2, count(ind(^SPX,ROC(15,1)) is below ind(^SPX,ROC(15,1)) 10 day high,1)}
set{exit, exit1 * exit2}

ADD COLUMN EXIT
]







Kevin_in_GA
4,548 posts
msg #112595
Ignore Kevin_in_GA
4/2/2013 4:42:47 PM

Note that today was an exit day, but since there are 7 filters also showing a divergence BUY signal, one only closes 2 of the nine open trades.

Having backtested this new approach, it works quite well. Using this approach you would be up over 120% from the Oct 2007 closing high, versus only 14.5% for the S&P 500, with only an 8% Maximum Drawdown. Compare that to the drawdown for the S&P 500 and you'll see why I like this one.

mahkoh
891 posts
msg #112597
Ignore mahkoh
4/2/2013 5:07:05 PM

Cheese,

Not that it makes a difference for today's signal, but I think the exit should be based on SPX data as well.

mahkoh
891 posts
msg #112599
Ignore mahkoh
4/2/2013 5:37:48 PM

fsrlblch and Kevin:

The spreadsheet from fsrlblch shows 8 divergences where cheese's spx version has only 7, it's missing the CMF.
At this point SF is using today's SPX close for calculation.

Which is correct?

Kevin_in_GA
4,548 posts
msg #112601
Ignore Kevin_in_GA
4/2/2013 6:21:25 PM

SS end-of-day data has 8 still in play including the CMF.

Cheese
118 posts
msg #112608
Ignore Cheese
4/2/2013 10:17:43 PM

mahkoh, Kevin_in_GA, frsrblch, or anyone,

I've modified the code for exit1 to use "close of ^SPX" instead of "close of SPY" in my msg #112594 above.

If you know how to change the ROC code for exit2 to use close of ^SPX instead of close of SPY,
and how to get the correct count for CMF divergence, please post so all can use.

Many thanks.



Kevin_in_GA
4,548 posts
msg #112609
Ignore Kevin_in_GA
4/2/2013 10:25:32 PM


set{exit1, count(ind(^SPX, close) reached a new 10 day high,1)}
set{exit2, count(ind(^SPX,ROC(15,1)) is below ind(^SPX,ROC(15,1)) 10 day high,1)}
set{exit, exit1 * exit2}


Cheese
118 posts
msg #112610
Ignore Cheese
4/2/2013 10:57:42 PM

Thank you for the code and for this thread, Kevin.

At the time of writing, the CMF divergence using ^SPX in sF still does not match your CMF signal in SS,
even though it adheres to your code on page 1.

The CMF divergence using SPY in sF for Apr 2 , 2013 does match your your CMF signal in SS.

Best regards.



Kevin_in_GA
4,548 posts
msg #112616
Ignore Kevin_in_GA
4/3/2013 8:44:31 AM

That likely means the methods of calculation are different. The easy solution is to drop the CMF Divergence filter from this system if you are relying on SF as your source for signals. Just go with 5 instead of 10.

StockFetcher Forums · Filter Exchange · TRADING DIVERGENCES ON THE S&P 500<< 1 ... 20 21 22 23 24 ... 33 >>Post Follow-up

*** Disclaimer *** StockFetcher.com does not endorse or suggest any of the securities which are returned in any of the searches or filters. They are provided purely for informational and research purposes. StockFetcher.com does not recommend particular securities. StockFetcher.com, Vestyl Software, L.L.C. and involved content providers shall not be liable for any errors or delays in the content, or for any actions taken based on the content.


Copyright 2016 - Vestyl Software L.L.C.Terms of Service | License | Questions or comments? Contact Us
EOD Data sources: DDFPlus & CSI Data Quotes delayed during active market hours. Delay times are at least 15 mins for NASDAQ, 20 mins for NYSE and Amex. Delayed intraday data provided by DDFPlus