[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Scaling in


  • Date: Fri, 05 Mar 2010 18:21:27 -0000
  • From: "matrix10014" <allansn@xxxxxxxxxxxxx>
  • Subject: [amibroker] Re: Scaling in

PureBytes Links

Trading Reference Links

Hi Mike,
I went over the code that you referred to,and I do have a couple of questions if it is OK with you(or anyone else).The code is below,which I am referring to..

I understand your definition of Bull100,not quite sure why == is used as opposed to =.I will read up on that.

I dont follow why the third trigger has 3000,4000 in the code,and there is no IFF(fourthtrigger)

"SetPositionSize(IIf(firstTrigger, 1000, IIf(secondTrigger, 2000,
IIf(thirdTrigger, 3000, 4000))), spsValue);"

In regards to reports,it appears that there is only one entry price even though there may be multiple scale in entries.Where could i see a detailed list of the actual entries

Thanks in advance,

Allan



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);


--- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@xxx> wrote:
>
> Allan,
> 
> Writing loops offers ultimate control. For the rare case that array processing is unable to do the job, loops are the only alternative.
> 
> For developers accustomed to languages such as C, C++, Java, etc. loops are also more familiar than working with arrays. However, AFL is built upon array processing and choosing an array based solution will almost always be faster than a looping version.
> 
> That being said, I believe that the looping example that you quote was written by Tomasz. As such, there almost certainly is some subtlety of the particular example that could not be done using arrays. Or perhaps an array implementation would have involved too much indirection as to be overly confusing.
> 
> Generally speaking, the vast majority of looping code can be replaced by use of Flip, ExRem, ValueWhen. The one exception is when later elements of an array are dependent upon previous elements of that same array. Even then, AMA and AMA2 can often handle it.
> 
> In the end, what's most important is that you understand the code. So, go with whichever approach that you find most natural, while still accomplishing the task at hand.
> 
> Mike
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "matrix10014" <allansn@> wrote:
> >
> > Thank you Mike..
> > 
> > I do have a couple of questions.Amibroker gives an example of scaling out of trades and uses code such as the following snippet.
> > 
> > -------------------------------------------
> > priceatbuy=0; 
> > highsincebuy = 0; 
> > 
> > exit = 0; 
> > 
> > for( i = 0; i < BarCount; i++ ) 
> > { 
> >    if( priceatbuy == 0 AND Buy[ i ] ) 
> >     { 
> >        priceatbuy = BuyPrice[ i ]; 
> >     } 
> > 
> >    if( priceatbuy > 0 ) 
> >     { 
> > -------------------------------------------
> > 
> > I have a better chance of running a 3 minute mile than coding something like that.I noticed in the examples you sent me,the code was more digestable..Here is a snippet of what you sent
> > 
> > ------------------------------------------------------------------
> > "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);"
> > -----------------------------------------------------------------
> > 
> > What are the differences between the two approaches?
> > 
> > If I understand FLIP,EXREM,VALUEWHEN,SIGSCALEIN and other functions in your code,does that serve as a workoaround for the code at the top of the page??Are those functions intended for mere mortals such as myself??
> > 
> > Thanks for the help,
> > 
> > 
> > Allan
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@> wrote:
> > >
> > > Hi,
> > > 
> > > There have been a couple of complete examples in the last week or so:
> > > 
> > > http://finance.groups.yahoo.com/group/amibroker/message/146956
> > > http://finance.groups.yahoo.com/group/amibroker/message/146976
> > > 
> > > Mike
> > > 
> > > --- In amibroker@xxxxxxxxxxxxxxx, "matrix10014" <allansn@> wrote:
> > > >
> > > > Would anyone be so kind to post code to scale in to a position.I have a bear of a time coding in AFL and would like to purchase 50% of my position on a signal,and the other 50% xATR's lower i.e 
> > > > entry price - optimized value x ATR..
> > > > 
> > > > 
> > > > Thanks in advance
> > > > 
> > > > Allan
> > > >
> > >
> >
>




------------------------------------

**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to 
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    amibroker-digest@xxxxxxxxxxxxxxx 
    amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/