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