Hello Allan,
 
i have written some stuff but i have not tested it. it could give you some ideas.
personally i agree to the others that it is better to write a loop for it because it would allow you to plot the stop and take profit level.
It's much easier to analyse and optimise a system when you see what happens during the trade.
You could play with the code below, but it has to be checked first.
 
 
Buy = Cross (MACD(12, 26), Signal(12, 26,9));
BuyPrice = ValueWhen(Ref(Buy,-1),Open);
 
StopLoss = 8;//percent;
TakeProfitPercent = 20;//percent;
 
StopLoss = 1-0.01*StopLoss*BuyPrice;
TakeProfit = 1+0.01*TakeProfitPercent*BuyPrice;
 
StopLoss = IIf(HHV(C,BarsSince(Buy))>1+0.01*0.5*TakeProfitpercent*BuyPrice,1.10*BuyPrice,StopLoss);
 
Sell = Cross(High,TakeProfit) OR Cross(StopLoss, Low);
SellPrice = IIf(High>TakeProfit, TakeProfit, StopLoss);
 
Buy = ExRem(Buy, Sell);
Sell = ExRem(Sell,Buy);
 
Plot(C,"Price",7,128+styleNoTitle);
PlotShapes(Ref(Buy,-1)*shapeSmallCircle,5,0,BuyPrice,0);
PlotShapes(Sell*shapeSmallCircle,4,0,SellPrice,0);
 
PlotShapes(Buy*shapeUpArrow,5,0,Low,-12);
PlotShapes(Sell*shapeDownArrow,4,0,High,12);
 
Title = StrFormat(" - {{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) );
 
Best regards
 
Thomas
 
 


From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED]
Sent: Friday, July 07, 2006 8:38 PM
To: [email protected]
Subject: Re: RE: [amibroker] Re: How do I keep the buyprice while multiple buy signals happen

Hi Thomas,

I am new to amibroker and not the worlds greatest programmer,but your code may be a solution to the logic I was after..

I wanted to test a very simple system..The entry could be anything,and i would initially want a 8% max stop and 20% profit target.But I want the profit target on 50% of my position.If the high>profittarget,i would like to move my stoploss up to break even or have a trailing stop on the open position.Unfortunately,i was advised i need looping statements which is way beyond me....I think the IIf statement may work..

Buy=myrule;

BuyPrice = ValueWhen(Ref(Buy,-1),Open);

StopLoss = 0.92*BuyPrice;
ProfitTarget = 1.20*BuyPrice;

 

Sell = Cross(High,ProfitTarget) OR Cross(StopLoss, Low);
SellPrice = IIf(High>ProfitTarget, ProfitTarget, StopLoss); 

Buy = ExRem(Buy, Sell);
Sell = ExRem(Sell,Buy);

here is where i need some help.I understand your code.Is there a way to use the IIF and state if the position size=50%,move max loss stop to buyprice?? Or IIF close>profitarget,stoploss=buyprice??This would save me from loops!!!

 

Thanks,

Allan

 


 

 

 

 

----- Original Message -----

From: "Thomas Z." <[EMAIL PROTECTED]>

Date: Friday, July 7, 2006 1:36 pm

Subject: RE: [amibroker] Re: How do I keep the buyprice while multiple buy signals happen

