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