StockFetcher Forums · Filter Exchange · TRADING DIVERGENCES ON THE S&P 500<< 1 ... 19 20 21 22 23 ... 33 >>Post Follow-up
Kevin_in_GA
4,599 posts
msg #112570
Ignore Kevin_in_GA
4/1/2013 5:05:55 PM

/*CODING FOR DIVERGENCE BETWEEN MA(3) AND THE Q-STICK INDICATOR*/
SYMLIST(SPY)
SET{QST12down, COUNT(ind(^spx, QSTICK(12)) below ind(^spx, QST(12)) 12 days ago,1)}
SET{QST12down2, COUNTind(^spx,(QSTICK(12)) DROPPED MORE THAN 2% OVER THE LAST 12 DAYS,1)}

Clue - it is somewhere in here.

mahkoh
1,065 posts
msg #112572
Ignore mahkoh
modified
4/1/2013 6:13:27 PM

C'mon, don't leave him hanging. I know from personal experience that there are few things as frustrating as a filter not working because of a misplaced } or ).



Kevin_in_GA
4,599 posts
msg #112575
Ignore Kevin_in_GA
4/1/2013 7:40:45 PM

Enlightenment cannot be given.

frsrblch
35 posts
msg #112578
Ignore frsrblch
4/1/2013 10:49:24 PM

Zen and the Art of Stock Fetcher

In other news, the spreadsheet is done. Data is pasted into the 'Data' tab, with the left column being the asset to be traded, and the right column being the asset used to determine entries and exits. As a default, these are SPY and the S&P500, respectively, but you can change these as you see fit, provided you make sure the dates line up across both columns. The sheet can handle up to 2500 days of data, beyond which you'll have to add more lines of formulas to each of the filters.

The 'Control' tab shows some limited statistics for each system, including annual return for the period backtested. I have included an option to limit the number of days a stock is held for in each system, but most of these systems react poorly to these exits.

The spreadsheet is designed to buy when the entry signal is 1 and the exit signal is 0, and sell when the entry signal is 0 and the exit signal is 1. Please feel free to check my calculations, and let me know if you find any errors.

If nothing else, this spreadsheet has shown me the importance of using ^SPX data rather than SPY data when it comes to choosing entries and exits. Most systems grossly under-perform if you use SPY data for choosing entries and exits. The poor results I have had backtesting most of Kevin's Top 10 in SF are likely the result of this. The data in the spreadsheet runs from Jan 1, 2006 through to today, and it's worth noting that these systems plowed through 2008 with barely a hiccup.

https://docs.google.com/file/d/0B0rUWi0Alg22ZnlWNEU1TkNGbDg/edit?usp=sharing

mahkoh
1,065 posts
msg #112586
Ignore mahkoh
4/2/2013 10:38:54 AM

Great work, thanks for sharing. Do you have any idea as to why ^SPX would give better results than SPY besides the latter going ex-dividend every now and then?

Kevin_in_GA
4,599 posts
msg #112588
Ignore Kevin_in_GA
4/2/2013 10:42:39 AM

Because that was the data upon which the systems were designed.

radiobb2
10 posts
msg #112591
Ignore radiobb2
4/2/2013 1:03:16 PM

Maybe another dumb question. If ^SPX is better than SPY, then is there a way to program that into the StockFetcher formula?

mahkoh
1,065 posts
msg #112593
Ignore mahkoh
4/2/2013 2:41:19 PM

Well.. that is what Jack was trying.

Cheese
1,374 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,599 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.

StockFetcher Forums · Filter Exchange · TRADING DIVERGENCES ON THE S&P 500<< 1 ... 19 20 21 22 23 ... 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 2022 - 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


This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.