Hi, But... is it "dangerous" to set it off? You say in the old days it was, but what is different today? Can I safely turn that off and expect that it will work well?
Thanks, Louis 2008/7/3 Tomasz Janeczko <[EMAIL PROTECTED]>: > Hello, > > As for 1. PriceBoundChecking is ON by default to prevent from unrealistic > entry/exit prices that you could get > if you made mistake in your coding. In the old days, we got lots of support > issues because people were getting > fills outside H-L range due to their sloppy coding. Now by default AB won't > allow fills outside H-L range. > > Best regards, > Tomasz Janeczko > amibroker.com > > ----- Original Message ----- > *From:* Louis Préfontaine <[EMAIL PROTECTED]> > *To:* [email protected] > *Sent:* Thursday, July 03, 2008 5:27 AM > *Subject:* Re: [amibroker] Re: Buyprice and sellprice... > > Hi all, > > Wow what a nice thread! I feel like I finally asked omething that's > intelligent enough to be worthy! ;-) > > Some thoughts: > > 1)Graham and Tomasz: I really like the simplicity of the SetOption( > "PriceBoundChecking", 0 ); Kind of funny. I was scratching my head all > over and that was all there, so easy... Thanks! I was wondering, is > there any hidden danger of setting priceboundchecking to "off"? I mean: > what is the utility of this anyway? > > 2) Howard, thank you a lot for your loop. What I am wondering, is what > can be the advantage of such a loop over a more simple IIF command? I'd > like to use loops in my codes, but so far I found nothing that needed a loop > badly, or maybe I am missing something? What I am trying to do is to change > that % adjustment depending on situations. I'd like to set like 5-10 > different conditions of my own; would that be easier to do with a loop or > with IIF? Also, does it take longer for a loop? If I scan thousands of > tickers in 1-minute bars, can it be a problem? Thanks! > > 3) Barry: I understand your point. Why I badly need such slippage > adjustment is because I want to trade in less liquid markets and I want the > results to be more accurate. When there is a 1-2% difference between bid > and ask, well that's the difference between buying a new home or dinning at > the YMCA in the long run... > > Thank you all, > > Louis > > > > > 2008/7/2 Howard B <[EMAIL PROTECTED]>: > >> Hi Ed -- >> >> The question I received wanted the solution to be programmed using a loop. >> >> Thanks, >> Howard >> >> >> >> On Wed, Jul 2, 2008 at 10:26 AM, Edward Pottasch <[EMAIL PROTECTED]> >> wrote: >> >>> hi Howard, >>> >>> why use a loop, why not use IIF? >>> >>> BuyPrice = IIF(Buy,BuyPrice * 1.01, BuyPrice); >>> >>> rgds, Ed >>> >>> >>> >>> >>> ----- Original Message ----- >>> *From:* Howard B <[EMAIL PROTECTED]> >>> *To:* [email protected] >>> *Sent:* Wednesday, July 02, 2008 7:11 PM >>> *Subject:* Re: [amibroker] Re: Buyprice and sellprice... >>> >>> Greetings all -- >>> >>> I received a private email asking for more clarification about the code >>> segment I posted. Since the technique may be of general interest, I've >>> posted it to the forum. >>> >>> Here is a complete trading system that adjusts the BuyPrice and >>> SellPrice, >>> under the control of a Param. >>> >>> Replace the simple moving average crossover for the Buy with a more >>> intelligent one of your own. And the Sell as well. >>> >>> Run this with AdjustBuyPrice set to 0, and again with it set to 1. >>> >>> For each run, open the Report, then look at Trades and compare the price >>> of entry and exit. >>> >>> ///////////////////////////////////////////////////// >>> >>> // adjustBuyPrice.afl >>> >>> // In response to a question on the Yahoo AmiBroker Forum, >>> // this code shows one way to adjust the Buyprice and Sell Price, >>> // perhaps to model slippage. >>> >>> // Howard Bandy >>> // July 2, 2008 >>> >>> >>> SetTradeDelays(0,0,0,0); >>> BuyPrice = C; >>> SellPrice = C; >>> >>> // When AdjustBuyPrice is 0, no changes are made >>> // When AdjustBuyPrice is 1, BuyPrice and Sell Price are adjusted >>> >>> AdjustBuyPrice = Param("adjBuyPrice",0,0,1,1); >>> >>> MA1 = 10; >>> MA2 = 5; >>> Buy = Cross(MA(C,MA1),MA(C,MA2)); >>> >>> if (AdjustBuyPrice) >>> { >>> for (i=0; i<BarCount; i++) >>> { >>> // test to see if there was a Buy on this bar >>> // and if there was, adjust BuyPrice >>> if (Buy[i] == 1) >>> { >>> BuyPrice[i] = 1.01*BuyPrice[i]; >>> } >>> } >>> } >>> >>> Sell = BarsSince(Buy)>=3; >>> >>> >>> if (AdjustBuyPrice) >>> { >>> for (i=0; i<BarCount; i++) >>> { >>> // test to see if there was a Sell on this bar >>> // and if there was, adjust SellPrice >>> if (Sell[i] == 1) >>> { >>> SellPrice[i] = 0.99*BuyPrice[i]; >>> } >>> } >>> } >>> >>> >>> >>> >>> >>> ////////////////////////////////////////////////////// >>> >>> Thanks, >>> Howard >>> www.quantitativetradingsystems.com >>> >>> On Wed, Jul 2, 2008 at 9:08 AM, Dennis Brown <[EMAIL PROTECTED]> wrote: >>> >>>> Barry, >>>> >>>> About the only comment I can make is that I have produced systems the >>>> generate in real life what they backtest to. If you understand all >>>> the issues, you can make it match. Another point is that when I trade >>>> against my system --deciding the best second to send the order after >>>> it says to send it, I generally get a better result. This is trading >>>> one minute bars. It all just depends on the details of the system and >>>> the trader --and the delays from the data feed. >>>> >>>> Other than that, I generally agree with your assessment. >>>> >>>> BR, >>>> Dennis >>>> >>>> >>>> On Jul 2, 2008, at 11:40 AM, Barry Scarborough wrote: >>>> >>>> > I guess I will start a debate that I don't intend to participate in >>>> > but state it for consideration. It seems many are trying to tweak >>>> > their back tester to find the absolute best performance but include >>>> > intangibles like slippage. Back testing, in my opinion, should only >>>> > be used to compare systems to find which out performs another. That >>>> > is all you need to do because the market will change and the system >>>> > will not work as you expect. So it is a waste of time to try to eek >>>> > our more gain or try to factor in slippage or all such nonsense. >>>> > >>>> > Why do I say this? I have a system that consistently will back test >>>> > 200% to 1000% A DAY using 1 Russell emini contract ER2 and a 1 minute >>>> > chart. In longer periods the gain is less and I use various time >>>> > periods and data samples. In the real world it does not make a profit >>>> > on a 1 minute chart. But that system works much better than one that >>>> > back tests with less gain and the system does not even start to make >>>> > a consistent gain with a period under 15 minutes. Using hour charts >>>> > it is much better but no where near 200% a day the back tester shows. >>>> > >>>> > The problem is when you enter the real world, especially with auto >>>> > trading, whipsaw during sideways periods and during trend changes >>>> > will eat your lunch. Auto trading will come close to getting the >>>> > value of the close at the time the signal was generated by your >>>> > system. But there is slippage and that can be significant depending >>>> > on the buy/ask spread and the volatility of the market. You can't >>>> > predict what it will be. Don't even try! Even if you use a simple >>>> > button pushing auto trading system, where you hit the buy or sell >>>> > button when you see your signal, you can't hit the button fast enough >>>> > to simulate the price you get on the static chart. So your results >>>> > will not come close to your back test results. I REPEAT NOT EVEN >>>> > CLOSE!!! So it is a waste of time to do more than use back testing to >>>> > compare systems. Trying to predict what it will do in the real world >>>> > is deceitful, sheer folly, don't do it. >>>> > >>>> > Well that's my two cents worth. I am going back to sleep now. >>>> > >>>> > Cheers, >>>> > Barry >>>> > >>>> > --- In [email protected] <amibroker%40yahoogroups.com>, >>>> "Howard B" <[EMAIL PROTECTED]> wrote: >>>> >> >>>> >> Hi Louis -- >>>> >> >>>> >> Perhaps write a simple loop? >>>> >> >>>> >> for (i=0; i<BarCount; i++) >>>> >> { >>>> >> // test to see if there was a Buy on this bar >>>> >> // and if there was, adjust BuyPrice >>>> >> if (Buy[i] == 1) >>>> >> { >>>> >> BuyPrice[i] = 1.01*BuyPrice[i]; >>>> >> } >>>> >> } >>>> >> >>>> >> Or am I missing something? >>>> >> >>>> >> Thanks, >>>> >> Howard >>>> >> >>>> >> >>>> >> >>>> >> >>>> >> On Tue, Jul 1, 2008 at 9:27 PM, tayamaan <[EMAIL PROTECTED]> wrote: >>>> >> >>>> >>> Louis, you now assume your slippage to be 1%, which is a guess >>>> >>> anyways. It differs per situation what your system considers to be >>>> >>> the Buy/Sell Price and what you actually pay or get at the market. >>>> >>> These are still two different things. I wouln't know how to >>>> > calculate >>>> >>> the real slippage, all you can do is comparing the difference >>>> > over a >>>> >>> period of time and take some kind of average. >>>> >>> >>>> >>> Adrian >>>> >>> >>>> >>> --- In [email protected] >>>> >>> <amibroker%40yahoogroups.com><amibroker% >>>> 40yahoogroups.com>, >>>> > Graham >>>> >>> <kavemanperth@> wrote: >>>> >>>> >>>> >>>> turn off the option of PriceBoundChecking in the Analyser >>>> > settings >>>> >>> of in the AFL >>>> >>>> >>>> >>>> SetOption( "PriceBoundChecking", 0 ); >>>> >>>> >>>> >>>> -- >>>> >>>> Cheers >>>> >>>> Graham Kav >>>> >>>> AFL Writing Service >>>> >>>> http://www.aflwriting.com >>>> >>>> >>>> >>>> >>>> >>>> 2008/7/2 Louis Préfontaine <rockprog80@>: >>>> >>>>> Hi, >>>> >>>>> >>>> >>>>> But is it possible to set the backtester to consider that the >>>> >>> buyprice was >>>> >>>>> let's say 1% higher than the Close on the bar the trade was >>>> > made? >>>> >>>>> >>>> >>>>> That's what I tried to do. If it's complicated, I can live >>>> > with >>>> >>> this (well, >>>> >>>>> I can at least try, since I believe I am still a beginner in >>>> >>> understanding >>>> >>>>> AFL), but I'd need to know if it is possible, and if yes, what >>>> >>> can be a good >>>> >>>>> start... >>>> >>>>> >>>> >>>>> Was I on the right track with >>>> >>>>> >>>> >>>>> SetTradeDelays( 1, 1, 1, 1 ); >>>> >>>>> BuyPrice = c*1.01; >>>> >>>>> SellPrice = c*0.99; >>>> >>>>> >>>> >>>>> Cause it does not work at all... >>>> >>>>> >>>> >>>>> Thanks again, >>>> >>>>> >>>> >>>>> Louis >>>> >>>>> >>>> >>>>> 2008/7/1 Graham <kavemanperth@>: >>>> >>>>>> >>>> >>>>>> Then you need to set out exactly what you need to do and >>>> > write >>>> >>> the afl to >>>> >>>>>> match >>>> >>>>>> It is all logical steps >>>> >>>>>> I do it by writing down all the restrictions and >>>> > possibilities >>>> >>> and >>>> >>>>>> what I need at the end and how I think is best way to achieve >>>> >>> this >>>> >>>>>> ......... in detail. There are no short cuts and can be very >>>> >>> tedious. >>>> >>>>>> I also more often than not write out a flow chart to map all >>>> >>>>>> decisions, inputs, outputs, calculations etc. >>>> >>>>>> >>>> >>>>>> -- >>>> >>>>>> >>>> >>>>>> Cheers >>>> >>>>>> Graham Kav >>>> >>>>>> AFL Writing Service >>>> >>>>>> http://www.aflwriting.com >>>> >>>>>> >>>> >>>>>> 2008/7/2 Louis Préfontaine <rockprog80@>: >>>> >>>>>>> Hi Adrian, >>>> >>>>>>> >>>> >>>>>>> Thanks for your suggestion. But still... How can I do >>>> > this? I >>>> >>> mean: I >>>> >>>>>>> want to be precise. With the kind of markets I am in and >>>> > what >>>> >>> I am >>>> >>>>>>> trying >>>> >>>>>>> to do, precision is very important... I need to be able to >>>> > set >>>> >>> a >>>> >>>>>>> particular % adjustment for particular situations... >>>> >>>>>>> >>>> >>>>>>> Louis >>>> >>>>>>> >>>> >>>>>>> 2008/7/1 tayamaan <tayamaan@>: >>>> >>> >>>> >>>>>>>> >>>> >>>>>>>> Hi, if you would really like to try to compensate for >>>> >>> slippage, >>>> >>>>>>>> adding this to your commissions as part of your >>>> > transaction >>>> >>> costs is >>>> >>>>>>>> perhaps an idea. >>>> >>>>>>>> >>>> >>>>>>>> Adrian >>>> >>>>>>>> >>>> >>>>>>>>> Hi Graham, >>>> >>>>>>>>> >>>> >>>>>>>>> How can I put more information so that my buy price is >>>> > 1% >>>> >>> higher >>>> >>>>>>>> than C and >>>> >>>>>>>>> sell price 1% lower than C? >>>> >>>>>>>>> >>>> >>>>>>>>> Thanks, >>>> >>>>>>>>> >>>> >>>>>>>>> Louis >>>> >>>>>>>>> >>>> >>>>>>>>> 2008/7/1 Graham <kavemanperth@>: >>>> >>>>>>>>> >>>> >>>>>>>>>> Without more information on what you are trying to >>>> > achieve >>>> >>>>>>>>>> The price will be for the bar of actual entry C*1.01 >>>> > or >>>> >>> C*0.99 >>>> >>>>>>>>>> >>>> >>>>>>>>>> Also the prices may be outside than the bar range in >>>> >>> which case >>>> >>>>>>>> the >>>> >>>>>>>>>> closer of high or low is used if you have the >>>> >>> PriceBoundChecking >>>> >>>>>>>> on >>>> >>>>>>>>>> >>>> >>>>>>>>>> -- >>>> >>>>>>>>>> Cheers >>>> >>>>>>>>>> Graham Kav >>>> >>>>>>>>>> AFL Writing Service >>>> >>>>>>>>>> http://www.aflwriting.com >>>> >>>>>>>>>> >>>> >>>>>>>>>> 2008/7/1 Louis Préfontaine <rockprog80@ <rockprog80% >>>> >>>>>>>> 40gmail.com> >>>> >>>>>>>>>>> : >>>> >>>>>>>>>> >>>> >>>>>>>>>>> Hi, >>>> >>>>>>>>>>> >>>> >>>>>>>>>>> I have been trying to set a formula for slippage: >>>> >>>>>>>>>>> >>>> >>>>>>>>>>> SetTradeDelays( 1, 1, 1, 1 ); >>>> >>>>>>>>>>> >>>> >>>>>>>>>>> BuyPrice = C*1.01; >>>> >>>>>>>>>>> SellPrice = C*0.99; >>>> >>>>>>>>>>> >>>> >>>>>>>>>>> It doesn't work at all. I tried to write C*50 just >>>> > for >>>> >>> fun, but >>>> >>>>>>>> it didn't >>>> >>>>>>>>>>> change the buyprice at all. What can possibly be >>>> > wrong? >>>> >>>>>>>>>>> >>>> >>>>>>>>>>> Thanks, >>>> >>>>>>>>>>> >>>> >>>>>>>>>>> Louis >>>> >>>> >>>> >>> >>>> >>> >>>> >>> >>>> >> >>>> > >>>> > >>>> > >>>> > ------------------------------------ >>>> > >>>> > 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 NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: >>>> > http://www.amibroker.com/devlog/ >>>> > >>>> > For other support material please check also: >>>> > http://www.amibroker.com/support.html >>>> > Yahoo! Groups Links >>>> > >>>> > >>>> > >>>> >>>> >>> >> > >
