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

Re: [amibroker] Struggling again... advice requested



PureBytes Links

Trading Reference Links

This is a personal thing but I never use applystop as I find it too
limiting. I always use loops instead.
A applystop only ever uses H for short or L for long
B you cannot plot the values of the exit without creating the loop, so
may as well use the loop, it only takes a couple more lines
C have to use Equity(1 or 2) to create sell values of applystop so
they can be plotted as arrows, but find equity so often messes up what
else I am trying to do in the overall code

I will use it when writing for others if it is suitable for the
aplication and the other requirements as above are not required

--
Cheers
Graham
AB-Write >< Professional AFL Writing Service
Yes, I write AFL code to your requirements
http://e-wire.net.au/~eb_kavan/ab_write.htm


On 1/9/06, cstrader <cstrader232@xxxxxxxxxxxx> wrote:
> OK Graham... I'm going to work on the loops. I have the following example
> from the help file which is going to either kill me or take me to the next
> level.   Is this what you were referring to?
>
> Do you use applystop for all of your backtesting?  Have you found it a good
> way to do scaling?  Do you think it would work OK for auto-trading?  I'm
> concerned that it is a bit of a black box -- that I won't really understand
> what it is doing.
>
> Thanks again so much.
>
> chuck
>
>
> Example 4: partial exit (scaling out) on profit target stops
>
> Example of code that exits 50% on first profit target, 50% on next profit
> target and everything at trailing stop:
>
> Buy = Cross( MA( C, 10 ), MA( C, 50 ) );
> Sell = 0;
>
> // the system will exit
> // 50% of position if FIRST PROFIT TARGET stop is hit
> // 50% of position is SECOND PROFIT TARGET stop is hit
> // 100% of position if TRAILING STOP is hit
>
> FirstProfitTarget = 10; // profit
> SecondProfitTarget = 20; // in percent
> TrailingStop = 10; // also in percent
>
> priceatbuy=0;
> highsincebuy = 0;
>
> exit = 0;
>
> for( i = 0; i < BarCount; i++ )
> {
>   if( priceatbuy == 0 AND Buy[ i ] )
>    {
>       priceatbuy = BuyPrice[ i ];
>    }
>
>   if( priceatbuy > 0 )
>    {
>       highsincebuy = Max( High[ i ], highsincebuy );
>
>      if( exit == 0 AND
>          High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) * priceatbuy )
>       {
>         // first profit target hit - scale-out
>         exit = 1;
>         Buy[ i ] = sigScaleOut;
>       }
>
>      if( exit == 1 AND
>          High[ i ] >= ( 1 + SecondProfitTarget * 0.01 ) * priceatbuy )
>       {
>         // second profit target hit - exit
>         exit = 2;
>         SellPrice[ i ] = Max( Open[ i ], ( 1 + SecondProfitTarget * 0.01 )
> * priceatbuy );
>       }
>
>      if( Low[ i ] <= ( 1 - TrailingStop * 0.01 ) * highsincebuy )
>       {
>         // trailing stop hit - exit
>         exit = 3;
>         SellPrice[ i ] = Min( Open[ i ], ( 1 - TrailingStop * 0.01 ) *
> highsincebuy );
>       }
>
>      if( exit >= 2 )
>       {
>         Buy[ i ] = 0;
>         Sell[ i ] = exit + 1; // mark appropriate exit code
>         exit = 0;
>         priceatbuy = 0; // reset price
>         highsincebuy = 0;
>       }
>    }
> }
>
> SetPositionSize( 50, spsPercentOfEquity );
> SetPositionSize( 50, spsPercentOfPosition * ( Buy == sigScaleOut ) ); //
> scale out 50% of position
>
>
>
> ----- Original Message -----
> From: "Graham" <kavemanperth@xxxxxxxxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Sunday, January 08, 2006 8:55 PM
> Subject: Re: [amibroker] Struggling again... advice requested
>
>
> > You do not need Osaka for this, the loops are not that hard once you
> > get the hang of them. It is more the logic you need to step through in
> > detail, and include at each step what has to be remembered and passed
> > on to each bar
> >
> >
> > --
> > Cheers
> > Graham
> > AB-Write >< Professional AFL Writing Service
> > Yes, I write AFL code to your requirements
> > http://e-wire.net.au/~eb_kavan/ab_write.htm
> >
> >
> >
> >
> >
> > On 1/9/06, Keith McCombs <kmccombs@xxxxxxxxxxxx> wrote:
> >> Link for osaka:
> >> http://www.amibroker.org/3rdparty/
> >>
> >>
> >> cstrader wrote:
> >>
> >> Right but the problem is that this line:
> >>
> >> Bought = Flip(Buy, Sell,);
> >>
> >> won't execute because sell is not yet (cannot yet be) defined.
> >>
> >> Do you have a link for the osaka plugin?  I can't seem to track it down.
> >> Did see some posts about array "persistency" which is what I think I'm
> >> looking for.
> >>
> >>
> >>
> >>
> >>
> >> ----- Original Message -----
> >> From: Graham
> >> To: amibroker@xxxxxxxxxxxxxxx
> >> Sent: Sunday, January 08, 2006 7:06 PM
> >> Subject: Re: [amibroker] Struggling again... advice requested
> >>
> >>
> >> flip starts on the first bar with 1 and ends last bar with 0, so
> >>
> >> Buyprice = Valuewhen (Buy and ref(Bought,-1)==0);
> >>
> >>
> >> --
> >> Cheers
> >> Graham
> >> AB-Write >< Professional AFL Writing Service
> >> Yes, I write AFL code to your requirements
> >> http://e-wire.net.au/~eb_kavan/ab_write.htm
> >>
> >>
> >> On 1/9/06, cstrader <cstrader232@xxxxxxxxxxxx> wrote:
> >> >
> >> >
> >> >
> >> > Hi Herman:
> >> >
> >> >
> >> >
> >> > Those are both excellent ideas.  They may be what I need.  Perhaps I'm
> >> > making too much of it, but I am indeed in a quagmire.  Let me try to be
> >> > clearer.
> >> >
> >> >
> >> >
> >> > I want to get in and out of trades as the day goes on (not simple
> >> > reversals, but in and out of trades).  To set my exits I need to
> >> > remember the initial buyprice of the entry.    In actual trading I can
> >> > get this entry price from the TWS, but I can't do that during
> >> > development.   I need also need to ignore later extraneous buy signals.
> >> >
> >> >
> >> >
> >> > Ideally the code would look something like that below.  However, it is
> >> > not possible, because you need to know the value of Sell in line 2 in
> >> > order to determine whether you are at the real (first) buypoint rather
> >> > than a later extraneous one.   However Sell cannot be defined until
> >> > line 4 (after buyprice is determined)
> >> >
> >> >
> >> >
> >> > A possibility is to set buyprice as static rather than array.  As I
> >> > mentioned earlier, this is a solution, but not a very good one.
> >> >
> >> >
> >> >
> >> > What am I missing?
> >> >
> >> >
> >> >
> >> > Chuck
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > ///1
> >> >
> >> > Buy = buyconditions;
> >> >
> >> >
> >> >
> >> > ///2 We're in a buy now, until we get a sell signal
> >> >
> >> > Bought = Flip(Buy, Sell,);
> >> >
> >> >
> >> >
> >> > ///3 Where did we enter?  Need to remember first buyprice and to ignore
> >> > subsequent buy signals (e.g. signals where we are already in a buy)
> >> >
> >> > Buyprice = Valuewhen (Buy and !Bought);
> >> >
> >> >
> >> >
> >> > ///4  Now we go flat
> >> >
> >> > Sell = C > Buyprice + 2 or C < Buyprice - 2;
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > ----- Original Message -----
> >> > From: Herman van den Bergen
> >> > To: amibroker@xxxxxxxxxxxxxxx
> >> > Sent: Sunday, January 08, 2006 5:41 PM
> >> > Subject: RE: [amibroker] Struggling again... advice requested
> >> >
> >> >
> >> > Perhaps this will give you more ideas...
> >> >
> >> > In the past i have "attached" text, signals, trade information, etc. to
> >> > bars by using staticvariables named with the bar's time appended. For
> >> > text example you could use:
> >> > staticvarsettext("Bar"+TimeNumber, "your info to attach"); Where the
> >> > TimeNumber is SelectedValue(TimeNum()). You can also use
> >> > StaticvarSet("Bar"+TimeNumber, Numericalvalue) to attach signals. This
> >> > method will work if you only want to tag a limited number of bars (up
> >> > to a few hundred). You can loop through the bars displayed and plot
> >> > numbers or show/recall text from selected bars.
> >> >
> >> > I presume you have looked at using a table? Look at the OSAKA plugin.
> >> >
> >> > If you do not need to save data after shutdown you can, instead of
> >> > using a text file, save long strings (same as file) in a
> >> > StaticvarSetText(), easier?
> >> >
> >> > Chuck, i think you may be making is more complicated than it needs
> >> > be...if you can describe exactly what your need perhaps we can help you
> >> > better....
> >> >
> >> > herman
> >> >
> >> >
> >> > -----Original Message-----
> >> > From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]On
> >> > Behalf Of cstrader
> >> > Sent: Sunday, January 08, 2006 12:54 PM
> >> > To: amibroker@xxxxxxxxxxxxxxx
> >> > Subject: Re: [amibroker] Struggling again... advice requested
> >> >
> >> >
> >> > Thanks again Herman.
> >> >
> >> > I basically do that too, although it isn't really the issue I have.
> >> >
> >> > My thinking is now here:  What I need is a new type of variable -- it
> >> > is static in the sense that it holds its value across bars, but dynamic
> >> > in the sense that it can change over time.  The problem with static
> >> > variables is that when you set them at, say 14:00, they change their
> >> > value back at  say 10:00 as well.
> >> >
> >> > In essence, what I want is a Hold() function where the length of the
> >> > hold is determined dynamically rather than statically.  Doesn't (yet)
> >> > exist!
> >> >
> >> > What I think what I'm going to try (anyone else ever done this?) is to
> >> > create a "history" text file.  At the end of every bar I will write
> >> > (append) the current status to a text file, along with the current
> >> > barindex.  This can be done realtime or by running the cursor across
> >> > the chart.  Then I'll read in from that history file as time goes on.
> >> > This will allow me to know what my positions were at say 10:31, even
> >> > when it's 14:01.
> >> >
> >> > I'm thinking this might help me,? although you've probably guessed by
> >> > now that I really have no idea what I'm doing...  :)
> >> >
> >> > chuck
> >> >
> >> > ----- Original Message -----
> >> > From: Herman van den Bergen
> >> > To: amibroker@xxxxxxxxxxxxxxx
> >> > Sent: Sunday, January 08, 2006 11:50 AM
> >> > Subject: RE: [amibroker] Struggling again... advice requested
> >> >
> >> >
> >> > In real trading you can use LastPrice = Lastvalue(C) or
> >> > GetRTData("Last");
> >> >
> >> > During developement I often use LastPrice = SelectedPrice(C); This
> >> > allows me to step my cursor over the bars (or just click on the chart
> >> > to select a bar) on the chart and trigger trades. Of course this is
> >> > ONLY to test the mechanics of your system and profits and fills do not
> >> > reflect real prices. Limit orders tend to fill only one way because the
> >> > selectedprice can be far away from the market price seen by the TWS.
> >> >
> >> > For initial testing I find this much easier/faster than working with
> >> > simulators or the DEMO TWS.
> >> >
> >> > herman
> >> >
> >> >
> >> > -----Original Message-----
> >> > From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]On
> >> > Behalf Of cstrader
> >> > Sent: Sunday, January 08, 2006 11:20 AM
> >> > To: amibroker@xxxxxxxxxxxxxxx
> >> > Subject: Re: [amibroker] Struggling again... advice requested
> >> >
> >> >
> >> > Herman....right but this assumes that you are real time and live or
> >> > paper trading.  But what do you do when you are developing the system?
> >> >
> >> > ----- Original Message -----
> >> > From: Herman van den Bergen
> >> > To: amibroker@xxxxxxxxxxxxxxx
> >> > Sent: Sunday, January 08, 2006 11:15 AM
> >> > Subject: RE: [amibroker] Struggling again... advice requested
> >> >
> >> >
> >> > In simple system you can check the positionsize:
> >> >
> >> > IBPosSize = ibc.GetPositionSize( Ticker );
> >> >
> >> >
> >> > assuming you got full fills you don't want to go short if you are
> >> > already short, or long if you are already long.
> >> >
> >> > For this type of trading you could/should be using minute bars and
> >> > limit trades to one per minute.
> >> >
> >> > If trading a reversal system you can also maintain your own Static
> >> > position indicator...
> >> >
> >> > hreman
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > -----Original Message-----
> >> > From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]On
> >> > Behalf Of cstrader
> >> > Sent: Sunday, January 08, 2006 11:04 AM
> >> > To: amibroker@xxxxxxxxxxxxxxx
> >> > Subject: Re: [amibroker] Struggling again... advice requested
> >> >
> >> > Sorry, I think my post wasn't that clear.  I am trading intraday, and I
> >> > want
> >> > to get in and out of trades frequently during the day.  The trouble I'm
> >> > having is determining whether I should open a new trade, because I
> >> > don't
> >> > know yet whether I've gotten out of the old one.  That is, you want to
> >> > use
> >> > Exrem() to avoid repeated buy signals, but you can't do that because
> >> > you
> >> > have to use the sell conditions to define the buy conditions.  Am I
> >> > making
> >> > any sense?
> >> >
> >> >
> >> > ----- Original Message -----
> >> > From: "Tradingbasis" <tzg@xxxxxxxxxxxxxxxx >
> >> > To: <amibroker@xxxxxxxxxxxxxxx>
> >> > Sent: Sunday, January 08, 2006 10:56 AM
> >> > Subject: RE: [amibroker] Struggling again... advice requested
> >> >
> >> >
> >> > > Hi,
> >> > >
> >> > > try this one:
> >> > >
> >> > > Setup = your buy condition;
> >> > > Tradedate = ValueWhen(setup,DateNum(),1);
> >> > > LastTradedate = Ref(Tradedate,-1);
> >> > > Otpd = Tradedate > Lasttradedate;//only one trade per day
> >> > >
> >> > > Buy =  Setup;
> >> > >
> >> > >
> >> > > - - - - - - - - - - - - - - - - - - - -
> >> > > Best regards
> >> > >
> >> > > Thomas
> >> > > www.tradingbasis.com
> >> > > support@xxxxxxxxxxxxxxxx
> >> > > - - - - - - - - - - - - - - - - - - - -
> >> > >
> >> > > -----Original Message-----
> >> > > From: amibroker@xxxxxxxxxxxxxxx [mailto: amibroker@xxxxxxxxxxxxxxx]
> >> > > On
> >> > > Behalf
> >> > > Of cstrader
> >> > > Sent: Sunday, January 08, 2006 4:48 PM
> >> > > To: amibroker@xxxxxxxxxxxxxxx
> >> > > Subject: [amibroker] Struggling again... advice requested
> >> > >
> >> > > I am struggling (again!), and would like to request some advice.
> >> > >
> >> > >
> >> > >
> >> > > My new systems take more than one trade in a day.  This creates what
> >> > > I
> >> > > call
> >> > > the Catch-22 problem.  You can't anymore use arrays to mark the
> >> > > trades
> >> > > because the entry is dependent on the exit which is dependent on the
> >> > > entry...  So now what do I do?
> >> > >
> >> > >
> >> > >
> >> > > One possibility is to code with loops.  I hate that idea because it's
> >> > > complicated and because I thought that AB was all about avoiding
> >> > > loops.
> >> > >
> >> > >
> >> > >
> >> > > Another possibility is to mark the entry price with a static variable
> >> > > and
> >> > > hold it until the exit.  This will (maybe) work OK in actual trading
> >> > > and
> >> > > in
> >> > > AA but it is hard to tell what is happening because the buy and sell
> >> > > arrows
> >> > > on the chart display are no longer accurate (because later static
> >> > > variable
> >> > > assignments mess up the display of earlier ones).
> >> > >
> >> > >
> >> > >
> >> > > This seems like such a basic problem that someone else must have
> >> > > dealt
> >> > > with
> >> > > it and found the solution.
> >> > >
> >> > >
> >> > >
> >> > > Thanks!
> >> > >
> >> > >
> >> > >
> >> > > chuck
> >> > >
> >> > >
> >> > >
> >> > >
> >> > > Please note that this group is for discussion between users only.
> >> > >
> >> > > To get support from AmiBroker please send an e-mail directly to
> >> > > SUPPORT {at} amibroker.com
> >> > >
> >> > > For other support material please check also:
> >> > > http://www.amibroker.com/support.html
> >> > >
> >> > >
> >> > > Yahoo! Groups Links
> >> > >
> >> > >
> >> > >
> >> > >
> >> > >
> >> > >
> >> > >
> >> > >
> >> > >
> >> > >
> >> > > Please note that this group is for discussion between users only.
> >> > >
> >> > > To get support from AmiBroker please send an e-mail directly to
> >> > > SUPPORT {at} amibroker.com
> >> > >
> >> > > For other support material please check also:
> >> > > http://www.amibroker.com/support.html
> >> > >
> >> > >
> >> > > Yahoo! Groups Links
> >> > >
> >> > >
> >> > >
> >> > >
> >> > >
> >> > >
> >> >
> >> >
> >> >
> >> > Please note that this group is for discussion between users only.
> >> >
> >> > To get support from AmiBroker please send an e-mail directly to
> >> > SUPPORT {at} amibroker.com
> >> >
> >> > For other support material please check also:
> >> > http://www.amibroker.com/support.html
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> > SPONSORED LINKS
> >> > Investment management software Real estate investment software
> >> > Investment property software
> >> > Software support Real estate investment analysis software Investment
> >> > software
> >> >
> >> > ________________________________
> > YAHOO! GROUPS LINKS
> >> >
> >> >
> >> >  Visit your group "amibroker" on the web.
> >> >
> >> >  To unsubscribe from this group, send an email to:
> >> >  amibroker-unsubscribe@xxxxxxxxxxxxxxx
> >> >
> >> >  Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
> >> >  To unsubscribe from this group, send an email to:
> >> >  amibroker-unsubscribe@xxxxxxxxxxxxxxx
> >> >
> >> >  Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
> >> >  Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
> >> >
> >> > ________________________________
> >
> >>
> >>
> >>
> >>
> >> Please note that this group is for discussion between users only.
> >>
> >> To get support from AmiBroker please send an e-mail directly to
> >> SUPPORT {at} amibroker.com
> >>
> >> For other support material please check also:
> >> http://www.amibroker.com/support.html
> >>
> >>
> >>
> >>
> >>
> >> ________________________________
> > YAHOO! GROUPS LINKS
> >>
> >>
> >>  Visit your group "amibroker" on the web.
> >>
> >>  To unsubscribe from this group, send an email to:
> >>  amibroker-unsubscribe@xxxxxxxxxxxxxxx
> >>
> >>  Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
> >>  To unsubscribe from this group, send an email to:
> >>  amibroker-unsubscribe@xxxxxxxxxxxxxxx
> >>
> >>  Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
> >>  Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
> >>
> >> ________________________________
> >
> >
> >
> > Please note that this group is for discussion between users only.
> >
> > To get support from AmiBroker please send an e-mail directly to
> > SUPPORT {at} amibroker.com
> >
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> >
> >
> > Yahoo! Groups Links
> >
> >
> >
> >
> >
> >
>
>
>
>
> Please note that this group is for discussion between users only.
>
> To get support from AmiBroker please send an e-mail directly to
> SUPPORT {at} amibroker.com
>
> For other support material please check also:
> http://www.amibroker.com/support.html
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>


------------------------ Yahoo! Groups Sponsor --------------------~--> 
Try Online Currency Trading with GFT. Free 50K Demo. Trade 
24 Hours. Commission-Free. 
http://us.click.yahoo.com/RvFikB/9M2KAA/U1CZAA/GHeqlB/TM
--------------------------------------------------------------------~-> 

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For other support material please check also:
http://www.amibroker.com/support.html

 
Yahoo! Groups Links

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

<*> 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/