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

Re: Re:Problems coding an exit



PureBytes Links

Trading Reference Links

Gary:

So, the first instance of 'EntryPrice' has no effect on the subsequent
redefinition of EntryPrice?  In other words, if the first instance of
EntryPrice defined yesterday's value as 100, the PREV function in the
subsequent redefinition would ignore that value and look for its own PREV?

The solution, therefore, is to combine the modules?



----- Original Message -----
From: <Randall_Gary@xxxxxxxx>
To: <metastock@xxxxxxxxxxxxx>
Sent: October 13, 1999 06:32
Subject: Re:Problems coding an exit

> Glen,
>
> PREV returns the last value of the statement, not the indicator result.  I
> got around that problem with the following code when implementing
> LaBeau's 25x25 System.  I used the same type of indicator as you
> are trying to implement. I don't have time at the moment to rewrite
> your code but see if the following doesn't help.
>
> Gary Randall -- Brunswick, Maine
>
>
> "25x25 LongEntry"
>
> {Note: 1 price point = $1000}
>
> {Returns long trade entry price.                  }
> {A non-zero number if in a long trade.         }
> {A negative value if the last day of a trade.  }
>
> {Note: Modifications to MetaStock indicators   }
> {were req'd to simulate TradeStation results   }
> { RSI: rounded to two decimal places           }
> { ATR: Wilder's smoothing removed              }
>
> {Variables to avoid duplicate function calls   }
> PLLV2 := Ref(LLV(L,2),-1);
> PLLV25 := Ref(LLV(L,25),-1);
>
> { Was yesterday a setup day? }
> IsSetUp :=
>    Cum(1) > 50 AND
>    Ref(PDI(14),-1) > Ref(MDI(14),-1) AND
>    Ref(ADX(14),-1) > 20 AND
>    PREC(Ref(RSI(4),-1)+.005,2) < 50;
>
> {Determine initial entry price condition}
> EntryPriceCond := Ref(C,-1) + 0.5625;
> {Adjust it to enter on open if open is greater}
> EntryPriceCond :=
> If(O > EntryPriceCond, O, EntryPriceCond);
>
> {Return entry price, zero if no trade.    }
> If(PREV <= 0,
>   {Not in a long trade}
>   If(IsSetUp AND H >= EntryPriceCond,
>     {Trade entered today, was it stopped?}
>     If(L <= PLLV25 OR
>        L <= EntryPriceCond - 2.5,
>        -EntryPriceCond, {Yes}
>        EntryPriceCond   {No}
>       ),
>     {Not in trade and not entered today}
>     0
>     ),
>   {Have been in trade for over one day.      }
>   {Was it stopped today?                     }
>   {Note: BarsSince() gives days in trade     }
>     If(L <= PREV - 2.5, - PREV,
>        If(BarsSince(PREV=0) > 24,
>           {More than 24 days in trade}
>           If(L <= PLLV2, -PREV, PREV),
>           {Less than 25 days in trade}
>           If(L <= PLLV25, -PREV,
>              If(Ref(C,-1) - PREV >
>                 5*Ref(Mov(ATR(1),45,S),-1),
>                 If(L <= PLLV2, -PREV, PREV),
>                 PREV
>                )
>             )
>          )
>       )
>   );
>
>
> ____________________Reply Separator____________________
> Subject:    Problems coding an exit
> Author: metastock@xxxxxxxxxxxxx
> Date:       10/12/99 12:30 PM
>
> Could some of you code-jockeys give me a hand with a long exit rule?
>
> The variable "EntryPrice" is assigned the closing price upon entering a
> trade (at the close).  If the trade is exited, EntryPrice is assigned a
> negative value.  If there is no position, it is assigned a zero value.  I
> use this to tell me when a trade has been entered, at what price, and then
> to compute certain entry-price-dependent exit conditions.  If EntryPrice
> has been reassigned a negative value, that is the trigger to exit the
> position.  If EntryPrice has been reassigned a zero value, that is the
> signal to watch for a new long position being entered.
>
> My problem is that the interaction of the PREV functions seems to always
> assign EntryPrice a zero value.  Below is the code.
>
> {DEFINE ENTRY PRICE, OR 0 IF NO TRADE}
> {SEE REDEFINITION BELOW IF TRADE EXITED}
> EntryPrice:= If(PREV <= 0,
>      {TRADE ENTERED TODAY?}
>      If(LongEntryCondition AND LongSetUp, CLOSE, 0),
> PREV);
>
> {DEFINE LONG EXIT RULES IF WE'RE IN A TRADE}
> Exit1:= If(EntryPrice > 0 AND ADXValue < 20,
>      EntryPrice + 2.5*AvgTrueRange, 0);
> Exit2:= If(EntryPrice > 0 AND ADXValue >= 20 AND ADXValue <= 30,
>      EntryPrice + 3.5*AvgTrueRange, 0);
> Exit3:= If(EntryPrice > 0 AND ADXValue > 30,
>      EntryPrice + 0.5*AvgTrueRange, 0);
> Exit4:= If(EntryPrice > 0 AND CLOSE > EntryPrice + 1.5*AvgTrueRange,
>      EntryPrice + LockedInProfit, PREV);
> Exit5:= If(EntryPrice > 0 AND LOW <= EntryPrice - MaxLoss,
>      EntryPrice - MaxLoss, 0);
>
> {REDEFINE ENTRY PRICE IF TRADE EXITED}
> EntryPrice:=
>      If(Exit1>0 AND HIGH>=Exit1, -PREV,
>      If(Exit2>0 AND HIGH>=Exit2, -PREV,
>      If(Exit3>0 AND HIGH>=Exit3, -PREV,
>      If(Exit4>0 AND LOW<=Exit4, -PREV,
>      If(Exit5>0, -PREV,
> PREV)))));
>
> {IF ENTRY PRICE IS NEGATIVE, AN EXIT RULE APPLIES AND TRADE IS EXITED}
> EntryPrice < 0