PureBytes Links
Trading Reference Links
|
Diego -
I saw this the other day and it is the type of broader topic that I want to cover on AmibrokerU.com soon with a demo app. I'll call it a "Score Mask" coding pattern. I'll briefly explain the approach now, though, and hope that it gets you pointed in a useful direction.
PROBLEM - In a rotational trading system, define periods where tickers in the filter are available to be held in the portfolio. This has several appplications -
- Only trading tickers that trade above a certain price.
- Only trading tickers that have a volume MA or a money flow above a certain threshold.
- Only trading tickers that appear on a recommended list (ValueLine, IBD100, etc.)
In coding this, I'd suggest thinking of it in steps. The steps could be done in a different order, but it is probably easier to see this way -
- You have a watchlist that will build up over time, or you can just run against all stocks if processing time is not important. For each stock, calculate a proprietary position score for all days.
- Create a function that does the following. Initialize the return date mask to 0. Read a text file, called RECOMMENDED_FILE, where each line contains a mask for dates that the current ticker was "recommended". Say the ratings are released on Mondays. Then, for example, a line might be - "AAPL,7/13/09,7/31/09" - representing starting on Monday, and ending on a Friday. Set the mask to 1 for that date range. Do the same for other lines that match the current ticker. Return the resulting mask called DATE_ MASK.
- Modify the position score array to contain the score for days that the DATE_ MASK is 1 and 0 for days that the mask is 0. Call this the DATE_ MASKED_ SCORE.
- Create a array that contains 1 on days that you want to rotate and 0 otherwise. For example, Monday. Call this the TRADING_ MASK. If the recommended list comes out on Monday, then this would be the day.
- Set the final position score to the DATE_MASKED_SCORE when the TRADING_MASK is 1. and to ScoreNoRotate (a keyword) for days when the TRADING_MASK is 0.
Depending on the size of the recommended list, number of tickers over the backtest, size of recommended list, etc., there are optimizations that can be done to reduce run time. Also, if the test file that is used to set the DATE_MASK is in chrono order and recommendations are repeated each week, you can obviate the need for the end date on each line. But, the above steps will get the basic idea going.
Hope this helps.
-- BruceR
--- In amibroker@xxxxxxxxxxxxxxx, Diego Zviovich <zviovich@xxx> wrote: > > Dear all, > > I'm migrating from Wealth-Lab to Amibroker to take advantage of > Amibroker's functionality and brokerage house independence. As with > any new language, it tak > es a while to get through the learning curve. > Please, would someone be kind to point me to any existing document or > example that would tackle the following type of trading system as > explained below? > The subset of issues in which the rotational system operates is > reviewed on a weekly basis, based on an unknown propietary rating > system (Think of Valueline T1, MSN 100, IBD, etc) . Some symbols are > dropped from the list, some new symbols are added to the list. If the > symbol is dropped from the list the position is closed, it will be > replaced by a new issue from the updated list for which a position is > not already open. The rest of the system operates the same way as the > standard rotational system operates, based on some position scoring > condition. > Thanks. >
__._,_.___
**** 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/
__,_._,___
|