PureBytes Links
Trading Reference Links
|
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@xxxxxxxxxxxxxxx, "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.tradingbasis.com/>
>
>
>
> _____
>
> From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]
On Behalf
> Of Andre
> Sent: Friday, July 07, 2006 9:14 AM
> To: amibroker@xxxxxxxxxxxxxxx
> 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
>
|