Hello Richard,
This is what I use to rank mutual
funds.
The authors are highlighted in bold below.
Wrzec
// Multi - Charts
in the FastTrack Total Return Format
// Normalized to
left edge with right axis indicating %return of screen
// Bracketed
values indicate returns from left screen to pole OR
// between Date
markers if in place
// Use
<Cntr>R to set ticker symbols
// left click to
set pole, double left click to set marker
// Colors may be
changed below:
// Modified Frederick Miller (rick300m@xxxxxxxxxxxx) 2/9/04
// Modified K
Close 8/2/02 */
/* support code
from Thomas
Zmuck/Anthony Faragasso */
Cl0=colorLightOrange;
Cl1=colorPink;
Cl2=colorOrange;
Cl3=colorGreen ;
Cl4=colorTurquoise;
Cl5=colorLime;
Cl6=colorBlueGrey;
Cl7=colorYellow;
Cl8=colorBrightGreen;
Cl9=colorRed;
//Set Variables
barvisible = Status("barvisible");
FVB = barvisible AND NOT
Ref( barvisible, -1 );
CVB = ValueWhen( FVB,C) ;
Leftbar=ValueWhen(Ref(barvisible,-1)==0 AND barvisible,DateTime() );
Rightbar=LastValue(DateTime() );
DateSpan = EndValue(BarIndex()) - BeginValue(BarIndex());
Range = DateSpan
;
StartDate = BeginValue(BarIndex());
EndDate = EndValue(BarIndex());
//Select Tickers
Fn0=ParamStr( "Fund0", "$INDU");
Fn1=ParamStr( "Fund1", "DJSEU");
Fn2=ParamStr( "Fund2", "DJW-X");
Fn3=ParamStr( "Fund3", "OTC-C");
Fn4=ParamStr( "Fund4", "RUT-I");
Fn5=ParamStr( "Fund5", "STBI-");
Fn6=ParamStr( "Fund6", "PSE-X");
Fn7=ParamStr( "Fund7", "");
Fn8=ParamStr( "Fund8", "");
Fn9=ParamStr( "Fund9", "");
//Normalized to
left edge
Fa0=Prec(100*(Foreign(Fn0,"C")/ValueWhen(FVB,Foreign(Fn0,"C"))-1),2.2);
Fa1=Prec(100*(Foreign(Fn1,"C")/ValueWhen(FVB,Foreign(Fn1,"C"))-1),2.2);
Fa2=Prec(100*(Foreign(Fn2,"C")/ValueWhen(FVB,Foreign(Fn2,"C"))-1),2.2);
Fa3=Prec(100*(Foreign(Fn3,"C")/ValueWhen(FVB,Foreign(Fn3,"C"))-1),2.2);
Fa4=Prec(100*(Foreign(Fn4,"C")/ValueWhen(FVB,Foreign(Fn4,"C"))-1),2.2);
Fa5=Prec(100*(Foreign(Fn5,"C")/ValueWhen(FVB,Foreign(Fn5,"C"))-1),2.2);
Fa6=Prec(100*(Foreign(Fn6,"C")/ValueWhen(FVB,Foreign(Fn6,"C"))-1),2.2);
Fa7=Prec(100*(Foreign(Fn7,"C")/ValueWhen(FVB,Foreign(Fn7,"C"))-1),2.2);
Fa8=Prec(100*(Foreign(Fn8,"C")/ValueWhen(FVB,Foreign(Fn8,"C"))-1),2.2);
Fa9=Prec(100*(Foreign(Fn9,"C")/ValueWhen(FVB,Foreign(Fn9,"C"))-1),2.2);
//Plot Normalized
Graphs
Plot(Fa0,Fn0,Cl0,4);
Plot(Fa1,Fn1,Cl1,4);
Plot(Fa2,Fn2,Cl2,4);
Plot(Fa3,Fn3,Cl3,4);
Plot(Fa4,Fn4,Cl4,4);
Plot(Fa5,Fn5,Cl5,4);
Plot(Fa6,Fn6,Cl6,4);
Plot(Fa7,Fn7,Cl7,4);
Plot(Fa8,Fn8,Cl8,4);
Plot(Fa9,Fn9,Cl9,4);
Plot(0,"",colorDarkBlue,styleNoLine+styleDots);
//Calculate %
Change between markers
Fv0=IIf(startdate==0,Fa0,100*(EndValue(Foreign(Fn0,"C")-BeginValue(Foreign(Fn0,"C"))))/BeginValue(Foreign(Fn0,"C")));
Fv9=IIf(startdate==0,Fa9,100*(EndValue(Foreign(Fn9,"C")-BeginValue(Foreign(Fn9,"C"))))/BeginValue(Foreign(Fn9,"C")));
Fv8=IIf(startdate==0,Fa8,100*(EndValue(Foreign(Fn8,"C")-BeginValue(Foreign(Fn8,"C"))))/BeginValue(Foreign(Fn8,"C")));
Fv7=IIf(startdate==0,Fa7,100*(EndValue(Foreign(Fn7,"C")-BeginValue(Foreign(Fn7,"C"))))/BeginValue(Foreign(Fn7,"C")));
Fv6=IIf(startdate==0,Fa6,100*(EndValue(Foreign(Fn6,"C")-BeginValue(Foreign(Fn6,"C"))))/BeginValue(Foreign(Fn6,"C")));
Fv5=IIf(startdate==0,Fa5,100*(EndValue(Foreign(Fn5,"C")-BeginValue(Foreign(Fn5,"C"))))/BeginValue(Foreign(Fn5,"C")));
Fv4=IIf(startdate==0,Fa4,100*(EndValue(Foreign(Fn4,"C")-BeginValue(Foreign(Fn4,"C"))))/BeginValue(Foreign(Fn4,"C")));
Fv3=IIf(startdate==0,Fa3,100*(EndValue(Foreign(Fn3,"C")-BeginValue(Foreign(Fn3,"C"))))/BeginValue(Foreign(Fn3,"C")));
Fv2=IIf(startdate==0,Fa2,100*(EndValue(Foreign(Fn2,"C")-BeginValue(Foreign(Fn2,"C"))))/BeginValue(Foreign(Fn2,"C")));
Fv1=IIf(startdate==0,Fa1,100*(EndValue(Foreign(Fn1,"C")-BeginValue(Foreign(Fn1,"C"))))/BeginValue(Foreign(Fn1,"C")));
Title=
// Left Bar Date
WriteIf(startdate==0, WriteVal(leftbar,formatDateTime),WriteVal(BeginValue(DateTime()),formatDateTime))+
//Right Bar Date
WriteIf(EndValue(DateTime() )==rightbar, "
Normalized Return
Chart
"+Date(),
"
"+WriteVal(Range,1)+"
days
"+WriteVal(EndValue(Month()),1.0) +"/" + WriteVal(EndValue(Day()),1.0) + "/20" + StrRight( WriteVal(EndValue(Year()),1.0),2))
//List of Funds
+" \n"+EncodeColor(Cl0)+Fn0+ WriteIf(IsTrue(fa0)," ["+WriteVal(fv0,1.2)+ "]
","") +EncodeColor(Cl1)+Fn1+WriteIf(IsTrue(fa1)," ["+WriteVal(fv1,1.2)+"]
","")+EncodeColor(Cl2)+Fn2 + WriteIf(IsTrue(fa2)," ["+WriteVal(fv2,1.2)+"]
","")+"\n"+EncodeColor(Cl3)+fn3 + WriteIf(IsTrue(fa3)," ["+WriteVal(fv3,1.2)+"] ","")+EncodeColor(Cl4)+Fn4 + WriteIf(IsTrue(fa4)," ["+WriteVal(fv4,1.2)+"] ","")+EncodeColor(Cl5)+Fn5 + WriteIf(IsTrue(fa5)," ["+WriteVal(fv5,1.2)+"] ","")+"\n"+EncodeColor(Cl6)+Fn6 + WriteIf(IsTrue(fa6)," ["+WriteVal(fv6,1.2)+"]
","")+EncodeColor(Cl7)+Fn7 + WriteIf(IsTrue(fa7)," ["+WriteVal(fv7,1.2)+"]
","")+EncodeColor(Cl8)+Fn8 + WriteIf(IsTrue(fa8)," ["+WriteVal(fv8,1.2)+"]
","")+EncodeColor(Cl9)+Fn9 + WriteIf(IsTrue(fa9)," ["+WriteVal(fv9,1.2)+"]
","");
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of Richard
Sent: Wednesday, September 23,
2009 2:55 PM
To: amibroker@xxxxxxxxxxxxxxx
Subject: [amibroker] Re: Basic
Chart overlay
Thanks Reinsley,
I tried his first example (modified) and it seems to work.ie:
Plot(Foreign("HOT","Close"),"HOT",colorRed,styleOwnScale|5);
Plot(Foreign("BEE","Close"),"BEE",colorBlue,styleThick);
Plot(Foreign("^RUT","Close"),"^RUT",1,styleOwnScale|5);
Now I need to figure out a simplified way to change stocks or Indexes by trying
out some of his other options. If others have done this I would like to hear
from you.
Dick H
--- In amibroker@xxxxxxxxxps.com, reinsley
<reinsley@xx.> wrote:
>
>
>
> Hi,
>
> Joris M.schuller gave me a copious answer in February 2009...
>
> Best regards
>
>
>
> both symbols in one pane
>
> //if you have the same database provider for Futures and Stocks all you
> have to do is:
>
> 1. Have all the symbols Of interest in the same database (I Have no
> futures, so demonstrate it with Forex AND stocks}
>
> 2. Make a new indicator.afl for each symbol that you want in a separate
> pane
>
> ///////////////Examples
>
> ///////////////Example1 (both symbols in 1 pane)//////////////////
>
> Create an indicator Example1.afl)
>
> Plot(Foreign("EUR.USD-IDEALPRO-CASH","Close"),"EUR.USD",1,styleOwnScale|5);
>
> Plot(Foreign("DIA","Close"),"DIA",1,styleOwnScale|5);
>
>
>
> ///////////////Example2 (1 symbol each in its own pane)///////////////
>
> Example21.afl
>
> Plot(Foreign("EUR.USD-IDEALPRO-CASH","Close"),"EUR.USD",1,5);
>
> Example22.afl
>
> Plot(Foreign("DIA","Close"),"DIA",1,5);
>
>
>
> ////////////////Example3 (Rel Performance in 1 pane)///////////////////
>
> Ticker1= "EUR.USD-IDEALPRO-CASH";
>
> price1 = Foreign( ticker1, "C");
>
> Ticker2= "DIA";
>
> price2 = Foreign( ticker2, "C");
>
> Plot( price1 ,"\n"+ StrMid( ticker1,4,3)+StrMid(ticker1,0,3),
> colorBlack,styleOwnScale|5);
>
> Plot( price2 ,"\n"+ Ticker2, colorBlue,styleOwnScale|5);
>
>
>
> ///////////////Example4//////////////////////
>
> // A little bit more fluff, but basically the same: Instead pf stepping
> thru each tickerlist in 1 pane,
>
> //one can of course assign each tickerlist to an individual tickerlist.afl
>
> DrawList = ParamList("TickerList1|TickerList2","1|2|3|4");
>
> _N( TickerList1 = ParamStr("EUR",
> "DIA,EUR.CAD-IDEALPRO-CASH,EUR.CHF-IDEALPRO-CASH,EUR.JPY-IDEALPRO-CASH,EUR.USD-IDEALPRO-CASH,EUR.GBP-IDEALPRO-CASH,EUR.AUD-IDEALPRO-CASH")
> );
>
> _N( TickerList2 = ParamStr("Tickers2",
> "QQQQ,USD.CHF-IDEALPRO-CASH,USD.JPY-IDEALPRO-CASH,USD.CAD-IDEALPRO-CASH")
> );
>
> _N( TickerList3 = ParamStr("Tickers3",
> "SPY,GBP.USD-IDEALPRO-CASH,GBP.JPY-IDEALPRO-CASH,GBP.CHF-IDEALPRO-CASH,GBP.AUD-IDEALPRO-CASH")
> );
>
> _N( TickerList4 = ParamStr("Tickers4",
> "MSFT,AUD.JPY-IDEALPRO-CASH,AUD.NZD-IDEALPRO-CASH,AUD.USD-IDEALPRO-CASH,AUD.CHF-IDEALPRO-CASH")
> );
>
>
>
> //TickerList = IIf(DrawList==1,TickerList1,TickerList2);
>
> if(DrawList=="1")TickerList=TickerList1;
>
> if(DrawList=="2")TickerList=TickerList2;
>
> if(DrawList=="3")TickerList=TickerList3;
>
> if(DrawList=="4")TickerList=TickerList4;
>
>
>
> NumBars = 40;
>
> fvb = Status("firstvisiblebar");
>
> //Plot( 100 * ( C - C[ fvb ] ) / C[ fvb ], Name(), colorBlue );
>
> for( i = 0; ( symbol = StrExtract( TickerList, i ) ) != ""; i++
)
>
> {
>
> fc = Foreign( symbol, "C" );
>
> if( ! IsNull( fc[ 0 ] ) )
>
> {
>
> //use either following
>
> Plot( 100 * ( fc - fc[ fvb ] )/ fc[ fvb ],"\n"+symbol,colorGreen+
(
> (2*i) % 15 ),styleLine );
>
> //or to shorten display; shows only 3 letters for stocks
>
> // symbol2 = "\n"+ StrMid( symbol ,4,3)+StrMid(symbol
,0,3);
>
> // Plot( 100 * ( fc - fc[ fvb ] )/ fc[ fvb ],symbol2,colorGreen+ (
> (2*i) % 15 ),styleLine );
>
> }
>
> }
>
> PlotGrid( 0, colorYellow );
>
> _N( Title = "Rel.Str-FX-Loop - Rel. Perf. [%]: {{VALUES}}"
);
>
>
> Richard a écrit :
> >
> >
> > I've never been able to overlay a stock or stocks or Index on a basic
> > Amibroker chart (price only for the overlay). I'm sure there must be
> > simple way … it's just knowing how.
> > Am example of what I'd like to see is at:
> > http://finance.yahoo.com/q/bc?t=1y&s=HOT&l=on&z=m&q=l&c=BEE&c=
> > <http://finance.yahoo.com/q/bc?t=1y&s=HOT&l=on&z=m&q=l&c=BEE&c=>^IXIC
> >
> > I'm sure one of you experts like Herman, Barry, Terry etc. has the
> > answer. Thanks
> >
> > Dick H.
> >
> >
>