> Hi Andre,
>
> i have not checked out my code below detailed but it should point
> you to the
> right direction. Just a quick modification.
> i would also better use the build-in applystop function instead
> manuallystop and profit target.
>
> Buy = Cross (MACD(12, 26), Signal(12, 26,9));
> BuyPrice = ValueWhen(Ref(Buy,-1),Open);
>
> StopLoss = 0.9*BuyPrice;
> ProfitTarget = 1.03*BuyPrice;
>
> Sell = Cross(High,ProfitTarget) OR Cross(StopLoss, Low);
> SellPrice = IIf(High>ProfitTarget, ProfitTarget, StopLoss);
>
> Buy = ExRem(Buy, Sell);
> Sell = ExRem(Sell,Buy);
>
>
> Best regards
>
> Thomas
> www.tradingbasis.com <http://www.tradingbasis.com/>
>
>
>
>  _____ 
>
> From: [email protected] [mailto:[EMAIL PROTECTED]
> On Behalf
> Of Andre
> Sent: Friday, July 07, 2006 5:24 PM
> To: [email protected]
> Subject: [amibroker] Re: How do I keep the buyprice while multiple buy
> signals happen
>
>
>
> Thanks Thomas,
> I knew about exrem. Thanks to you I realized one new thing: the
> recursive nature of the sales signal (which is based on the buy
> signal) means that I have to do Exrem several times. I have re-
> approached my problem and this code apparently seems to do the
> trick
> I wanted ("buy at MACD crossing, sell at 3% profit or 10% loss"),
> but, my gosh it's ugly (3 Exrems)! And I am not sure if logicaly
> this is enough. I proved empirically to myself (try stock AXP),
> that
> 2 exrems is not enough. Is there a more elegant way to do this?:
>
> -----------------------------------
>
> Buy = Cross (MACD(12, 26), Signal(12, 26,9));
> BP = IIf(Buy, Ref(BuyPrice,1), 0);
>
> //Actual BuyPrice [BP] is the Open of the following day
>
> Sell = Cross(High,1.03*ValueWhen(Buy, BP)) OR Cross(0.9*ValueWhen
> (Buy , BP), Low);
>
> // NOTE THAT AT THIS POINT I GET FALSE SELL SIGNALS BECAUSE I HAVE
> FALSE BUY SIGNALS
>
> Buy = ExRem(Buy, Sell);
>
> // THIS GETS RID OF FIRST WAVE OF FALSE SELLS
> // THEN WE RE-CALCULATE ALL BUYS AND SELLS:
>
> BP = IIf(Buy, Ref(BuyPrice,1), 0);
> //BuyPrice is the Open of the following day
>
> Sell = Cross(High,1.03*ValueWhen(Buy, BP)) OR Cross(0.9*ValueWhen
> (Buy , BP), Low);
>
> Buy = ExRem(Buy, Sell);
>
> // THIS IS NOT ENOUGH. IF THERE HAD BEEN 2 FALSE BUYS BEFORE,
> SELLS
> ARE STILL OFF.
>
> BP = IIf(Buy, Ref(BuyPrice,1), 0);
> Sell = Cross(High,1.03*ValueWhen(Buy, BP)) OR Cross(0.9*ValueWhen
> (Buy , BP), Low);
>
> Buy = ExRem(Buy, Sell);
>
> // I AM NOT SURE IF I HEREWITH COVERED IT ALL, OR I NEED TO
> CONTINUE
> THIS EXREM GYMNASTICS. IN PRACTICAL TESTS THIS SEEMS TO GIVE ME
> THE
> CORRECT +3% and -10% Trades.
>
> SellPrice = IIf(High>1.03*ValueWhen(Buy, BP), 1.03*ValueWhen(Buy,
> BP), 0.9*ValueWhen(Buy, BP));
>
> --- In [EMAIL PROTECTED] <mailto:amibroker%40yahoogroups.com>
> ps.com,"Thomas Z." <[EMAIL PROTECTED]> wrote:
> >
> > Hi Andre,
> >
> > i think the easiest way would simply be to use the exrem
> function.
> It would
> > assure that you only get a new buy after a sell.
> >
> > SYNTAX exrem( ARRAY1, ARRAY2 )
> > RETURNS ARRAY
> > FUNCTION removes excessive signals:
> > returns 1 on the first occurence of "true" signal in Array1
> > then returns 0 until Array2 is true even if there are "true"
> signals in
> > Array1
> > EXAMPLE buy = ExRem( buy, sell );
> > sell = ExRem( sell, buy );
> >
> > Best regards
> >
> > Thomas
> > www.tradingbasis.com <http://www.tradingb
> <http://www.tradingbasis.com/>asis.com/>
> >
> >
> >
> > _____
> >
> > From: [EMAIL PROTECTED] <mailto:amibroker%40yahoogroups.com>
> ps.com[mailto:[EMAIL PROTECTED]
> <mailto:amibroker%40yahoogroups.com> ps.com]
> On Behalf
> > Of Andre
> > Sent: Friday, July 07, 2006 9:14 AM
> > To: [EMAIL PROTECTED] <mailto:amibroker%40yahoogroups.com> ps.com
> > Subject: [amibroker] How do I keep the buyprice while multiple
> buy
> signals
> > happen
> >
> >
> >
> > Hello,
> >
> > This should be the simplest thing and I am simply running in
> circles
> > with AFL not being able to give me what I want.
> > Here's what I want in simple terms:
> >
> > . Buy on MACD crossing (buy at Open the following day).
> > . Sell at 3% profit or at 10% loss.
> >
> > Period. That's all.
> >
> > The problem I am having is in "keeping" the purchase price at
> hand.
> > Yes, I know about "ValueWhen" function, but I can't get it to
> work
> > because I can easily have multiple buy signals before the sell
> > occurs and a new Buy gives me a new BuyPrice that throws off all
> my
> > profit and loss targets.
> > Please advise. Thanks,
> >
> > Andre Perman
> >
>
>
>
>
>

__._,_.___

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




__,_._,___

Reply via email to