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

Re[6]: [amibroker] Re: Events in AB/AFL - use of www.Amibroker.com/feedback


  • To: Dennis Brown <amibroker@xxxxxxxxxxxxxxx>
  • Subject: Re[6]: [amibroker] Re: Events in AB/AFL - use of www.Amibroker.com/feedback
  • From: Herman <psytek@xxxxxxxx>
  • Date: Tue, 10 Mar 2009 04:25:54 -0400

PureBytes Links

Trading Reference Links

Title: Re[6]: [amibroker] Re: Events in AB/AFL - use of www.Amibroker.com/feedback

forgot... at one time i was wondering if it would be possible to generate an artificial quote. RT data trigger afl executions, so perhaps if you check out the DLL data examples there may be a way to simulate new RT data... 


herman



Monday, March 9, 2009, 11:56:58 PM, you wrote:


>

Herman,


Your solution is clever, but does not apply to me.  I already have realtime event handling in my general includes for my chart -- and I really only have one realtime chart that I use, so that is not my problem.


However, your other statement is interesting:


"You could also write a DLL to deal with non-price events. You could probably force a refresh by simulating some event that refreshes afl."


I would be happy to create a condition that forces an immediate refresh of my chart after it exits.  What kinds of events could I make happen just before I exit my chart AFL that would force an immediate refresh?


I have experimented and notice that my DLL which pokes the Reset all button and that does cause a refresh of the chart, so one down.  Clicking on the chart via DLL might cause a refresh (or other side effects), or maybe not since it is still in the AFL when the click happens.  Is there some foolproof way to do this that you have discovered?


To give you the idea, here is the comments from my sequencer to change parameter sets when selecting a new timeframe or named set in Flexible Parameters.


// make a sequence to close all menus, switch sets, then restore menus again and the timeframe setting in prefs

// Pass 1: New set or symbol detected, Close all menus (Internal variables switched, but not the Params window ones)

// Pass 1.5: DLL clicks the Reset all button

// if we have a pending reset at this point, the params window must not be open, so skip all the rest

// Pass 2: Close all menus and recompile(clear) the Params window params

// Pass 3: Hold all menus closed in case the UI did not get the Reset all yet

// Pass 3.5: DLL clicks the Reset all button

// Pass 4: Recompile the Params window params to sync Params window to new internal params

//

// Since this can be slow, we also speed up the processing by reducing the number of bars processed in loops


And while I am discussing this sequence, it sure would be nice to have a status that says the current AFL pass is compiling the parameters.  Then I could close the loop and make sure my request to reset all parameters was indeed done on the next pass.  I am always worried that there is some condition that will cause it to not happen.  Right now, I am giving it two passes just to make sure, since it sometimes failed with just one pass.  Another slow down.


BR,

Dennis





On Mar 9, 2009, at 4:35 PM, Herman wrote:



You could use the common include (put it in all your formulas) i mentioned in the other email. It would execute the second you exit a formula, and execute whatever you need before entering the next formula, without respect for which pane or window was completed or which is on the queue to execute next. 


herman


Monday, March 9, 2009, 4:20:32 PM, you wrote:


>

Herman,


What I said is that I have to exit AFL between passes.  That is to let operations take place that will not run while I am inside the AFL loop.  For instance, recompiling the Parameters window (after poking the Reset all button with my DLL) takes a whole new AFL pass from the start.  Poking a Preference and applying it with AutoIt can not take effect while inside the AFL loop.  Some things happen at a higher level than AFL and I have to exit AFL and get back in to let them take place.


If you know another way to do this, I am all ears.


BR,

Dennis



On Mar 9, 2009, at 3:41 PM, Herman wrote:



Dennis, for code that needs to re-execute before the next second refresh you can use a while loop. For example, i use the following in some of my code: 


Repeat = 0;

While( Repeat )

{

most of my code in here, if it requires re-execution it sets Repeat to True. It will re-execute at max afl execution rates until my code sets Repeat to False.

}


