Thanks for the code!
--- In [email protected], "longt3rm" <longt...@...> 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
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>