PureBytes Links
Trading Reference Links
|
Hi Dave,
It works!!!! Making my MFI period, p1, a constant, eliminated the
error...thanks
Then, since sum() appears to take an array for its period, I was able to get
this updated, dynamic-or-not function to run:
function BuySellPcntBMFI(dynamic, p1, p2) { // p1 = MFI period, p2 = high
crossover threshhold
price = Close;
BA = 20; //Bband MA
BD = 2;//Bband Stdev
BL = ML = 20;// lower crossover threshhold
MP = p1;// MFI period
if(dynamic) {
MoneyFlow = V * Avg;
Change = Avg - Ref( Avg, -1 );
PositiveFlow=Sum( IIf( Change > 0, MoneyFlow, 0 ) ,p1 );
NegativeFlow=Sum( IIf( Change < 0, MoneyFlow, 0 ) ,p1 );
MoneyRatio=PositiveFlow/NegativeFlow;
MFIndex=100-(100/(1+MoneyRatio));
} else {
MFIndex=MFI(MP);
}
MH = BH = p2;// higher crossover threshhold
b= ((price - BBandBot( price, BA, BD )) / (BBandTop( price, BA, BD ) -
BBandBot(price, BA, BD ))) * 100;
Buy = Cover = b > BH AND MFIndex > MH;
Sell = Short = b < BL AND MFIndex < ML;
}
thanks again
-john
BTW, when I use 1990-to-current EOD data for MSN's $COMPX or Yahoo's ^IXIC
(both supposedly the NASDAQ composite) as my 'current stock', i get a single
result row for Backtest and NO rows, just headers, for Explore. Individual
stocks do yield multiple rows.
----- Original Message -----
From: Dave Merrill
To: amibroker@xxxxxxxxxxxxxxx
Sent: Tuesday, October 28, 2003 12:09 PM
Subject: RE: [amibroker] Auto-optimization AFL uploaded
hi john, I don't have time right now to mess in detail w this, but try
temporarily replacing p2 with a fixed number and see if the error goes away.
it won't give you correct results, but might verify my suspicion, which is
that AB's BBand functions can't take arrays for their period. if that's the
case, you'd need to code a replacement in AFL that can, or if we're lucky,
maybe those functions are part of indicators.dll.
I hope that some day soon, we'll get versions of all built in AB indicators
that are array-capable. many of them already are, and it would be great if
life was that kind of symetrical, not to mention useful.
dave
I think i have a 'dynamic=false' situation like your BuySellStoch. (I am
using p1 as the number of periods for MFI() and assume that this
"mfi(periods=14)" syntax in Help means that MFI can take only a single-value
parameter. And p2 is a single-value crossover threshold for Bollinger's %b.)
FWIW, here is my rule code producing the error:
function BuySellPcntBMFI(dynamic, p1, p2) { // p1 = MFI period, p2 = high
crossover threshhold
price = Close;
BA = 20; //Bband MA
BD = 2;//Bband Stdev
BL = ML = 20;// lower crossover threshhold
MP = p1;// MFI period
MH = BH = p2;// higher crossover threshhold
//b is Bollinger's %b
b = ((price - BBandBot( price, BA, BD )) / (BBandTop( price, BA, BD ) -
BBandBot(price, BA, BD ))) * 100;
Buy = Cover = b > BH AND MFI(MP) > MH;
Sell = Short = b < BL AND MFI(MP) < ML;
}
TIA,
-john
----- Original Message -----
From: Dave Merrill
To: amibroker@xxxxxxxxxxxxxxx
Sent: Tuesday, October 28, 2003 8:03 AM
Subject: RE: [amibroker] Auto-optimization AFL
thanks for the compliments, glad it's kind of sane in there (:-).
just FYI, there's a new version of this that I haven't posted yet. among
other changes, it handles up to 3 optimization parameters, and allows each
rule to set the optimization parameter ranges independently. it also moves
the docs into a separate file, so the code file is smaller and easier to
deal with. I'll get that up as soon as I can finish it off.
no, you don't have to set dynamic yourself, and shouldn't. did you read the
comments about it? I bet it's not dynamic itself that your rule is getting
hung up on, it's the optimization parameters being arrays when dynamic is
true.
here's the section about this from the newer version, expanded a bit from
the original; not sure if the example BuySell rules it mentions are exactly
the same:
--------------
during optimization, the active rule is called multiple times, once with
each combination of p1, p2 and p3 being tested. at this time, p1, p2 and p3
are simple numeric values, not arrays. once optimal settings have been
determined for every bar, the rule is called once more, to generate actual
trading signals. this time, p1, p2 and p3 are arrays, each bar dynamically
containing the optimal p1, p2 and p3 value for that bar.
whether they're simple values or arrays matters because not all AB functions
can accept arrays as inputs. for example, MA, TEMA, DEMA, WMA and AMA can
use an array as their period, but EMA and MACD can't. it's usually possible
to code an equivalent in AFL that can, like the included EMAx function is a
replacement for EMA. an AFL replacement may be significantly slower though,
if it has to do a lot of work, since rules are called many times during
optimization. you could also use a DLL, like indicators.dll from the 3rd
party section of the AB site, but I didn't want this code to depend on
outside tools.
if this is an issue for a particular rule, include both slower array-capable
code for use in the final signal-generation phase, and faster,
non-array-capable code for use during the many optimization tries. use the
'dynamic' parameter to know which to call; see BuySellStoch, below, for an
example. you can also write a custom function with both versions, and pass
dynamic into it; see BuySellCCI and CCIx for an example.
--------------
hth,
dave
Hi Dave,
I started working with it...very nice, structured, work...this will help
folks learn AFL as well as general programming design, I believe..
so far, i am having a bit of trouble with the 'dynamic' True/False parameter
being fed to one of my indicators---but i suspect this is my problem not
yours:
BuySellRule(True, best_p1, best_p2);
-----------------------------------^
Bad args.
0-th argument of function call has invalid (or unsupported) type
I don't have to specifically set 'dynamic'; do I?
thanks
-john
----- Original Message -----
From: Dave Merrill
To: amibroker@xxxxxxxxxxxxxxx
Sent: Thursday, October 23, 2003 6:32 PM
Subject: RE: [amibroker] Auto-optimization AFL uploaded
thanks, appreciate it (:-).
so, did you figure out how we can all be millionaires by morning with it
yet? or at least learn something about something?
you probably noticed this, but the way it comes set up, it's not using
equity feedback to optimize with, but net bars on the right side of the
market. my initial impression after I built that was that it worked better
than equity, but since then, I've concluded that, guess what, it depends. so
anyway, try the other scoring algorithm too, if you haven't already.
keep me posted (:-).
anyone else playing with this thing?
dave
I've downloaded it and run it about a dozen times. What you've done is very
impressive.
Thanks,
Howard
-----Original Message-----
From: Dave Merrill [mailto:dmerrill@xxxxxxx]
Sent: Wednesday, October 22, 2003 1:11 PM
To: amibroker@xxxxxxxxxxxxxxx
Subject: RE: [amibroker] Auto-optimization AFL uploaded
forgot to say it howard, but I'm very interested in what you think about it,
and any results you get from fiddling with it.
dave
Yahoo! Groups Sponsor
ADVERTISEMENT
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at:
http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at:
http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
Yahoo! Groups Sponsor
ADVERTISEMENT
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at:
http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Rent DVDs from home.
Over 14,500 titles. Free Shipping
& No Late Fees. Try Netflix for FREE!
http://us.click.yahoo.com/ybSovB/hP.FAA/3jkFAA/GHeqlB/TM
---------------------------------------------------------------------~->
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
|