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

[amibroker] Re: Help on Debugging this If-Else Loop



PureBytes Links

Trading Reference Links

Thanks Graham. I think this does the trick. Much appreciated.

If you have a chance, can you spot the logic flaw as to why my mod to
Prashanth's code in this same thread does not work? That one does not
use loops and looks much simpler. But if there is a reason why it
can't work in that format, I'll just stick with the more complex
looping and develop that.


--- In amibroker@xxxxxxxxxxxxxxx, Graham <kavemanperth@xxx> wrote:
>
> Here is an approach from your code with some changes to make it follow
> logic to me, and ensure variables are correctly initiated
> 
> SetTradeDelays( 1, 1, 1, 1 );
> 
> Sell = Cover = 0;
> BuyPrice = SellPrice = ShortPrice = CoverPrice = O;
> 
> myMA1 = MA(C,10);
> MyMA2 = MA(C,100);
> 
> Buy =  (myMA1 > MyMA2);
> Short = (myMA1 < MyMA2);
> 
> inBuy = inShort = 0;
> ValueAtBuy = ValueAtShort = Null;
> 
> 
> for( i = 0; i < BarCount; i++ )
> {
>  if(myMA1[i]<MyMA2[i] AND inBuy AND C[i]>(ValueAtBuy + 0.0010) )
>  {
>   Sell[i] = 1;
>   inBuy= 0;
>   ValueAtBuy = Null;
>  }
>  if(myMA1[i]>MyMA2[i]  AND inShort AND C[i]<(ValueAtShort - 0.0010) )
>  {
>   Cover[i] = 1;
>   inShort = 0;
>   ValueAtShort = Null;
>  }
> 
>  if(inBuy) Buy[i] = 0;
>  if(inShort) Short[i] = 0;
> 
>  if( inBuy==0 AND Buy[i] )
>  {
>   inBuy= 1;
>   ValueAtBuy = C[i];
>  }
>  if( inShort==0 AND Short[i] )
>  {
>   inShort = 1;
>   ValueAtShort = C[i];
>  }
> }
> 
> 
> -- 
> Cheers
> Graham Kav
> AFL Writing Service
> http://www.aflwriting.com
> 
> 2008/7/11 Prashanth <prash454.ta@xxx>:
> > I am not sure you require loops to do what you are looking for.
> >
> >
> > SlowMA = MA(C,20);
> >
> > FastMA = MA(C,5);
> >
> > Buy
> >
> > = FastMA > SlowMA ;
> >
> > Sell
> >
> > = Cross(SlowMA , FastMA) OR SellPrice > (BuyPrice + 10);
> >
> > Short
> >
> > = FastMA < SlowMA;
> >
> > Cover
> >
> > = Cross(FastMA, SlowMA) OR CoverPrice < (ShortPrice - 10);
> >
> > Instead of AND, I have used OR since both Crossover and Price
being above 10
> > pips cannot happen simultaneously.
> >
> > Cheers
> >
> > Prashanth
> >
> >
> >
> > ----- Original Message -----
> > From: ozzyapeman
> > To: amibroker@xxxxxxxxxxxxxxx
> > Sent: Friday, July 11, 2008 3:09 AM
> > Subject: [amibroker] Re: Help on Debugging this If-Else Loop
> > Still toying around with this and still can't get it to work. I
just can't
> > seem to figure out how to specify the current price.  Thought that the
> > ValueWhen function might be able to help.
> >
> > All I'm trying to achieve is this very simple test system, for Forex
> > Intraday:
> >
> > 1.   Buy Long position when the fast MA is above the slow MA
> > 2.   Sell the Long position when the fast MA falls below the slow
MA, AND
> > the current price is at least 10 pips higher than the original
entry price.
> >
> > 3.   Enter Short position when fast MA is below the slow MA
> > 4.   Sell the Short position when the fast MA rises above the slow
MA, AND
> > the current price is at least 10 pips lower than the original
entry price.
> > Code below.  Anyone?
> >
> >
> >
> > Buy =  (myMA1 > MyMA2);
> > Short = (myMA1 < MyMA2);
> >
> > PriceAtBuy = 0;
> > PriceAtShort = 0;
> >
> > for( i = 0; i < BarCount; i++ )
> > {
> >      if( PriceAtBuy == 0 AND Buy[ i ] )
> >      {
> >        PriceAtBuy = Buy[ i ];
> >        ValueAtBuy = ValueWhen(Buy[i]>0,C,1);
> >      }
> >
> >      if( PriceAtShort == 0 AND Short[ i ] )
> >      {
> >      PriceAtShort = ShortPrice[ i ];
> >      ValueAtShort = ValueWhen(Short[i]>0,C,1);
> >      }
> >
> >
> >      if(
> >          (myMA1[i] < MyMA2[i]) AND (PriceAtBuy > 0) AND (C[i] >
> > (ValueAtBuy[i] + 0.0010))
> >        )
> >      {
> >        Sell[ i ] = 1;
> >        PriceAtBuy = 0;
> >
> >      }
> >      else
> >        Sell[ i ] = 0;
> >
> >      if(
> >          (myMA1[i] > MyMA2[i])  AND (PriceAtShort > 0) AND (C[i] <
> > (ValueAtShort[i] - 0.0010))
> >        )
> >     {
> >        Cover[ i ] = 1;
> >        PriceAtShort = 0;
> >      }
> >      else
> >        Cover[ i ] = 0;
> >
> >
> > }
> >
>



------------------------------------

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 NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/