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

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



PureBytes Links

Trading Reference Links

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*BuyPric
e,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
www.tradingbasis.com <http://www.tradingbasis.com/> 
 
 

  _____  

From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf
Of allansn@xxxxxxxxxxxxx
Sent: Friday, July 07, 2006 8:38 PM
To: amibroker@xxxxxxxxxxxxxxx
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." <tzg@xxxxxxxxxxxxxxxx> 

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: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] 
> On Behalf 
> Of Andre 
> Sent: Friday, July 07, 2006 5:24 PM 
> To: amibroker@xxxxxxxxxxxxxxx 
> 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 amibroker@xxxxxxxxx <mailto:amibroker%40yahoogroups.com> 
> ps.com,"Thomas Z." <tzg@xxx> 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: amibroker@xxxxxxxxx <mailto:amibroker%40yahoogroups.com> 
> ps.com[mailto:amibroker@xxxxxxxxx 
> <mailto:amibroker%40yahoogroups.com> ps.com] 
> On Behalf 
> > Of Andre 
> > Sent: Friday, July 07, 2006 9:14 AM 
> > To: amibroker@xxxxxxxxx <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 
> > 
> 
> 
> 
> 
>