Correction, again. Ooops! my post was intended for the econimic paper on TA.
----- Original Message ---- From: Doji Star <[EMAIL PROTECTED]> To: [email protected] Sent: Saturday, May 24, 2008 7:36:45 PM Subject: Re: [amibroker] Re: Using example AFL in reference - can't set trailing stop for sigscale price OOOPS! my most for intended for the economic paper on TA. ----- Original Message ---- From: Doji Star <dojistarbullish@ yahoo.com> To: [EMAIL PROTECTED] ps.com Sent: Saturday, May 24, 2008 7:34:01 PM Subject: Re: [amibroker] Re: Using example AFL in reference - can't set trailing stop for sigscale price A pair of mad scientists! ----- Original Message ---- From: Graham <kavemanperth@ gmail.com> To: [EMAIL PROTECTED] ps..com Sent: Sunday, April 27, 2008 3:44:02 AM Subject: Re: [amibroker] Re: Using example AFL in reference - can't set trailing stop for sigscale price It should be BuyPrice[i] = ( 1 + FirstProfitTarget * 0.01 ) * PriceAtBuy; -- Cheers Graham Kav AFL Writing Service http://www.aflwriti ng.com 2008/4/23 aryah55 <[EMAIL PROTECTED] org.au>: > > I have never got sigscaleout example 4 (or example 3 for that matter) > from manual to work - until now (I think). > As pointed out by Graham in previous messages, there is a critical > line missing from the manual code and yours - see line under the Buy / > sigScaleout line. This is in fact what you are looking for I think - > the sigscaleout buy price code is > BuyPrice[i] = FirstProfitTarget + PriceAtBuy; > I dont know why this line works - it just does!! [I would have thought > that the BuyPrice for the second parcel should be original buy price > (Price at Buy) plus 10% thereof not plus 10 but???] > I had other problems with the published code particularly with the > Trail stop and have solved them with the revised code below. By > placing the revised trail as an ELSE condition in both the initial and > second stages, it exits at the appropriate stop ie its 10% below the > initial buyprice and, after the scale out,it becomes 10% below the > sigscaleout buyprice. Hope this helps. > > // 23April 2008. > //========== ========= ======= SIGSCALEOUT > ============ ========= ========= ========= ========= ========= ==== > // BASED ON A COPY OF EXAMPLE 4 FROM MANUAL RE SCALE IN AND OUT > // EXAMPLE INCLUDES SIMPLE SCALE OUT OF POSITION ON PROFIT TARGETS ONLY > // EXAMPLE (AND EXAMPLE3) DIN'T WORK FOR ME - OTHERS AS WELL AS NOTED > ON MANY MESSAGES ON FORUM > // MY PROBLEMS INCLUDED - SCALEOUT SCALED 90-95% OF POSITION ON FIRST > PROFIT TARGET EVEN WHEN SET TO 50% > // EXAMPLE DID WORK FOR SOME INCLUDING GRAHAM > // TRACED FIRST PROBLEM AFTER TOO MANY HOURS TO THE INTERACTION > BETWEEN SETTRADEDELAYS AND SIGSCALEOUT > // MY FIX CREATED A SECOND PROBLEM - TRAIL WAS BEING EXECUTED ON SAME > DAY THAT 2ND PROFIT TARGET MET - UNDERSTATING PROFIT. > // NOT BEING ANY SORT OF PROGRAMMER, MY SOLUTIONS MAY BE > ROUGH/INEFFICIENT BUT FOR WHAT ITS WORTH - > // SOLUTION TO PROBLEM 1 - SetTradeDelays to (0,0,0,0) (MY default for > EOD trading is (1,0,1,0)) > // Defer Buy Signal to today from yesterday - > // Add BUYPRICE code below Buy SigScaleOut line as per Graham's > message (Thanks) > // Raw Signals now wrong but built in backtest ok > // SOLUTION TO PROBLEM 2 - Change Trail and make an ELSE statement on > both of the initial entry and the scale out IF statements > // ============ ========= ========= ===== EXAMPLE 4 SOLVED (FOR ME) > ============ ========= ========= ======== > //========== ========= ========= ========= ========= ========= ========= > ========= ========= ========= ========= == > Buy = Cross( EMA( C, 8 ), EMA( C, 13 ) ); > Sell = 0; // Must be 0 as cannot use Sell if using scaleInOut? > // My Long Default In Settings - Enter at the open tomorrow, exit > at the close today! > > // TO AVOID SETTRADEDELAY Problem One - > ============ ========= ========= ========= ========= ========= ======= > SetTradeDelays( 0,0,0,0); // ADDED THIS CODE - MUST SET THIS TO > ZERO else SCALE OUT NO WORK!!! > HoldBuy = 0; > for( i = 0; i < BarCount-1; i++ ) > { > if( Buy[i]) > { > HoldBuy[i] = 0; > HoldBuy[i+1] = 1; > } > } > Buy = HoldBuy; // BUY signal now delayed to today from yesterday > // > //========== ========= ========= ========= ========= ========= ========= > ========= ========= ========= ======= > > > // the system will exit > // 50% of position if FIRST PROFIT TARGET stop is hit > // 50% of position is SECOND PROFIT TARGET stop is hit > // 100% of position if TRAILING STOP is hit > // nb - "Sell will exit the total trade AND cannot be used as pyramid > exit. Only Buy can be used to scale in AND out" > > > FirstProfitTarget = 10; // profit > SecondProfitTarget = 20; // in percent > TrailingStop = 10; // also in percent > > priceatbuy=0; > highsincebuy = 0; > exit = 0; > > for( i = 0; i < BarCount; i++ ) > { > if( priceatbuy == 0 AND Buy[ i ] ) > { > priceatbuy = BuyPrice[ i ]; > > } > > if( priceatbuy > 0 ) > { > highsincebuy = Max( High[ i ], highsincebuy ); > > if( exit == 0 AND High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) > * priceatbuy ) > { > // first profit target hit - scale-out > exit = 1; > Buy[ i ] = sigScaleOut; > BuyPrice[i] = FirstProfitTarget + PriceAtBuy; // ADDED per Group > message from Graham - MUST HAVE > } > else // Added ELSE here for Initial entry trail stop > { > if( exit == 0 AND Low[ i ] <= ( 1 - TrailingStop * 0.01 ) * > > highsincebuy ) > { > // trailing stop hit - exit > exit = 3; > SellPrice[ i ] = Min( Open[ i ], ( 1 - TrailingStop * 0.01 > ) * highsincebuy ); > } > } > > > if( exit == 1 AND High[ i ] >= ( 1 + SecondProfitTarget * 0.01 ) > * priceatbuy ) > { > // second profit target hit - exit > exit = 2; > SellPrice[ i ] = Max( Open[ i ], ( 1 + SecondProfitTarget * 0.01 > ) * priceatbuy ); > } > else // Added ELSE here for trail stop on scale out parcel > { > if(exit == 1 AND Low[ i ] <= ( 1 - TrailingStop * 0.01 ) * > highsincebuy ) > { > > exit = 3; > SellPrice[ i ] = Min( Open[ i ], ( 1 - TrailingStop * 0.01 ) * > highsincebuy ); > } > } > // REMOVE ORIGINAL TRAIL STOP FROM HERE > if( exit >= 2 ) > { > //Buy[i] = 0; // REM this as not necessary? > > Sell[ i ] = exit+1; // mark appropriate exit > code(3profit, 4Trail) AND define SELL (else no sells ever) > > exit = 0; > priceatbuy = 0; // reset price > highsincebuy = 0; > } > } > } > SetPositionSize( 2, spsPercentOfEquity) ; // 2% of equity > > SetPositionSize( 50, spsPercentOfPositio n * ( Buy == sigScaleOut ) ); > // scale out 50% of position > > > //========== ========= ========= ========= ========= ========= ======= > > > > --- In [EMAIL PROTECTED] ps.com, "gmorlosky" <[EMAIL PROTECTED] ..> wrote: > > > > I would like to have an OR for the trailing stop of either > > the "original Buy price OR the last sigscaleout price". Can't figure > > how to reference the last sigscaleout price. Help please. > > > > Buy = Cross( MA( C, 10 ), MA( C, 50 ) ); > > Sell = 0; > > > > // the system will exit > > // 50% of position if FIRST PROFIT TARGET stop is hit > > // 50% of position is SECOND PROFIT TARGET stop is hit > > // 100% of position if TRAILING STOP is hit > > > > FirstProfitTarget = 10; // profit > > SecondProfitTarget = 20; // in percent > > TrailingStop = 10; // also in percent > > > > priceatbuy=0; > > highsincebuy = 0; > > > > exit = 0; > > > > for( i = 0; i < BarCount; i++ ) > > { > > if( priceatbuy == 0 AND Buy[ i ] ) > > { > > priceatbuy = BuyPrice[ i ]; > > } > > > > if( priceatbuy > 0 ) > > { > > highsincebuy = Max( High[ i ], highsincebuy ); > > > > if( exit == 0 AND > > High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) * > > priceatbuy ) > > { > > // first profit target hit - scale-out > > exit = 1; > > Buy[ i ] = sigScaleOut; > > } > > > > if( exit == 1 AND > > High[ i ] >= ( 1 + SecondProfitTarget * 0.01 ) * > > priceatbuy ) > > { > > // second profit target hit - exit > > exit = 2; > > SellPrice[ i ] = Max( Open[ i ], ( 1 + SecondProfitTarget * > > 0.01 ) * priceatbuy ); > > } > > > > if( Low[ i ] <= ( 1 - TrailingStop * 0.01 ) * highsincebuy ) > > { > > // trailing stop hit - exit > > exit = 3; > > SellPrice[ i ] = Min( Open[ i ], ( 1 - TrailingStop * 0.01 ) > > * highsincebuy ); > > } > > > > if( exit >= 2 ) > > { > > Buy[ i ] = 0; > > Sell[ i ] = exit + 1; // mark appropriate exit code > > exit = 0; > > priceatbuy = 0; // reset price > > highsincebuy = 0; > > } > > } > > } > > > > SetPositionSize( 50, spsPercentOfEquity ); > > SetPositionSize( 50, spsPercentOfPositio n * ( Buy == > > sigScaleOut ) ); // scale out 50% of position > >