This works well however you want to put limits on the number of repeats, or break out on the next second refresh, to prevent it from staying in the loop to long.


herman


Monday, March 9, 2009, 12:19:17 PM, you wrote:


> Gordon,


> AFL is event driven.  Some event causes your AFL program to execute.   

> You can check to see which event caused it to run and run all or a  

> portion of your program depending on the event.


> Check back on your suggestion again for an example of bar closed.


> You can suggest a new event type that is not already covered if you  

> need one.  However, because the AFL engine is shared between all  

> charts, a particular chart's AFL will have to wait until a currently  

> executing chart is done before the next one can be executed.  So the  

> AFL engine looks for the next chart that has an event only when it is  

> idle.


> One event that has been suggested before, that would be useful to me  

> as well, is an AFL self programmed event.  This would be some AFL  

> statement that would cause the currently running chart to be put into  

> the queue to be run again as soon as possible --subject to some CPU  

> loading constraints, or after a specified delay less than a second.   

> Currently, if no quotes are coming in, one second is the fastest  

> guaranteed repeat AFL execution.  I have some sequences related to  

> changing parameters that require 4 passes of the AFL to trigger  

> certain conditions that have to happen between AFL passes.  I shut  

> down all but the essential AFL during these sequential passes, but  

> time drags on when you have to wait for one second each pass.


> Best regards,

> Dennis


> On Mar 9, 2009, at 11:50 AM, Gordon wrote:


>> Hi sidhartha70,


>> Thanks for your thoughts. I actually did try something like that,  

>> but seemed to find some sensitive timing issues. My objective was,  

>> as soon as I detected a new bar (this was using one minute bars), to  

>> access information about the just completed bar. At least in my  

>> experience, it was necessary to introduce a delay so that the  

>> Ref(XYZ, -1) function returned information about the bar I was  

>> interested in and not the one before it. In the end, I just felt  

>> uncomfortable that I had an approach I could rely on as being rock  

>> solid.


>> I think I'll revisit it, but in the end, would love to be able to  

>> rely on a built-in function. Assuming I'm successful in revisting a  

>> one-off solution, I'll post the results (code).


>> The exploration start/stop is a little tougher. One way to do it is  

>> to invoke AA through _vbscript_, and do your own pre- and post-  

>> processing. Another might be to create ficticious symbols guaranteed  

>> to be the first and last symbols visited by the exploration code and  

>> use the name() function to test for them.


>> Regards,


>> Gordon


>> --- In amibroker@xxxxxxxxxxxxxxx, "sidhartha70" <sidhartha70@xxx>  

>> wrote:


>>> Gordon,


>>> I'm pretty sure you can code for this type of stuff already in AFL.  

>>> You can simply set up your on checks to see if an event has  

>>> occurred, and if it has, execute any code you want...


>>> For example, OnBar() that you are talking about could be achieved  

>>> by looking for a change in DateTime() of the most recent bar...


>>> --- In amibroker@xxxxxxxxxxxxxxx, "Gordon" <gordon@> wrote:


>>>> Hi All,


>>>> I just posted a new suggestion at www.Amibroker.com/feedback. It  

>>>> occurred to me that most AB users don't know about or use the  

>>>> feedback area. So, I wanted to take a second to highlight the  

>>>> value of using the site to add suggestions and provide feedback  

>>>> for existing ones. If you haven't gone there (you need to be a  

>>>> registered AB user), there are tons of neat suggestions.


>>>> My second reason for posting is, I'm curious to know how many  

>>>> would find the addition event-based AFL coding useful -- e.g.  

>>>> functions you write that would be executed automatically upon the  

>>>> occurrence of specific events, such as the current bar jused  

>>>> completed (geared toward tick and other intra-day charts),  

>>>> backtester started, exploration finished, etc.


>>>> Regards,


>>>> Gordon







>> ------------------------------------


>> **** 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







> ------------------------------------


> **** 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


> <*> 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/

















__._,_.___


**** 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/





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___