hi gariki,

the code is setup for true signals. So a signal that is generated at the code 
of the bar. I use:

buy = the buy definition;
buy = ref(buy,-1); buyprice = Open;

In this case you get a signal at the open of the bar and then the static 
variables ensure the signal is only given once.

How it works? Every time a data point comes in the chart refreshes and the code 
is evaluated. If you want to see signals also when there is a potential signal 
you could do that without static variables. For instance:

buy = the buy definition; 
potentialBuy = Buy;
buy = ref(buy,-1); buyprice = Open;

then you add a constraint:

  else if( (!LastValue(potentialBuy) AND !LastValue(potentialCover) AND 
!LastValue(potentialShort) AND !LastValue(potentialSell)))
  {
    Say("Potential Buy");
  }

  you are right that I did not add reversals. If you want to be warned for 
potential signals en true signals you could solve this as follows:

  regards, Ed


  
/////////////////////////////////////////////////////////////////////////////////////
  Buy = your definition;
  PotentialBuy = Buy;
  Buy = ref(buy,-1); Buyprice = Open;

  Sell = your definition;
  PotentialSell = Sell;
  Sell = Ref(Sell,-1); Sellprice = Open;

  etc for
  Short 

  and 

  Cover

  myBuyVar = Nz(StaticVarGet("buyVar");
  mySellVar = Nz(StaticVarGet("sellVar");
  myShortVar = Nz(StaticVarGet("shortVar");
  myCoverVar = Nz(StaticVarGet("coverVar");
  myReverseToLongVar = Nz(StaticVarGet("reverseToLongVar");
  myReverseToShortVar = Nz(StaticVarGet("reverseToShortVar");

  if (myBuyVar == 0 AND (LastValue(Buy) AND !LastValue(Cover) AND 
!LastValue(Short) AND !LastValue(Sell)) )
  {
   StaticVarSet( "buyVar",1);
   StaticVarSet( "sellVar",0);
   StaticVarSet( "shortVar",0);
   StaticVarSet( "coverVar",0);
   StaticVarSet( "reverseToLongVar",0);
   StaticVarSet( "reverseToShortVar",0); 
   Say( "True Buy Signal" );
  }
  else if (mySellVar == 0 AND (!LastValue(Buy) AND !LastValue(Cover) AND 
!LastValue(Short) AND LastValue(Sell)) )
  {
   StaticVarSet( "buyVar",0);
   StaticVarSet( "sellVar",1);
   StaticVarSet( "shortVar",0);
   StaticVarSet( "coverVar",0);
   StaticVarSet( "reverseToLongVar",0);
   StaticVarSet( "reverseToShortVar",0);  
   Say( "True Sell Signal" );
  }
  else if (myShortVar == 0 AND (!LastValue(Buy) AND !LastValue(Cover) AND 
LastValue(Short) AND !LastValue(Sell)) )
  {
   StaticVarSet( "buyVar",0);
   StaticVarSet( "sellVar",0);
   StaticVarSet( "shortVar",1);
   StaticVarSet( "coverVar",0);
   StaticVarSet( "reverseToLongVar",0);
   StaticVarSet( "reverseToShortVar",0);  
   Say( "True Short Signal" );
  }
  else if (myCoverVar == 0 AND (!LastValue(Buy) AND LastValue(Cover) AND 
!LastValue(Short) AND !LastValue(Sell)) )
  {
   StaticVarSet( "buyVar",0);
   StaticVarSet( "sellVar",0);
   StaticVarSet( "shortVar",0);
   StaticVarSet( "coverVar",1);
   StaticVarSet( "reverseToLongVar",0);
   StaticVarSet( "reverseToShortVar",0);  
   Say( "True Cover Signal" );
  }
  else if (myReverseToLongVar == 0 AND (LastValue(Buy) AND LastValue(Cover) AND 
!LastValue(Short) AND !LastValue(Sell)) )
  {
   StaticVarSet( "buyVar",0);
   StaticVarSet( "sellVar",0);
   StaticVarSet( "shortVar",0);
   StaticVarSet( "coverVar",0);
   StaticVarSet( "reverseToLongVar",1);
   StaticVarSet( "reverseToShortVar",0);  
   Say( "True Reverse To Long Signal" );
  }
  else if (myReverseToShortVar == 0 AND (!LastValue(Buy) AND !LastValue(Cover) 
AND LastValue(Short) AND LastValue(Sell)) )
  {
   StaticVarSet( "buyVar",0);
   StaticVarSet( "sellVar",0);
   StaticVarSet( "shortVar",0);
   StaticVarSet( "coverVar",0);
   StaticVarSet( "reverseToLongVar",0);
   StaticVarSet( "reverseToShortVar",1);  
   Say( "True Reverse To Short Signal" );
  }
  else if (LastValue(PotentialBuy) AND !LastValue(PotentialCover) AND 
!LastValue(PotentialShort) AND !LastValue(PotentialSell))
  {
   Say( "Potential Buy Signal" );
  }
  else if (!LastValue(PotentialBuy) AND !LastValue(PotentialCover) AND 
!LastValue(PotentialShort) AND LastValue(PotentialSell))
  {
   Say( "Potential Sell Signal" );
  }
  else if (!LastValue(PotentialBuy) AND !LastValue(PotentialCover) AND 
LastValue(PotentialShort) AND !LastValue(PotentialSell))
  {
   Say( "Potential Short Signal" );
  }
  else if (!LastValue(PotentialBuy) AND LastValue(PotentialCover) AND 
!LastValue(PotentialShort) AND !LastValue(PotentialSell))
  {
   Say( "Potential Cover Signal" );
  }
  else if (LastValue(PotentialBuy) AND LastValue(PotentialCover) AND 
!LastValue(PotentialShort) AND !LastValue(PotentialSell))
  {
   Say( "Potential Reverse To Long Signal" );
  }
  else if (!LastValue(PotentialBuy) AND !LastValue(PotentialCover) AND 
LastValue(PotentialShort) AND LastValue(PotentialSell))
  {
   Say( "Potential Reverse To Short Signal" );
  }






From: gariki 
Sent: Thursday, July 22, 2010 6:30 PM
To: [email protected] 
Subject: [amibroker] Re: sick of watching the screen..


  
Thanks for the sniplet Ed. After adding just one closing brace to the first 
four lines its working for me.. but have a couple of questions and some 
validations just so i understand how its working.



  a.. Chart redraws every so many seconds (10secs default) and evaluates all 
the rules in the afl. Or does it happen more often; because i see my incoming 
ticks changing the bars more often? so evertime a new tick come in is the chart 
and indicators redrawn?
I am still testing but i have added the following lines at the end of your code 
to cover for situations where a signal intermittently comes and goes away 
within a 5min bar; to get the recurrent says i am resetting it every chart 
refresh.. 


  else if( (!LastValue(Buy) AND !LastValue(Cover) AND !LastValue(Short) AND 
!LastValue(Sell)))
  {
   StaticVarSet( "buyVarStoRSI",0);
   StaticVarSet( "sellVarStoRSI",0);
   StaticVarSet( "shortVarStoRSI",0);
   StaticVarSet( "coverVarStoRSI",0);
  //Say("reset done");
  }


How it is working?

  a.. First time around none of the myBuyVar, mySellVar etc are initialized; so 
StaticVarGet returns zero. And say for the first time my buy rules are 
triggered, it goes into the if statement block and sets buyVar to 1 and 
essentially resets all others to zero (useful from the second execution 
onwards). 
  a.. Now that buyVar is set to 1, next chart refresh gives myBuyVar a value of 
1 and this prevents from Say( "Buy" ) executing again and again; until it is 
reset by some other if statement block.
  a.. If my system covers and goes long at the same time, then i better get 
both signals and i should remove the three extra ANDs in this statement..
  (LastValue(Buy) AND !LastValue(Cover) AND !LastValue(Short) AND 
!LastValue(Sell))


PS: AB support actually suggested using LastValue(Buy) within AlertIf statement 
just directly; i would think if the chart refreshes every 10secs or so and i 
use LastValue(buy) within the alertif statement it should work if it is reading 
the signal from the last bar but somehow it is not; do you think you know why 
that one doesnt work?


thanks a bunch again!
-gariki

--- In [email protected], "Edward Pottasch" <empotta...@...> wrote:
>
> found a mistake already. This shoudl work I think.
> 
> Ed
> 
> myBuyVar = Nz(StaticVarGet("buyVar");
> mySellVar = Nz(StaticVarGet("sellVar");
> myShortVar = Nz(StaticVarGet("shortVar");
> myCoverVar = Nz(StaticVarGet("coverVar");
> 
> if (myBuyVar == 0 AND (LastValue(Buy) AND !LastValue(Cover) AND 
> !LastValue(Short) AND !LastValue(Sell)) )
> {
> StaticVarSet( "buyVar",1);
> StaticVarSet( "sellVar",0);
> StaticVarSet( "shortVar",0);
> StaticVarSet( "coverVar",0);
> Say( "Buy" );
> }
> else if (mySellVar == 0 AND (!LastValue(Buy) AND !LastValue(Cover) AND 
> !LastValue(Short) AND LastValue(Sell)) )
> {
> StaticVarSet( "buyVar",0);
> StaticVarSet( "sellVar",1);
> StaticVarSet( "shortVar",0);
> StaticVarSet( "coverVar",0);
> Say( "Sell" );
> }
> else if (myShortVar == 0 AND (!LastValue(Buy) AND !LastValue(Cover) AND 
> LastValue(Short) AND !LastValue(Sell)) )
> {
> StaticVarSet( "buyVar",0);
> StaticVarSet( "sellVar",0);
> StaticVarSet( "shortVar",1);
> StaticVarSet( "coverVar",0);
> Say( "Short" );
> }
> else if (myCoverVar == 0 AND (!LastValue(Buy) AND LastValue(Cover) AND 
> !LastValue(Short) AND !LastValue(Sell)) )
> {
> StaticVarSet( "buyVar",0);
> StaticVarSet( "sellVar",0);
> StaticVarSet( "shortVar",0);
> StaticVarSet( "coverVar",1);
> Say( "Cover" );
> }
> 
> 
> 
> 
> From: gariki 
> Sent: Wednesday, July 21, 2010 2:27 AM
> To: [email protected] 
> Subject: [amibroker] Re: sick of watching the screen..
> 
> 
> 
> 
> Thanks all for the replies.. it would save me a lot of time if i can figure 
> this out..
> 
> 
> TJ: i will defnitely send a mail to support; i have actually sent it once 
> (Ticket number: 72641) and from the response i got i thought that the way i 
> am using it i cannot do any better.
> "Actually - AlertIf is mostly planned for use in the AUTOMATIC ANALYSIS 
> window - you can run SCAN with "run every" feature enabled. That way will 
> make it independent from chart focus, scrolling etc."
> 
> 
> Herman: i am surprised that you think this is not an issue because i thought 
> when you posted this thread, you are running into exactly the same problem as 
> i have; maybe not.. hmm..
> http://finance.groups.yahoo.com/group/amibroker/message/148221
> 
> 
> 
> 
> Anyways; here is almost exactly what i have for most of my systems (ofcourse 
> rules are simplified); and the way i am using them now is i plot the graphs 
> and that shows the buy/sell arrows; all i wish is when it is creating these 
> arrows, it also shouts out loud so that i dont have to sit at the screen but 
> do something more useful like.. reading a book or yoga :) and dont care until 
> i hear out a loud sound about my entry.. the problem i run into is it only 
> works intermittently (when the cursor is on the bar before which the signal 
> is coming); somtimes the alerts sound; sometimes they dont.. 
> 
> 
> 
> 
> //Testing alerts
> 
> 
> BuySignal = Cross(EMA(C,10),EMA(C,20));
> SellSignal = BarsSince(BuySignal) == 10;
> ShortSignal = Cross(EMA(C,20),EMA(C,10));
> CoverSignal = BarsSince(ShortSignal) == 10;
> 
> 
> Buy = ExRem(BuySignal,SellSignal);
> Sell = ExRem(SellSignal, BuySignal);
> Short = ExRem(ShortSignal, CoverSignal);
> Cover = ExRem(CoverSignal, ShortSignal);
> 
> 
> shape = Buy * shapeUpArrow + Sell * shapeDownArrow;
> Plot(Close, "Price", colorBlack, styleCandle);
> PlotShapes( shape, IIf( Buy, colorGreen, colorRed), 0, IIf(Buy, Low, High) );
> PlotShapes( Short*shapeHollowDownArrow + Cover*shapeHollowUpArrow, IIf(Short, 
> colorRed, colorGreen));
> GraphXSpace = 5;
> 
> 
> 
> 
> AlertIf( Buy, "SOUND C:\\Program Files\\Amibroker\\BuyBuyBuy.wav", "Audio 
> alert ");
> AlertIf( Sell, "SOUND C:\\Program Files\\Amibroker\\SellSellSell.wav", "Audio 
> alert");
> AlertIf( Short, "SOUND C:\\Program Files\\Amibroker\\SellSellSell.wav", 
> "Audio alert");
> AlertIf( Cover, "SOUND C:\\Program Files\\Amibroker\\BuyBuyBuy.wav", "Audio 
> alert ");
> 
> 
> RoundLotSize = 1;
> PositionSize = MarginDeposit = 1;
> 
> 
> 
> 
> 
> 
> Any help is appreciated; currently if i place this above code onto a graph 
> pane and set the time frame to 1min; i can easily get signals and i have 
> verified that the alerts are not going ON when the signal is generated. 
> 
> 
> 
> 
> thanks!
> -gariki
> 
> 
> 
> 
> --- In [email protected], "Bruce" brucer@ wrote:
> >
> > FWIW, I ran into some issues with AlertIf long ago and just coded around 
> > them. My primary use was in Explorations, so I just coded my own lookback 
> > since the build-in lookback parameter seemed problematic in my testing. I 
> > encourage you to pursue sending the info to support, because I think that 
> > there may be some idiosyncrasies of AlertIf that have not been fully 
> > explained.
> > 
> > --- In [email protected], Tomasz Janeczko groups@ wrote:
> > >
> > > Hello,
> > > 
> > > AlertIf does NOT require clicking to activate. You have got something 
> > > wrong with your formula.
> > > Send the formula to support if you need help.
> > > 
> > > Best regards,
> > > Tomasz Janeczko
> > > amibroker.com
> > > 
> > > On 2010-07-20 16:26, gariki wrote:
> > > > Hello All,
> > > >
> > > > i am currently trading 4 systems on 5min time period and am just 
> > > > getting sick/tired of watching the screen for signals. I have alertif's 
> > > > coded into the systems but because of the problems with that function 
> > > > (it wont activate unless the last bar is clicked etc) it doesnt work.
> > > >
> > > > Ideally i would go auto-trade but i do not want to automate the part of 
> > > > putting trades on. I just want a good reliable mechanism to play sound 
> > > > alerts when i get signals.. is there any other alternative?
> > > >
> > > > TJ, plese consider fixing alertif functionality for this use case; for 
> > > > users that dont want to automate quite this is the next best thing and 
> > > > will be very handy (or maybe there is an alternative; that would solve 
> > > > my problem; would love to hear that..)
> > > >
> > > >
> > > > thanks
> > > > -gariki
> > > >
> > > >
> > > >
> > > > ------------------------------------
> > > >
> > > > **** IMPORTANT PLEASE READ ****
> > > > This group is for the discussion between users only.
> > > > This is *NOT* technical support channel.
> > > >
> > > > TO GET TECHNICAL SUPPORT send an e-mail directly to
> > > > SUPPORT {at} amibroker.com
> > > >
> > > > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> > > > http://www.amibroker.com/feedback/
> > > > (submissions sent via other channels won't be considered)
> > > >
> > > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > > > http://www.amibroker.com/devlog/
> > > >
> > > > Yahoo! Groups Links
> > > >
> > > >
> > > >
> > > >
> > >
> >
>


Reply via email to