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

Re: [amibroker] Auto-optimization AFL uploaded



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/