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

[amibroker] Rotational Systems



PureBytes Links

Trading Reference Links

Hi gmorlosky,

Here is a starting rotational system you can build on.  It runs.

I didn't take time to notate it but I will be happy to try to answer 
any questions.  fcastner@xxxxxxxxxxxx

//ROTATIONAL Generic
//IO: Fitness: CAR/MDD
//IO: Save Cancelled: Y
//IO: BegISDate: 01/03/2001
//IO: EndISDate: 05/27/2006
//IO: EndOSReal: 05/28/2006
//IO: EndOSReal: 02/06/2009
//OptimizerSetEngine("spso");
//OptimizerSetEngine("trib");
//OptimizerSetEngine("cmae");
EnableRotationalTrading();
a          = Optimize("a",      15,    2,  20,    1);
b          = Optimize("b",      25,   10, 350,    2);
hmb        = Optimize("hmb",     0,    0,  30,    1);

posqty = 1;//Optimize("PosQty", 1, 1, 2, 1);
wrh    = Optimize("wrh",    2, 1, 2,  1);
SetBacktestMode( backtestrotational );
PositionSize = -100/PosQty; //Invest 100% of equity div by max. 
position count.
SetOption("MaxOpenPositions", posqty );
SetOption("AllowPositionShrinking",True);
SetOption("HoldMinBars",hmb);
SetOption("WorstRankHeld", wrh );
SetOption("InitialEquity",100000);
SetOption("MinShares",0);
SetOption("InterestRate",0);
SetOption("commissionmode",2);//1 = % of trade, 2  = $ per trade.
SetOption("Commissionamount",14);
SetTradeDelays(1,1,1,1);

d = EMA(C, a) / EMA(C, b);
g = IIf( d >= 0 ,d ,0); 

PositionScore = g;

SetCustomBacktestProc("");
if(Status("action")==actionPortfolio)
{
bo=GetBacktesterObject();
bo.Backtest();
st = bo.GetPerformanceStats(0);//gets stats for all trades

//chi squared with one degree of freedom, with the Yates correction
wi=st.GetValue("WinnersQty");
Lo=st.GetValue("LosersQty");
Chi = (abs(wi-Lo)-1)^2/(wi+Lo);
bo.AddCustomMetric( "Chi-Squared modif.: >10.83: very 
significant(1000:1), >6.64: significant (100:1) , >3.84: probably 
significant (20:1), <3.84: significance doubtful", Chi ); 

expectancy =
st.GetValue("WinnersAvgProfit")*st.GetValue("WinnersPercent")/100 +
st.GetValue("LosersAvgLoss")  *st.GetValue("LosersPercent")/100;
bo.AddCustomMetric( "Expectancy ($)", expectancy);
AddToComposite(Foreign("~~~EQUITY","C"),
"~~ROT Generic","X",
atcFlagDeleteValues|atcFlagEnableInPortfolio);
bo.AddCustomMetric( "Add Name","" );
bo.AddCustomMetric( "Add WL Number & Description","" );
}
~~~Equity = !Equity;



------------------------------------

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
*********************

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html

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