Check the most recent publication date and assume that all data from ETF inception to publication was used as in sample (IS). Only returns beyond the publication date can safely be considered out of sample (OOS).
Mike --- In [email protected], "droskill" <drosk...@...> wrote: > > Pretty insane results with some select ETFs - tried it with EEM and SPY and > results in the +90% success rate. Makes me doubt the results! > > I'd love to see this code actually get to a portfolio - so, start by > determining taking initial equity and then dividing it among a set number of > positions (say 4) to see how it would do with a portfolio. > > --- In [email protected], "longt3rm" <longt3rm@> wrote: > > > > droskill, > > > > First -- thanks for many posts (here and others) I've read of yours which > > have helped me greatly. > > > > Code below: > > ---------------------------------------- > > //Created by Mike > > http://finance.groups.yahoo.com/group/amibroker/message/146956 > > //Updated per Mike > > http://finance.groups.yahoo.com/group/amibroker/message/146967 > > //Update by Bill to change EMA to MA and change from fixed shares to fixed > > dollar > > > > SetTradeDelays(0, 0, 0, 0); > > BuyPrice = Close; > > SellPrice = Close; > > > > previousClose = Ref(Close, -1); > > rsi2 = RSI(2); > > > > Sell = Cross(rsi2, 70); > > > > //bull100 = Close > EMA(Close, 200) AND Sum(rsi2 < 25, 2) == 2; > > bull100 = Close > MA(Close, 200) AND MA(Close, 200) > 0 AND Sum(rsi2 < 25, > > 2) == 2; > > inFirstPos = Flip(bull100, Sell); > > firstTrigger = ExRem(inFirstPos, Sell); > > > > bull200 = Close < ValueWhen(firstTrigger, Close) AND inFirstPos AND > > Ref(inFirstPos, -1); > > inSecondPos = Flip(bull200, Sell); > > secondTrigger = ExRem(inSecondPos, Sell); > > > > bull300 = Close < ValueWhen(secondTrigger, Close) AND inSecondPos AND > > Ref(inSecondPos, -1); > > inThirdPos = Flip(bull300, Sell); > > thirdTrigger = ExRem(inThirdPos, Sell); > > > > bull400 = Close < ValueWhen(thirdTrigger, Close) AND inThirdPos AND > > Ref(inThirdPos, -1); > > inFourthPos = Flip(bull400, Sell); > > fourthTrigger = ExRem(inFourthPos, Sell); > > > > Buy = firstTrigger + (secondTrigger * sigScaleIn) + (thirdTrigger * > > sigScaleIn) + (fourthTrigger * sigScaleIn); > > //SetPositionSize(IIf(firstTrigger, 100, IIf(secondTrigger, 200, > > IIf(thirdTrigger, 300, 400))), spsShares); > > SetPositionSize(IIf(firstTrigger, 1000, IIf(secondTrigger, 2000, > > IIf(thirdTrigger, 3000, 4000))), spsValue); > > > > > > priceColors = IIf(Close > previousClose, colorDarkGreen, IIf(Close < > > previousClose, colorDarkRed, colorDarkGrey)); > > buyColors = IIf(firstTrigger, colorGreen, IIf(secondTrigger, colorLime, > > IIf(thirdTrigger, colorYellow, colorOrange))); > > > > Plot(Close, "Price", priceColors, styleBar); > > PlotShapes((Buy > 0) * shapeUpArrow, buyColors, 0, L, -10); > > PlotShapes(Sell * shapeDownArrow, colorRed); > > ---------------------------------------- > > > > --- In [email protected], "droskill" <droskill@> wrote: > > > > > > Bill - can you post the total code? I'd love to have an example of this > > > as I have been trying to do the same thing. > > > > > > --- In [email protected], "longt3rm" <longt3rm@> wrote: > > > > > > > > Mike, > > > > > > > > Fantastic, it works! > > > > > > > > Thank you for your help! > > > > > > > > Bill > > > > > > > > --- In [email protected], "Mike" <sfclimbers@> wrote: > > > > > > > > > > Bill, > > > > > > > > > > You would need to calculate the trigger first (i.e. ExRem of position > > > > > state), then use ValueWhen. > > > > > > > > > > e.g. Something like the following: > > > > > > > > > > thirdTrigger = ExRem(inThirdPos, Sell); > > > > > bull400 = Close < ValueWhen(thirdTrigger, Close) AND inThirdPos AND > > > > > Ref(inThirdPos, -1); > > > > > > > > > > The key being that Flip will give all 1's for the duration that we > > > > > are in the position, whereas ExRem will remove redundant 1's leaving > > > > > only those bars where the condition was first met. Thus, ValueWhen > > > > > gives the Close of the most recent bar meeting that condition. > > > > > > > > > > Mike > > > > > > > > > > --- In [email protected], "longt3rm" <longt3rm@> wrote: > > > > > > > > > > > > Mike, > > > > > > > > > > > > Thank you! That helps significantly!! > > > > > > > > > > > > The one item I'm not able to figure out is how to track the last > > > > > > entry price so we can check to see if the current close is lower > > > > > > than our last entry. > > > > > > > > > > > > I believe (I could be mistaken) the sample you kindly provided is > > > > > > checking to see if today's close is less than yesterday's close. I > > > > > > would like to compare today's close to our last entry price. > > > > > > > > > > > > Thanks again for helping so much. I am slow to grasp AFL. > > > > > > > > > > > > Sincerely, > > > > > > > > > > > > > > > > > > Bill > > > > > > > > > > > > --- In [email protected], "Mike" <sfclimbers@> wrote: > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > I posted some code to a related question here: > > > > > > > http://finance.groups.yahoo.com/group/amibroker/message/146956 > > > > > > > > > > > > > > Short answers: > > > > > > > 1. Use Flip function to capture current position "state". > > > > > > > 2. Use state captured above AND'ed with next criteria. > > > > > > > > > > > > > > See if that helps. > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > --- In [email protected], "longt3rm" <longt3rm@> wrote: > > > > > > > > > > > > > > > > Hello, > > > > > > > > > > > > > > > > Goal Description: > > > > > > > > 1) Initial $500 position opened when RSI(2) < 25 > > > > > > > > 2) Add $1000 to position when entry price for #1 is less than > > > > > > > > current close. (regardless of value for RSI(2)) > > > > > > > > 3) Add $1500 to position when entry price for #2 is less than > > > > > > > > current close. (regardless of value for RSI(2)) > > > > > > > > 4) If all three positions are entered, we would have a total > > > > > > > > position of $3,000 > > > > > > > > > > > > > > > > > > > > > > > > Two questions / problems: > > > > > > > > 1) What is the most efficient way to determine if we have a > > > > > > > > position and if we do, is it the first ($500) or second > > > > > > > > ($500+$1000=$1500)? > > > > > > > > 2) If the initial buy is "Buy = RSI(2)", how do we tell > > > > > > > > AmiBroker that RSI(2) is not longer needed, we just need > > > > > > > > current close > last position entry price. > > > > > > > > > > > > > > > > Thanks for any suggestions. > > > > > > > > > > > > > > > > Sincerely, > > > > > > > > > > > > > > > > > > > > > > > > Bill > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
