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

Re: [amibroker] How do I buy on the actual MA cross price and not on close?



PureBytes Links

Trading Reference Links



A Good Example of what Tomaz is saying is To look at the 200 Day MA and look at its recent cross through the S&P .

One minutes its above and the next minute its below . This could be disasterous for your trading . One minute going short and the net minute going long.

Its worth a look into.

Regards

Malcolm


On Tue, Jul 21, 2009 at 12:37 AM, Tomasz Janeczko <groups@xxxxxxxxxxxxx> wrote:
 

Don't do this. That's pretty basic future leak mistake. Will look nice on paper but will fail in real trading.
If you calculate MA on close you should actually place your trade on next open. What you are trying
to do is to buy before close even occurs, but "knowing" that close will be actually where it is and
that crossover will be kept at the close. In real trading you would NOT know if prices don't reverse
and invalidate your cross at close until market in fact closes.

Best regards,
Tomasz Janeczko
amibroker.com


----- Original Message -----
From: "christianvost" <christianvost@xxxxxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Tuesday, July 21, 2009 12:20 AM
Subject: [amibroker] How do I buy on the actual MA cross price and not on close?

> Hi,
> I'm just trying to work out how to backtest a simple MA cross but using the actual price on the cross, as the entry/exit. It's
> just a very basic experiment and I'm using 5min bars and alot of the time the MA cross comes during the first or second minute of
> the bar. I found a formula to calculate the value of the next bar that would make the MA cross, based on the current bar closing
> values, but I can't figure out how to implement this in a system which would backtest? Perhaps it could run this formula over each
> bar, and where there is a cross, use that as the entry price , and not the close price? Even if someone could tell me how to
> choose any bar from a price array, and run this formula, as it only seems to work in an exploration using the last bar of the
> array. Many thanks for any help.
> Code is below...
>
> //PricePredictSegment.afl
> //
> //This runs in Explore only...
> //Set nLastDays n=1
>
> Length1 = Param("Length1",6,1,81,2);
> Length2 = Param("Length2",35,2,200,2);
>
> MA1 = MA(C,Length1);
> MA2 = MA(C,Length2);
>
> Buy = Cross(MA1,MA2);
> Sell = Cross(MA2,MA1);
>
> e = Equity();
> Maxe = LastValue(Highest(e));
> Plot(Close,"Price",colorBlack,styleCandle);
>
> Plot(MA1,"MA1",colorGreen,styleLine);
> Plot(MA2,"MA2",colorBlue,styleLine);
>
> shape = Buy * shapeUpArrow + Sell * shapeDownArrow;
>
> PlotShapes(shape, IIf(Buy,colorGreen,colorRed),0, IIf(Buy,Low,High));
>
> Plot(e,"Equity",colorBlue,styleLine|styleOwnScale,0,Maxe);
> Plot(10000,"",colorBlue,styleLine|styleOwnScale,0,Maxe);
> GraphXSpace = 5;
>
> ///////////////////////////////////
> //
> //Given the lengths of the two moving averages, each of which uses the value of the close
> //to compute it's average, compute the closing price that will cause the two averages
> //to intersect
> //
> //
> //
>
> //Retrieve the curent values of the moving average lengths
>
> st = _PARAM_VALUES();
> Cp = StrFind(st,",");
> P1 = StrMid(st,1,Cp-2);
> Ccp = StrFind(st,")");
> P2 = StrMid(st,Cp,Ccp-Cp-1);
>
> //Moving average Lengths
> //FastLength = Length1;
> //SlowLength = Length2;
> Fastlength = StrToNum(p1);
> SlowLength = StrToNum(p2);
>
> Price = C;
>
> MAfast = MA(Price,FastLength);
> MASlow = MA(Price,SlowLength);
> MAFM1 = IIf(FastLength>1,MA(Price,FastLength-1),0);
> MASM1 = IIf(SlowLength>1,MA(Price,SlowLength-1),0);
>
> Filter = BarIndex() == LastValue(BarIndex());
>
> PartA = FastLength*(SlowLength-1)*MASM1;
> PartB = SlowLength*(Fastlength-1)*MAFM1;
> LenDiff = SlowLength-FastLength;
> MACrossClose = (PartA - PartB)/(LenDiff);
>
> AddColumn(FastLength,"FL",1.0);
> AddColumn(SlowLength,"SL",1.0);
> AddColumn(MAFast,"MAF",1.9);
> AddColumn(MASlow,"MAS",1.9);
> AddColumn(MACrossClose,"Crosses",1.9);
>
> //AddTextColumn(st,"Params",1.0);
> //AddColumn(cp,"cp",1.0);
> //AddTextColumn(P1,"P1",1.0);
> //AddColumn(ccp,"ccp",1.0);
> //AddTextColumn(P2,"P2",1.0);
> //
> //
>
>
>
>
> ------------------------------------

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




--
Malcolm A.B Croucher


__._,_.___


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





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___