PureBytes Links
Trading Reference Links
|
Hi All,
i am using amibroker ver 4.80. there is a website www.barchart.com that gives end of day o,h.l.c for most of the US commodity futures. can some one explain or help me can i get the data from this website to amibroker. in amiquote i could find the provision to use only listed websites like yahoo.com or quotes.com. for instance i am giving the link below of barchart.com. " http://www2.barchart.com/futexch.asp?exch=nymex&code=BSTK" this link gives the eod for crude oil pit trading. now i can i get these quotes to amibroker software.
thanks for the attention and help.
rgds
krish
--- On Fri, 19/12/08, amibroker@xxxxxxxxxxxxxxx <amibroker@xxxxxxxxxxxxxxx> wrote:
From: amibroker@xxxxxxxxxxxxxxx <amibroker@xxxxxxxxxxxxxxx> Subject: [amibroker] Digest Number 8388 To: amibroker@xxxxxxxxxxxxxxx Date: Friday, 19 December, 2008, 10:22 PM
Messages In This Digest (25 Messages)
Messages
- 1a.
-
Thu Dec 18, 2008 5:02 pm (PST)
Hoping someone can chime in here to let me know what I might be doing wrong. I'm currently testing out some simple automation code. The objective is to load an AFL and then run a portfolio optimization for a specified date range.
I am using a simple MA crossover trading system for testing purposes. I can of course optimize it manually in AA without any problem. But when I try to run and control that optimization from a piece of automation code, I get a whole range of syntax errors.
Below are the two *separate* AFL codes. I imagine the first AFL has some errors in it that is preventing the actions from being carried out properly. What am I missing or doing wrong? Any input much appreciated:
//---------- --------- --------- --------- --------- --------- ---\ ------ // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization //---------- --------- --------- ---------
--------- --------- ---\ ------
EnableScript( "jscript" ); <%
database = "C:\\Program Files\\Amibroker\ \Data"; formula_1 = "C:\\Simple MA Cross.afl";
AB = new ActiveXObject( "Broker.Application " ); AB.LoadDatabase( database ); AA = AB.Analysis; Stk = AB.Stocks Doc = AB.Documents. Open( Stk.Ticker );
AA.LoadFormula( formula_1 ); // load formula from external file
AA.ApplyTo = 1; // use current symbol AA.RangeMode = 3; // use 'From' and 'To' dates AA.RangeFromDate = "11/01/2005" ; AA.RangeToDate = "12/31/2005" ; AA.Optimize( 0 ); // run Optimize for the portfolio, which is just one symbol AA.Backtest( );
%> //---------END AUTOMATION AFL--------- --------- --------- --------- --------- ----
//---------- --------- --------- --------- --------- --------- ---\ ------ // Simple MA Cross: THIS IS A SEPARATE AFL SAVED AT: "C:\\Simple
MA Cross.afl" //---------- --------- --------- --------- --------- --------- ---\ ------
FastMALength = Optimize("FastMALen gth", 1, 1, 100, 1); SlowMALength = 20;
//---------- --------- --------- --------- --------- --------- ---\ ------ // BACKTESTER SETTINGS //---------- --------- --------- --------- --------- --------- ---\ ------
SetBarsRequired( 10000, 0); SetOption("AllowPos itionShrinking" , False); SetOption("AllowSam eBarExit" , True); SetOption("Commissi onAmount" , 3.00); SetOption("Commissi onMode", 3); SetOption("FuturesM ode", 1); SetOption("InitialE quity", 100000); SetOption("Interest Rate",0); SetOption("MaxOpenP ositions" , 1); SetOption("MinPosVa lue", 0); SetOption("MinShare s", 1); SetOption("PriceBou ndChecking" , False ); SetOption("ReverseS ignalForcesExit" , False); SetOption("UsePrevB arEquityForPosSi zing", True ); SetTradeDelays( 0, 0, 0,
0); SetPositionSize( 1, spsShares); TickSize = 0.0001; // The minimum price move of symbol for Forex PointValue = 100000; RoundLotSize = 1; MarginDeposit = 2500; BuyPrice = SellPrice = ShortPrice = CoverPrice = Close;
//---------- --------- --------- --------- --------- --------- ---\ -- // TRADING SYSTEM //---------- --------- --------- --------- --------- --------- ---\ --
FastMA = MA( C, FastMALength ); SlowMA = MA( C, SlowMALength ); Buy = Cross( FastMA, SlowMA ); Sell = Cross( SlowMA, FastMA );
- 1b.
-
Thu Dec 18, 2008 6:12 pm (PST)
The simplified code below runs without any syntax error. However, instead of optimizing through all 100 steps, it only does a single step. Any idea why doesn't it do all 100 steps, as coded in the Simple MA Cross afl?: //---------- --------- --------- --------- --------- --------- ---\ ------ // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization //---------- --------- --------- --------- --------- --------- ---\ ------ EnableScript( "jscript" ); <% database = "C:\\Program Files\\Amibroker\ \Data"; formula_1 = "C:\\Simple MA Cross.afl"; AB = new ActiveXObject( "Broker.Application " ); AB.LoadDatabase( database ); AA = AB.Analysis; AA.LoadFormula( formula_1 ); // load formula from external file AA.ApplyTo = 1; // use current symbol AA.RangeMode = 3; // use 'From' and 'To' dates AA.RangeFromDate = "11/01/2005" ; AA.RangeToDate =
"12/31/2005" ; AA.Optimize( 0 ); // run Optimize for the portfolio, which is just one symbol //AA.Backtest( ); %> //---------END AUTOMATION AFL--------- --------- --------- --------- --------- ---- --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@xx .> wrote: > > Hoping someone can chime in here to let me know what I might be doing > wrong. I'm currently testing out some simple automation code. The > objective is to load an AFL and then run a portfolio optimization for a > specified date range. > > I am using a simple MA crossover trading system for testing purposes. I > can of course optimize it manually in AA without any problem. But when I > try to run and control that optimization from a piece of automation > code, I get a whole range of syntax
errors. > > Below are the two *separate* AFL codes. I imagine the first AFL has some > errors in it that is preventing the actions from being carried out > properly. What am I missing or doing wrong? Any input much appreciated: > > //---------- --------- --------- --------- --------- --------- ---\ \ > ------ > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > //---------- --------- --------- --------- --------- --------- ---\ \ > ------ > > EnableScript( "jscript" ); > <% > > database = "C:\\Program Files\\Amibroker\ \Data"; > formula_1 = "C:\\Simple MA Cross.afl"; > > AB = new ActiveXObject( "Broker.Application " ); > AB.LoadDatabase( database ); > AA = AB.Analysis; > Stk = AB.Stocks > Doc = AB.Documents. Open( Stk.Ticker ); > > AA.LoadFormula( formula_1 ); // load formula
from external > file > > AA.ApplyTo = 1; // use current symbol > AA.RangeMode = 3; // use 'From' and 'To' dates > AA.RangeFromDate = "11/01/2005" ; > AA.RangeToDate = "12/31/2005" ; > AA.Optimize( 0 ); // run Optimize for the > portfolio, which is just one symbol > AA.Backtest( ); > > %> > //---------END AUTOMATION > AFL--------- --------- --------- --------- --------- ---- > > > > > > //---------- --------- --------- --------- --------- --------- ---\ \ > ------ > // Simple MA Cross: THIS IS A SEPARATE AFL SAVED AT: "C:\\Simple MA > Cross.afl" > //---------- --------- --------- --------- --------- --------- ---\ \ > ------ > > > FastMALength = Optimize("FastMALen gth", 1, 1, 100, 1); > SlowMALength = 20; > > //---------- --------- --------- ---------
--------- --------- ---\ \ > ------ > // BACKTESTER SETTINGS > //---------- --------- --------- --------- --------- --------- ---\ \ > ------ > > SetBarsRequired( 10000, 0); > SetOption("AllowPos itionShrinking" , False); > SetOption("AllowSam eBarExit" , True); > SetOption("Commissi onAmount" , 3.00); > SetOption("Commissi onMode", 3); > SetOption("FuturesM ode", 1); > SetOption("InitialE quity", 100000); > SetOption("Interest Rate",0); > SetOption("MaxOpenP ositions" , 1); > SetOption("MinPosVa lue", 0); > SetOption("MinShare s", 1); > SetOption("PriceBou ndChecking" , False ); > SetOption("ReverseS ignalForcesExit" , False); > SetOption("UsePrevB arEquityForPosSi zing", True ); > SetTradeDelays( 0, 0, 0, 0); > SetPositionSize( 1, spsShares); > TickSize = 0.0001; // The minimum price move of symbol
for Forex > PointValue = 100000; > RoundLotSize = 1; > MarginDeposit = 2500; > BuyPrice = SellPrice = ShortPrice = CoverPrice = Close; > > //---------- --------- --------- --------- --------- --------- ---\ \ > -- > // TRADING SYSTEM > //---------- --------- --------- --------- --------- --------- ---\ \ > -- > > FastMA = MA( C, FastMALength ); > SlowMA = MA( C, SlowMALength ); > Buy = Cross( FastMA, SlowMA ); > Sell = Cross( SlowMA, FastMA ); >
- 1c.
-
Thu Dec 18, 2008 6:18 pm (PST)
To add to my confusion, sometimes the below code does produce syntax errors when applied. Other times it runs smoothly (albeit with a single optimization step). I'm not doing anything different, so I have no idea why it fluctuates. --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@xx .> wrote: > > The simplified code below runs without any syntax error. However, > instead of optimizing through all 100 steps, it only does a single step. > Any idea why doesn't it do all 100 steps, as coded in the Simple MA > Cross afl?: > > > //---------- --------- --------- --------- --------- --------- ---\ > ------ > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > //---------- --------- --------- --------- --------- --------- ---\ >
------ > > EnableScript( "jscript" ); > <% > > database = "C:\\Program Files\\Amibroker\ \Data"; > formula_1 = "C:\\Simple MA Cross.afl"; > > AB = new ActiveXObject( "Broker.Application " ); > AB.LoadDatabase( database ); > AA = AB.Analysis; > > AA.LoadFormula( formula_1 ); // load formula from external > file > > AA.ApplyTo = 1; // use current symbol > AA.RangeMode = 3; // use 'From' and 'To' dates > AA.RangeFromDate = "11/01/2005" ; > AA.RangeToDate = "12/31/2005" ; > AA.Optimize( 0 ); // run Optimize for the > portfolio, which is just one symbol > //AA.Backtest( ); > > %> > //---------END AUTOMATION > AFL--------- --------- --------- --------- --------- ---- > > > > --- In amibroker@xxxxxxxxx
ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > Hoping someone can chime in here to let me know what I might be doing > > wrong. I'm currently testing out some simple automation code. The > > objective is to load an AFL and then run a portfolio optimization for > a > > specified date range. > > > > I am using a simple MA crossover trading system for testing purposes. > I > > can of course optimize it manually in AA without any problem. But when > I > > try to run and control that optimization from a piece of automation > > code, I get a whole range of syntax errors. > > > > Below are the two *separate* AFL codes. I imagine the first AFL has > some > > errors in it that is preventing the actions from being carried out > > properly. What am I missing or doing wrong? Any input much >
appreciated: > > > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > > > EnableScript( "jscript" ); > > <% > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > AB = new ActiveXObject( "Broker.Application " ); > > AB.LoadDatabase( database ); > > AA = AB.Analysis; > > Stk = AB.Stocks > > Doc = AB.Documents. Open( Stk.Ticker ); > > > > AA.LoadFormula( formula_1 ); // load formula from > external > > file > > > > AA.ApplyTo = 1; // use current symbol > >
AA.RangeMode = 3; // use 'From' and 'To' dates > > AA.RangeFromDate = "11/01/2005" ; > > AA.RangeToDate = "12/31/2005" ; > > AA.Optimize( 0 ); // run Optimize for the > > portfolio, which is just one symbol > > AA.Backtest( ); > > > > %> > > //---------END AUTOMATION > > AFL--------- --------- --------- --------- --------- ---- > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > // Simple MA Cross: THIS IS A SEPARATE AFL SAVED AT: "C:\\Simple MA > > Cross.afl" > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > > > > > FastMALength = Optimize("FastMALen gth", 1, 1, 100, 1); > > SlowMALength = 20; >
> > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > // BACKTESTER SETTINGS > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > > > SetBarsRequired( 10000, 0); > > SetOption("AllowPos itionShrinking" , False); > > SetOption("AllowSam eBarExit" , True); > > SetOption("Commissi onAmount" , 3.00); > > SetOption("Commissi onMode", 3); > > SetOption("FuturesM ode", 1); > > SetOption("InitialE quity", 100000); > > SetOption("Interest Rate",0); > > SetOption("MaxOpenP ositions" , 1); > > SetOption("MinPosVa lue", 0); > > SetOption("MinShare s", 1); > > SetOption("PriceBou ndChecking" , False ); > > SetOption("ReverseS ignalForcesExit" , False); > > SetOption("UsePrevB
arEquityForPosSi zing", True ); > > SetTradeDelays( 0, 0, 0, 0); > > SetPositionSize( 1, spsShares); > > TickSize = 0.0001; // The minimum price move of symbol for > Forex > > PointValue = 100000; > > RoundLotSize = 1; > > MarginDeposit = 2500; > > BuyPrice = SellPrice = ShortPrice = CoverPrice = Close; > > > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > -- > > // TRADING SYSTEM > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > -- > > > > FastMA = MA( C, FastMALength ); > > SlowMA = MA( C, SlowMALength ); > > Buy = Cross( FastMA, SlowMA ); > > Sell = Cross( SlowMA, FastMA ); > > >
- 1d.
-
Thu Dec 18, 2008 6:33 pm (PST)
Are you particularly looking to run the first script from AmiBroker? Since the whole thing is intended to just be a batch starter, you can just write it as a vanilla JScript file and run it directly from the command line. Just rename it to have a .js file extension (e.g. runami.js) then run it from the command line using: wscript runami.js That being said. There are a few issues with your original post. 1. It's not clear what you are trying to do with the Stocks object and your usage of Document. I'm assuming that you are just trying to set the active document as shown in my sample below. 2. Generally you either want to Optimize, or to Backtest. Not clear why you are trying to do both. The following .ps file works, runs all 100 optimizations. Your sample probably does to, but then immediately clobbers the result with a single
backtest! Mike database = "C:\\Program Files\\Amibroker\ \Data"; formula_1 = "C:\\Simple MA Cross.afl"; AB = new ActiveXObject( "Broker.Application " ); AA = AB.Analysis; AB.LoadDatabase( database ); AB.ActiveDocument. Name = "^DJI"; // Set ^DJI as active document AA.LoadFormula( formula_1 ); // load formula from external file AA.ApplyTo = 1; // use current symbol AA.RangeMode = 3; // use 'From' and 'To' dates AA.RangeFromDate = "11/01/2005" ; AA.RangeToDate = "12/31/2005" ; AA.Optimize( 0 ); // run Optimize for the portfolio, which is just one symbol --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@xx .> wrote: > > To add to my confusion, sometimes the below code does produce syntax > errors when applied. Other times it runs smoothly (albeit with
a > single optimization step). I'm not doing anything different, so I have > no idea why it fluctuates. > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > The simplified code below runs without any syntax error. However, > > instead of optimizing through all 100 steps, it only does a single step. > > Any idea why doesn't it do all 100 steps, as coded in the Simple MA > > Cross afl?: > > > > > > > //---------- --------- --------- --------- --------- --------- --- ----\ > > ------ > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > //---------- --------- --------- --------- --------- --------- --- ----\ > > ------ > > > > EnableScript(
"jscript" ); > > <% > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > AB = new ActiveXObject( "Broker.Application " ); > > AB.LoadDatabase( database ); > > AA = AB.Analysis; > > > > AA.LoadFormula( formula_1 ); // load formula from external > > file > > > > AA.ApplyTo = 1; // use current symbol > > AA.RangeMode = 3; // use 'From' and 'To' dates > > AA.RangeFromDate = "11/01/2005" ; > > AA.RangeToDate = "12/31/2005" ; > > AA.Optimize( 0 ); // run Optimize for the > > portfolio, which is just one symbol > > //AA.Backtest( ); > > > > %> > > //---------END AUTOMATION > > AFL--------- --------- --------- --------- --------- ---- > > > > > > >
> --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > > > Hoping someone can chime in here to let me know what I might be doing > > > wrong. I'm currently testing out some simple automation code. The > > > objective is to load an AFL and then run a portfolio optimization for > > a > > > specified date range. > > > > > > I am using a simple MA crossover trading system for testing purposes. > > I > > > can of course optimize it manually in AA without any problem. But when > > I > > > try to run and control that optimization from a piece of automation > > > code, I get a whole range of syntax errors. > > > > > > Below are the two *separate* AFL codes. I
imagine the first AFL has > > some > > > errors in it that is preventing the actions from being carried out > > > properly. What am I missing or doing wrong? Any input much > > appreciated: > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- ----\ > > \ > > > ------ > > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > > > > //---------- --------- --------- --------- --------- --------- --- ----\ > > \ > > > ------ > > > > > > EnableScript( "jscript" ); > > > <% > > > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > > > AB = new ActiveXObject( "Broker.Application "
); > > > AB.LoadDatabase( database ); > > > AA = AB.Analysis; > > > Stk = AB.Stocks > > > Doc = AB.Documents. Open( Stk.Ticker ); > > > > > > AA.LoadFormula( formula_1 ); // load formula from > > external > > > file > > > > > > AA.ApplyTo = 1; // use current symbol > > > AA.RangeMode = 3; // use 'From' and 'To' dates > > > AA.RangeFromDate = "11/01/2005" ; > > > AA.RangeToDate = "12/31/2005" ; > > > AA.Optimize( 0 ); // run Optimize for the > > > portfolio, which is just one symbol > > > AA.Backtest( ); > > > > > > %> > > > //---------END AUTOMATION > > > AFL--------- --------- --------- --------- --------- ---- > > > > > > > > > > > > > > > >
> > > > > //---------- --------- --------- --------- --------- --------- --- ----\ > > \ > > > ------ > > > // Simple MA Cross: THIS IS A SEPARATE AFL SAVED AT: "C:\\Simple MA > > > Cross.afl" > > > > > > //---------- --------- --------- --------- --------- --------- --- ----\ > > \ > > > ------ > > > > > > > > > FastMALength = Optimize("FastMALen gth", 1, 1, 100, 1); > > > SlowMALength = 20; > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- ----\ > > \ > > > ------ > > > // BACKTESTER SETTINGS > > > > > > //---------- --------- --------- --------- --------- --------- --- ----\ > > \ > > > ------ > > > >
> > SetBarsRequired( 10000, 0); > > > SetOption("AllowPos itionShrinking" , False); > > > SetOption("AllowSam eBarExit" , True); > > > SetOption("Commissi onAmount" , 3.00); > > > SetOption("Commissi onMode", 3); > > > SetOption("FuturesM ode", 1); > > > SetOption("InitialE quity", 100000); > > > SetOption("Interest Rate",0); > > > SetOption("MaxOpenP ositions" , 1); > > > SetOption("MinPosVa lue", 0); > > > SetOption("MinShare s", 1); > > > SetOption("PriceBou ndChecking" , False ); > > > SetOption("ReverseS ignalForcesExit" , False); > > > SetOption("UsePrevB arEquityForPosSi zing", True ); > > > SetTradeDelays( 0, 0, 0, 0); > > > SetPositionSize( 1, spsShares); > > > TickSize = 0.0001; // The minimum price move of symbol for > > Forex >
> > PointValue = 100000; > > > RoundLotSize = 1; > > > MarginDeposit = 2500; > > > BuyPrice = SellPrice = ShortPrice = CoverPrice = Close; > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- ----\ > > \ > > > -- > > > // TRADING SYSTEM > > > > > > //---------- --------- --------- --------- --------- --------- --- ----\ > > \ > > > -- > > > > > > FastMA = MA( C, FastMALength ); > > > SlowMA = MA( C, SlowMALength ); > > > Buy = Cross( FastMA, SlowMA ); > > > Sell = Cross( SlowMA, FastMA ); > > > > > >
- 1e.
-
Thu Dec 18, 2008 6:34 pm (PST)
Sorry, that should have read "The following .js file works...". Mike --- In amibroker@xxxxxxxxx ps.com, "Mike" <sfclimbers@ ...> wrote: > > Are you particularly looking to run the first script from AmiBroker? > Since the whole thing is intended to just be a batch starter, you can > just write it as a vanilla JScript file and run it directly from the > command line. > > Just rename it to have a .js file extension (e.g. runami.js) then run > it from the command line using: > > wscript runami.js > > That being said. There are a few issues with your original post. > 1. It's not clear what you are trying to do with the Stocks object and > your usage of Document. I'm assuming that you are just trying to set > the active document as
shown in my sample below. > > 2. Generally you either want to Optimize, or to Backtest. Not clear > why you are trying to do both. > > The following .ps file works, runs all 100 optimizations. Your sample > probably does to, but then immediately clobbers the result with a > single backtest! > > Mike > > > database = "C:\\Program Files\\Amibroker\ \Data"; > formula_1 = "C:\\Simple MA Cross.afl"; > > AB = new ActiveXObject( "Broker.Application " ); > AA = AB.Analysis; > > AB.LoadDatabase( database ); > AB.ActiveDocument. Name = "^DJI"; // Set ^DJI as active > document > > AA.LoadFormula( formula_1 ); // load formula from > external file > > AA.ApplyTo = 1; // use current symbol > AA.RangeMode = 3; // use 'From' and 'To' dates > AA.RangeFromDate = "11/01/2005" ;
> AA.RangeToDate = "12/31/2005" ; > AA.Optimize( 0 ); // run Optimize for the > portfolio, which is just one symbol > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > To add to my confusion, sometimes the below code does produce syntax > > errors when applied. Other times it runs smoothly (albeit with a > > single optimization step). I'm not doing anything different, so I > have > > no idea why it fluctuates. > > > > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > > > The simplified code below runs without any syntax error. However, > > > instead of optimizing through
all 100 steps, it only does a single > step. > > > Any idea why doesn't it do all 100 steps, as coded in the Simple > MA > > > Cross afl?: > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- -- > ----\ > > > ------ > > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > > > //---------- --------- --------- --------- --------- --------- --- -- > ----\ > > > ------ > > > > > > EnableScript( "jscript" ); > > > <% > > > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > > > AB = new ActiveXObject( "Broker.Application " ); > > > AB.LoadDatabase( database ); > >
> AA = AB.Analysis; > > > > > > AA.LoadFormula( formula_1 ); // load formula from > external > > > file > > > > > > AA.ApplyTo = 1; // use current symbol > > > AA.RangeMode = 3; // use 'From' and 'To' > dates > > > AA.RangeFromDate = "11/01/2005" ; > > > AA.RangeToDate = "12/31/2005" ; > > > AA.Optimize( 0 ); // run Optimize for the > > > portfolio, which is just one symbol > > > //AA.Backtest( ); > > > > > > %> > > > //---------END AUTOMATION > > > AFL--------- --------- --------- --------- --------- ---- > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > >
> > > > > Hoping someone can chime in here to let me know what I might be > doing > > > > wrong. I'm currently testing out some simple automation code. > The > > > > objective is to load an AFL and then run a portfolio > optimization for > > > a > > > > specified date range. > > > > > > > > I am using a simple MA crossover trading system for testing > purposes. > > > I > > > > can of course optimize it manually in AA without any problem. > But when > > > I > > > > try to run and control that optimization from a piece of > automation > > > > code, I get a whole range of syntax errors. > > > > > > > > Below are the two *separate* AFL codes. I imagine the first AFL > has > > >
some > > > > errors in it that is preventing the actions from being carried > out > > > > properly. What am I missing or doing wrong? Any input much > > > appreciated: > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- -- > ----\ > > > \ > > > > ------ > > > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- -- > ----\ > > > \ > > > > ------ > > > > > > > > EnableScript( "jscript" ); > > > > <% > > > > > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > > > formula_1 = "C:\\Simple MA
Cross.afl"; > > > > > > > > AB = new ActiveXObject( "Broker.Application " ); > > > > AB.LoadDatabase( database ); > > > > AA = AB.Analysis; > > > > Stk = AB.Stocks > > > > Doc = AB.Documents. Open( Stk.Ticker ); > > > > > > > > AA.LoadFormula( formula_1 ); // load formula from > > > external > > > > file > > > > > > > > AA.ApplyTo = 1; // use current symbol > > > > AA.RangeMode = 3; // use 'From' and 'To' > dates > > > > AA.RangeFromDate = "11/01/2005" ; > > > > AA.RangeToDate = "12/31/2005" ; > > > > AA.Optimize( 0 ); // run Optimize for > the > > > > portfolio, which is just one symbol > > > > AA.Backtest( ); > > > > > > > > %> >
> > > //---------END AUTOMATION > > > > AFL--------- --------- --------- --------- --------- ---- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- -- > ----\ > > > \ > > > > ------ > > > > // Simple MA Cross: THIS IS A SEPARATE AFL SAVED AT: "C:\\Simple > MA > > > > Cross.afl" > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- -- > ----\ > > > \ > > > > ------ > > > > > > > > > > > > FastMALength = Optimize("FastMALen gth", 1, 1, 100, > 1); > > > > SlowMALength = 20; > > > > >
> > > > > > > > //---------- --------- --------- --------- --------- --------- --- -- > ----\ > > > \ > > > > ------ > > > > // BACKTESTER SETTINGS > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- -- > ----\ > > > \ > > > > ------ > > > > > > > > SetBarsRequired( 10000, 0); > > > > SetOption("AllowPos itionShrinking" , False); > > > > SetOption("AllowSam eBarExit" , True); > > > > SetOption("Commissi onAmount" , 3.00); > > > > SetOption("Commissi onMode", 3); > > > > SetOption("FuturesM ode", 1); > > > > SetOption("InitialE quity", 100000); > > > > SetOption("Interest Rate",0); > > > > SetOption("MaxOpenP ositions" ,
1); > > > > SetOption("MinPosVa lue", 0); > > > > SetOption("MinShare s", 1); > > > > SetOption("PriceBou ndChecking" , False ); > > > > SetOption("ReverseS ignalForcesExit" , False); > > > > SetOption("UsePrevB arEquityForPosSi zing", True ); > > > > SetTradeDelays( 0, 0, 0, 0); > > > > SetPositionSize( 1, spsShares); > > > > TickSize = 0.0001; // The minimum price move of symbol > for > > > Forex > > > > PointValue = 100000; > > > > RoundLotSize = 1; > > > > MarginDeposit = 2500; > > > > BuyPrice = SellPrice = ShortPrice = CoverPrice = Close; > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- -- > ----\ > > > \ > > > > -- >
> > > // TRADING SYSTEM > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- -- > ----\ > > > \ > > > > -- > > > > > > > > FastMA = MA( C, FastMALength ); > > > > SlowMA = MA( C, SlowMALength ); > > > > Buy = Cross( FastMA, SlowMA ); > > > > Sell = Cross( SlowMA, FastMA ); > > > > > > > > > >
- 1f.
-
Thu Dec 18, 2008 6:57 pm (PST)
Thanks, Mike. That's a great help. Yes, there was some junk in my original code. I cobbled it together from other examples found on this group, and I didn't quite know what I was doing. Thanks also for letting me know of the ability to run from the command line window. I had not even thought of that, or was aware it could work that way. Do you have any online Jscript tutorials that you could recommend, specifically geared towards automation? I found some general purpose tutorials, but want to focus just on automating stuff like this. I am still a bit confused why your code runs fine (all 100 opt steps) when run from the command line, but only does a single opt step when run as an AFL that simply calls the identical jscript routine. --- In amibroker@xxxxxxxxx ps.com, "Mike" <sfclimbers@ ...>
wrote: > > Are you particularly looking to run the first script from AmiBroker? > Since the whole thing is intended to just be a batch starter, you can > just write it as a vanilla JScript file and run it directly from the > command line. > > Just rename it to have a .js file extension (e.g. runami.js) then run > it from the command line using: > > wscript runami.js > > That being said. There are a few issues with your original post. > 1. It's not clear what you are trying to do with the Stocks object and > your usage of Document. I'm assuming that you are just trying to set > the active document as shown in my sample below. > > 2. Generally you either want to Optimize, or to Backtest. Not clear > why you are trying to do both. > > The following .ps file works, runs all 100 optimizations. Your sample > probably does
to, but then immediately clobbers the result with a > single backtest! > > Mike > > > database = "C:\\Program Files\\Amibroker\ \Data"; > formula_1 = "C:\\Simple MA Cross.afl"; > > AB = new ActiveXObject( "Broker.Application " ); > AA = AB.Analysis; > > AB.LoadDatabase( database ); > AB.ActiveDocument. Name = "^DJI"; // Set ^DJI as active > document > > AA.LoadFormula( formula_1 ); // load formula from > external file > > AA.ApplyTo = 1; // use current symbol > AA.RangeMode = 3; // use 'From' and 'To' dates > AA.RangeFromDate = "11/01/2005" ; > AA.RangeToDate = "12/31/2005" ; > AA.Optimize( 0 ); // run Optimize for the > portfolio, which is just one symbol > > > --- In amibroker@xxxxxxxxx ps.com,
"ozzyapeman" <zoopfree@> wrote: > > > > To add to my confusion, sometimes the below code does produce syntax > > errors when applied. Other times it runs smoothly (albeit with a > > single optimization step). I'm not doing anything different, so I > have > > no idea why it fluctuates. > > > > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > > > The simplified code below runs without any syntax error. However, > > > instead of optimizing through all 100 steps, it only does a single > step. > > > Any idea why doesn't it do all 100 steps, as coded in the Simple > MA > > > Cross afl?: > > > > > > > > > > > //---------- --------- ---------
--------- --------- --------- --- > ----\ > > > ------ > > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > > > //---------- --------- --------- --------- --------- --------- --- > ----\ > > > ------ > > > > > > EnableScript( "jscript" ); > > > <% > > > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > > > AB = new ActiveXObject( "Broker.Application " ); > > > AB.LoadDatabase( database ); > > > AA = AB.Analysis; > > > > > > AA.LoadFormula( formula_1 ); // load formula from > external > > > file > > > > > > AA.ApplyTo = 1; // use current symbol > > > AA.RangeMode = 3; // use 'From' and 'To' >
dates > > > AA.RangeFromDate = "11/01/2005" ; > > > AA.RangeToDate = "12/31/2005" ; > > > AA.Optimize( 0 ); // run Optimize for the > > > portfolio, which is just one symbol > > > //AA.Backtest( ); > > > > > > %> > > > //---------END AUTOMATION > > > AFL--------- --------- --------- --------- --------- ---- > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > > > > > Hoping someone can chime in here to let me know what I might be > doing > > > > wrong. I'm currently testing out some simple automation code. > The > > > > objective is to load an AFL and then run a portfolio > optimization
for > > > a > > > > specified date range. > > > > > > > > I am using a simple MA crossover trading system for testing > purposes. > > > I > > > > can of course optimize it manually in AA without any problem. > But when > > > I > > > > try to run and control that optimization from a piece of > automation > > > > code, I get a whole range of syntax errors. > > > > > > > > Below are the two *separate* AFL codes. I imagine the first AFL > has > > > some > > > > errors in it that is preventing the actions from being carried > out > > > > properly. What am I missing or doing wrong? Any input much > > > appreciated: > > > > > > > > > > > > > //---------- ---------
--------- --------- --------- --------- --- > ----\ > > > \ > > > > ------ > > > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > ----\ > > > \ > > > > ------ > > > > > > > > EnableScript( "jscript" ); > > > > <% > > > > > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > > > > > AB = new ActiveXObject( "Broker.Application " ); > > > > AB.LoadDatabase( database ); > > > > AA = AB.Analysis; > > > > Stk = AB.Stocks > > > > Doc = AB.Documents. Open( Stk.Ticker ); > > > > > >
> > AA.LoadFormula( formula_1 ); // load formula from > > > external > > > > file > > > > > > > > AA.ApplyTo = 1; // use current symbol > > > > AA.RangeMode = 3; // use 'From' and 'To' > dates > > > > AA.RangeFromDate = "11/01/2005" ; > > > > AA.RangeToDate = "12/31/2005" ; > > > > AA.Optimize( 0 ); // run Optimize for > the > > > > portfolio, which is just one symbol > > > > AA.Backtest( ); > > > > > > > > %> > > > > //---------END AUTOMATION > > > > AFL--------- --------- --------- --------- --------- ---- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > //---------- --------- --------- --------- ---------
--------- --- > ----\ > > > \ > > > > ------ > > > > // Simple MA Cross: THIS IS A SEPARATE AFL SAVED AT: "C:\\Simple > MA > > > > Cross.afl" > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > ----\ > > > \ > > > > ------ > > > > > > > > > > > > FastMALength = Optimize("FastMALen gth", 1, 1, 100, > 1); > > > > SlowMALength = 20; > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > ----\ > > > \ > > > > ------ > > > > // BACKTESTER SETTINGS > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- >
----\ > > > \ > > > > ------ > > > > > > > > SetBarsRequired( 10000, 0); > > > > SetOption("AllowPos itionShrinking" , False); > > > > SetOption("AllowSam eBarExit" , True); > > > > SetOption("Commissi onAmount" , 3.00); > > > > SetOption("Commissi onMode", 3); > > > > SetOption("FuturesM ode", 1); > > > > SetOption("InitialE quity", 100000); > > > > SetOption("Interest Rate",0); > > > > SetOption("MaxOpenP ositions" , 1); > > > > SetOption("MinPosVa lue", 0); > > > > SetOption("MinShare s", 1); > > > > SetOption("PriceBou ndChecking" , False ); > > > > SetOption("ReverseS ignalForcesExit" , False); > > > > SetOption("UsePrevB arEquityForPosSi zing", True ); > > > > SetTradeDelays( 0, 0, 0,
0); > > > > SetPositionSize( 1, spsShares); > > > > TickSize = 0.0001; // The minimum price move of symbol > for > > > Forex > > > > PointValue = 100000; > > > > RoundLotSize = 1; > > > > MarginDeposit = 2500; > > > > BuyPrice = SellPrice = ShortPrice = CoverPrice = Close; > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > ----\ > > > \ > > > > -- > > > > // TRADING SYSTEM > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > ----\ > > > \ > > > > -- > > > > > > > > FastMA = MA( C, FastMALength ); > > > > SlowMA = MA( C, SlowMALength ); > > > >
Buy = Cross( FastMA, SlowMA ); > > > > Sell = Cross( SlowMA, FastMA ); > > > > > > > > > >
- 1g.
-
Thu Dec 18, 2008 7:07 pm (PST)
you can NOT run optimizations nor backtests from inside an AFL. You MUST run them from external scripts. You'd do a whole lot better searching for examples of jscripts in the email archives here as that is where all of the OLE examples relating to Amibroker are. d On Thu, Dec 18, 2008 at 9:57 PM, ozzyapeman < zoopfree@xxxxxxxx com> wrote: > Thanks, Mike. That's a great help. > > Yes, there was some junk in my original code. I cobbled it together > from other examples found on this group, and I didn't quite know what > I was doing. > > Thanks also for letting me know of the ability to run from the command > line window. I had not even thought of that, or was aware it could > work that way. Do you have any online Jscript tutorials that you could > recommend,
specifically geared towards automation? I found some > general purpose tutorials, but want to focus just on automating stuff > like this. > > I am still a bit confused why your code runs fine (all 100 opt steps) > when run from the command line, but only does a single opt step when > run as an AFL that simply calls the identical jscript routine. > > > --- In amibroker@xxxxxxxxx ps.com, "Mike" <sfclimbers@ ...> wrote: > > > > Are you particularly looking to run the first script from AmiBroker? > > Since the whole thing is intended to just be a batch starter, you can > > just write it as a vanilla JScript file and run it directly from the > > command line. > > > > Just rename it to have a .js file extension (e.g. runami.js) then run > > it from the
command line using: > > > > wscript runami.js > > > > That being said. There are a few issues with your original post. > > 1. It's not clear what you are trying to do with the Stocks object and > > your usage of Document. I'm assuming that you are just trying to set > > the active document as shown in my sample below. > > > > 2. Generally you either want to Optimize, or to Backtest. Not clear > > why you are trying to do both. > > > > The following .ps file works, runs all 100 optimizations. Your sample > > probably does to, but then immediately clobbers the result with a > > single backtest! > > > > Mike > > > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > AB = new ActiveXObject( "Broker.Application
" ); > > AA = AB.Analysis; > > > > AB.LoadDatabase( database ); > > AB.ActiveDocument. Name < http://ab.activedoc ument.name/> = "^DJI"; > // Set ^DJI as active > > document > > > > AA.LoadFormula( formula_1 ); // load formula from > > external file > > > > AA.ApplyTo = 1; // use current symbol > > AA.RangeMode = 3; // use 'From' and 'To' dates > > AA.RangeFromDate = "11/01/2005" ; > > AA.RangeToDate = "12/31/2005" ; > > AA.Optimize( 0 ); // run Optimize for the > > portfolio, which is just one symbol > > > > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > > > To add to my
confusion, sometimes the below code does produce syntax > > > errors when applied. Other times it runs smoothly (albeit with a > > > single optimization step). I'm not doing anything different, so I > > have > > > no idea why it fluctuates. > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > > > > > The simplified code below runs without any syntax error. However, > > > > instead of optimizing through all 100 steps, it only does a single > > step. > > > > Any idea why doesn't it do all 100 steps, as coded in the Simple > > MA > > > > Cross afl?: > > > > > > > > > > > > > > > //---------- ---------
--------- --------- --------- --------- --- > > ----\ > > > > ------ > > > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > ----\ > > > > ------ > > > > > > > > EnableScript( "jscript" ); > > > > <% > > > > > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > > > > > AB = new ActiveXObject( "Broker.Application " ); > > > > AB.LoadDatabase( database ); > > > > AA = AB.Analysis; > > > > > > > > AA.LoadFormula( formula_1 ); // load formula from > > external > > > > file > > > > > >
> > AA.ApplyTo = 1; // use current symbol > > > > AA.RangeMode = 3; // use 'From' and 'To' > > dates > > > > AA.RangeFromDate = "11/01/2005" ; > > > > AA.RangeToDate = "12/31/2005" ; > > > > AA.Optimize( 0 ); // run Optimize for the > > > > portfolio, which is just one symbol > > > > //AA.Backtest( ); > > > > > > > > %> > > > > //---------END AUTOMATION > > > > AFL--------- --------- --------- --------- --------- ---- > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > > > > > > > Hoping someone can chime in here to let me know what I might be > >
doing > > > > > wrong. I'm currently testing out some simple automation code. > > The > > > > > objective is to load an AFL and then run a portfolio > > optimization for > > > > a > > > > > specified date range. > > > > > > > > > > I am using a simple MA crossover trading system for testing > > purposes. > > > > I > > > > > can of course optimize it manually in AA without any problem. > > But when > > > > I > > > > > try to run and control that optimization from a piece of > > automation > > > > > code, I get a whole range of syntax errors. > > > > > > > > > > Below are the two *separate* AFL codes. I imagine the first AFL > > has > > > > some > > >
> > errors in it that is preventing the actions from being carried > > out > > > > > properly. What am I missing or doing wrong? Any input much > > > > appreciated: > > > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > ----\ > > > > \ > > > > > ------ > > > > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > ----\ > > > > \ > > > > > ------ > > > > > > > > > > EnableScript( "jscript" ); > > > > > <% > > > > > > > > > > database = "C:\\Program
Files\\Amibroker\ \Data"; > > > > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > > > > > > > AB = new ActiveXObject( "Broker.Application " ); > > > > > AB.LoadDatabase( database ); > > > > > AA = AB.Analysis; > > > > > Stk = AB.Stocks > > > > > Doc = AB.Documents. Open( Stk.Ticker ); > > > > > > > > > > AA.LoadFormula( formula_1 ); // load formula from > > > > external > > > > > file > > > > > > > > > > AA.ApplyTo = 1; // use current symbol > > > > > AA.RangeMode = 3; // use 'From' and 'To' > > dates > > > > > AA.RangeFromDate = "11/01/2005" ; > > > > > AA.RangeToDate = "12/31/2005" ; > > > > > AA.Optimize( 0 ); // run Optimize for > >
the > > > > > portfolio, which is just one symbol > > > > > AA.Backtest( ); > > > > > > > > > > %> > > > > > //---------END AUTOMATION > > > > > AFL--------- --------- --------- --------- --------- ---- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > ----\ > > > > \ > > > > > ------ > > > > > // Simple MA Cross: THIS IS A SEPARATE AFL SAVED AT: "C:\\Simple > > MA > > > > > Cross.afl" > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > >
----\ > > > > \ > > > > > ------ > > > > > > > > > > > > > > > FastMALength = Optimize("FastMALen gth", 1, 1, 100, > > > 1); > > > > > SlowMALength = 20; > > > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > ----\ > > > > \ > > > > > ------ > > > > > // BACKTESTER SETTINGS > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > ----\ > > > > \ > > > > > ------ > > > > > > > > > > SetBarsRequired( 10000, 0); > > > > > SetOption("AllowPos itionShrinking" , False); > > > >
> SetOption("AllowSam eBarExit" , True); > > > > > SetOption("Commissi onAmount" , 3.00); > > > > > SetOption("Commissi onMode", 3); > > > > > SetOption("FuturesM ode", 1); > > > > > SetOption("InitialE quity", 100000); > > > > > SetOption("Interest Rate",0); > > > > > SetOption("MaxOpenP ositions" , 1); > > > > > SetOption("MinPosVa lue", 0); > > > > > SetOption("MinShare s", 1); > > > > > SetOption("PriceBou ndChecking" , False ); > > > > > SetOption("ReverseS ignalForcesExit" , False); > > > > > SetOption("UsePrevB arEquityForPosSi zing", True ); > > > > > SetTradeDelays( 0, 0, 0, 0); > > > > > SetPositionSize( 1, spsShares); > > > > > TickSize = 0.0001; // The minimum price move of symbol >
> for > > > > Forex > > > > > PointValue = 100000; > > > > > RoundLotSize = 1; > > > > > MarginDeposit = 2500; > > > > > BuyPrice = SellPrice = ShortPrice = CoverPrice = Close; > > > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > ----\ > > > > \ > > > > > -- > > > > > // TRADING SYSTEM > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > ----\ > > > > \ > > > > > -- > > > > > > > > > > FastMA = MA( C, FastMALength ); > > > > > SlowMA = MA( C, SlowMALength ); > > > > > Buy = Cross( FastMA, SlowMA
); > > > > > Sell = Cross( SlowMA, FastMA ); > > > > > > > > > > > > > > > > > > ------------ --------- --------- ------ > > **** 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.amibroke r.com/devlog/> > For other support material please check also: > http://www.amibroke r.com/support. html> > ************
********* ********* *** > Yahoo! Groups Links > > > >
- 1h.
-
Thu Dec 18, 2008 7:10 pm (PST)
Ah. Well that explains it then! :-) Thanks for the heads up. I will look for more jscript examples to try to get the hang of this automation thing. --- In amibroker@xxxxxxxxx ps.com, dingo <waledingo@x ..> wrote: > > you can NOT run optimizations nor backtests from inside an AFL. You MUST run > them from external scripts. > > You'd do a whole lot better searching for examples of jscripts in the email > archives here as that is where all of the OLE examples relating to Amibroker > are. > > d > > On Thu, Dec 18, 2008 at 9:57 PM, ozzyapeman <zoopfree@xx .> wrote: > > > Thanks, Mike. That's a great help. > > > > Yes, there was some junk in my original code. I cobbled it together > > from other examples found on
this group, and I didn't quite know what > > I was doing. > > > > Thanks also for letting me know of the ability to run from the command > > line window. I had not even thought of that, or was aware it could > > work that way. Do you have any online Jscript tutorials that you could > > recommend, specifically geared towards automation? I found some > > general purpose tutorials, but want to focus just on automating stuff > > like this. > > > > I am still a bit confused why your code runs fine (all 100 opt steps) > > when run from the command line, but only does a single opt step when > > run as an AFL that simply calls the identical jscript routine. > > > > > > --- In amibroker@xxxxxxxxx ps.com, "Mike" <sfclimbers@ > wrote: > >
> > > > Are you particularly looking to run the first script from AmiBroker? > > > Since the whole thing is intended to just be a batch starter, you can > > > just write it as a vanilla JScript file and run it directly from the > > > command line. > > > > > > Just rename it to have a .js file extension (e.g. runami.js) then run > > > it from the command line using: > > > > > > wscript runami.js > > > > > > That being said. There are a few issues with your original post. > > > 1. It's not clear what you are trying to do with the Stocks object and > > > your usage of Document. I'm assuming that you are just trying to set > > > the active document as shown in my sample below. > > > > > > 2. Generally you either want to Optimize, or to Backtest. Not
clear > > > why you are trying to do both. > > > > > > The following .ps file works, runs all 100 optimizations. Your sample > > > probably does to, but then immediately clobbers the result with a > > > single backtest! > > > > > > Mike > > > > > > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > > > AB = new ActiveXObject( "Broker.Application " ); > > > AA = AB.Analysis; > > > > > > AB.LoadDatabase( database ); > > > AB.ActiveDocument. Name < http://ab.activedoc ument.name/> = "^DJI"; > > // Set ^DJI as active > > > document > > > > > > AA.LoadFormula( formula_1 ); //
load formula from > > > external file > > > > > > AA.ApplyTo = 1; // use current symbol > > > AA.RangeMode = 3; // use 'From' and 'To' dates > > > AA.RangeFromDate = "11/01/2005" ; > > > AA.RangeToDate = "12/31/2005" ; > > > AA.Optimize( 0 ); // run Optimize for the > > > portfolio, which is just one symbol > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > > > > > To add to my confusion, sometimes the below code does produce syntax > > > > errors when applied. Other times it runs smoothly (albeit with a > > > > single optimization step). I'm not doing anything different, so I > > > have > > > > no idea why it
fluctuates. > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > > > > > > > The simplified code below runs without any syntax error. However, > > > > > instead of optimizing through all 100 steps, it only does a single > > > step. > > > > > Any idea why doesn't it do all 100 steps, as coded in the Simple > > > MA > > > > > Cross afl?: > > > > > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > > ----\ > > > > > ------ > > > > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization >
> > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > > ----\ > > > > > ------ > > > > > > > > > > EnableScript( "jscript" ); > > > > > <% > > > > > > > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > > > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > > > > > > > AB = new ActiveXObject( "Broker.Application " ); > > > > > AB.LoadDatabase( database ); > > > > > AA = AB.Analysis; > > > > > > > > > > AA.LoadFormula( formula_1 ); // load formula from > > > external > > > > > file > > > > > > > > > > AA.ApplyTo = 1; // use current symbol > > > > >
AA.RangeMode = 3; // use 'From' and 'To' > > > dates > > > > > AA.RangeFromDate = "11/01/2005" ; > > > > > AA.RangeToDate = "12/31/2005" ; > > > > > AA.Optimize( 0 ); // run Optimize for the > > > > > portfolio, which is just one symbol > > > > > //AA.Backtest( ); > > > > > > > > > > %> > > > > > //---------END AUTOMATION > > > > > AFL--------- --------- --------- --------- --------- ---- > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > > > > > > > > > Hoping someone can chime in here to let me know what I might
be > > > doing > > > > > > wrong. I'm currently testing out some simple automation code. > > > The > > > > > > objective is to load an AFL and then run a portfolio > > > optimization for > > > > > a > > > > > > specified date range. > > > > > > > > > > > > I am using a simple MA crossover trading system for testing > > > purposes. > > > > > I > > > > > > can of course optimize it manually in AA without any problem. > > > But when > > > > > I > > > > > > try to run and control that optimization from a piece of > > > automation > > > > > > code, I get a whole range of syntax errors. > > > > > > > > > > > > Below are the two
*separate* AFL codes. I imagine the first AFL > > > has > > > > > some > > > > > > errors in it that is preventing the actions from being carried > > > out > > > > > > properly. What am I missing or doing wrong? Any input much > > > > > appreciated: > > > > > > > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > > ----\ > > > > > \ > > > > > > ------ > > > > > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > > ----\ > > > > > \ > > > >
> > ------ > > > > > > > > > > > > EnableScript( "jscript" ); > > > > > > <% > > > > > > > > > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > > > > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > > > > > > > > > AB = new ActiveXObject( "Broker.Application " ); > > > > > > AB.LoadDatabase( database ); > > > > > > AA = AB.Analysis; > > > > > > Stk = AB.Stocks > > > > > > Doc = AB.Documents. Open( Stk.Ticker ); > > > > > > > > > > > > AA.LoadFormula( formula_1 ); // load formula from > > > > > external > > > > > > file > > > > > > > > > > > > AA.ApplyTo = 1; // use
current symbol > > > > > > AA.RangeMode = 3; // use 'From' and 'To' > > > dates > > > > > > AA.RangeFromDate = "11/01/2005" ; > > > > > > AA.RangeToDate = "12/31/2005" ; > > > > > > AA.Optimize( 0 ); // run Optimize for > > > the > > > > > > portfolio, which is just one symbol > > > > > > AA.Backtest( ); > > > > > > > > > > > > %> > > > > > > //---------END AUTOMATION > > > > > > AFL--------- --------- --------- --------- --------- ---- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > //---------- ---------
--------- --------- --------- --------- --- > > > ----\ > > > > > \ > > > > > > ------ > > > > > > // Simple MA Cross: THIS IS A SEPARATE AFL SAVED AT: "C:\\Simple > > > MA > > > > > > Cross.afl" > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > > ----\ > > > > > \ > > > > > > ------ > > > > > > > > > > > > > > > > > > FastMALength = Optimize("FastMALen gth", 1, 1, 100, > > > > > 1); > > > > > > SlowMALength = 20; > > > > > > > > > > > > > > > > > > > > > //---------- --------- --------- --------- ---------
--------- --- > > > ----\ > > > > > \ > > > > > > ------ > > > > > > // BACKTESTER SETTINGS > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > > ----\ > > > > > \ > > > > > > ------ > > > > > > > > > > > > SetBarsRequired( 10000, 0); > > > > > > SetOption("AllowPos itionShrinking" , False); > > > > > > SetOption("AllowSam eBarExit" , True); > > > > > > SetOption("Commissi onAmount" , 3.00); > > > > > > SetOption("Commissi onMode", 3); > > > > > > SetOption("FuturesM ode", 1); > > > > > > SetOption("InitialE quity", 100000); > > > > > >
SetOption("Interest Rate",0); > > > > > > SetOption("MaxOpenP ositions" , 1); > > > > > > SetOption("MinPosVa lue", 0); > > > > > > SetOption("MinShare s", 1); > > > > > > SetOption("PriceBou ndChecking" , False ); > > > > > > SetOption("ReverseS ignalForcesExit" , False); > > > > > > SetOption("UsePrevB arEquityForPosSi zing", True ); > > > > > > SetTradeDelays( 0, 0, 0, 0); > > > > > > SetPositionSize( 1, spsShares); > > > > > > TickSize = 0.0001; // The minimum price move of symbol > > > for > > > > > Forex > > > > > > PointValue = 100000; > > > > > > RoundLotSize = 1; > > > > > > MarginDeposit = 2500; > > > > > > BuyPrice = SellPrice = ShortPrice =
CoverPrice = Close; > > > > > > > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > > ----\ > > > > > \ > > > > > > -- > > > > > > // TRADING SYSTEM > > > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- --- > > > ----\ > > > > > \ > > > > > > -- > > > > > > > > > > > > FastMA = MA( C, FastMALength ); > > > > > > SlowMA = MA( C, SlowMALength ); > > > > > > Buy = Cross( FastMA, SlowMA ); > > > > > > Sell = Cross( SlowMA, FastMA ); > > > > > > > > > > > > > >
> > > > > > > > > > > > ------------ --------- --------- ------ > > > > **** 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.amibroke r.com/devlog/> > > > For other support material please check also: > > http://www.amibroke r.com/support. html> > > > ************ *********
********* *** > > Yahoo! Groups Links > > > > > > > > >
- 1i.
-
Fri Dec 19, 2008 1:39 am (PST)
YOu cant run automation that controls optimization from within an afl. Do it with jscript outside AB. _____ From: amibroker@xxxxxxxxx ps.com [mailto: amibroker@xxxxxxxxx ps.com] On Behalf Of ozzyapeman Sent: Friday, 19 December 2008 1:18 PM To: amibroker@xxxxxxxxx ps.comSubject: [amibroker] Re: Automation to load an AFL and run Portfolio Optimization To add to my confusion, sometimes the below code does produce syntax errors when applied. Other times it runs smoothly (albeit with a single optimization step). I'm not doing anything different, so I have no idea why it fluctuates. --- In amibroker@xxxxxxxxx <mailto:amibroker% 40yahoogroups. com>
ps.com, "ozzyapeman" <zoopfree@xx .> wrote: > > The simplified code below runs without any syntax error. However, > instead of optimizing through all 100 steps, it only does a single step. > Any idea why doesn't it do all 100 steps, as coded in the Simple MA > Cross afl?: > > > //---------- --------- --------- --------- --------- --------- ---\ > ------ > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > //---------- --------- --------- --------- --------- --------- ---\ > ------ > > EnableScript( "jscript" ); > <% > > database = "C:\\Program Files\\Amibroker\ \Data"; > formula_1 = "C:\\Simple MA Cross.afl"; > > AB = new ActiveXObject( "Broker.Application " ); > AB.LoadDatabase( database ); > AA = AB.Analysis; > > AA.LoadFormula( formula_1 ); // load formula from
external > file > > AA.ApplyTo = 1; // use current symbol > AA.RangeMode = 3; // use 'From' and 'To' dates > AA.RangeFromDate = "11/01/2005" ; > AA.RangeToDate = "12/31/2005" ; > AA.Optimize( 0 ); // run Optimize for the > portfolio, which is just one symbol > //AA.Backtest( ); > > %> > //---------END AUTOMATION > AFL--------- --------- --------- --------- --------- ---- > > > > --- In amibroker@xxxxxxxxx <mailto:amibroker% 40yahoogroups. com> ps.com, "ozzyapeman" <zoopfree@> wrote: > > > > Hoping someone can chime in here to let me know what I might be doing > > wrong. I'm currently testing out some simple automation code. The > > objective is to load an AFL and then run a portfolio optimization for > a > > specified date range. > > > > I am using a simple MA
crossover trading system for testing purposes. > I > > can of course optimize it manually in AA without any problem. But when > I > > try to run and control that optimization from a piece of automation > > code, I get a whole range of syntax errors. > > > > Below are the two *separate* AFL codes. I imagine the first AFL has > some > > errors in it that is preventing the actions from being carried out > > properly. What am I missing or doing wrong? Any input much > appreciated: > > > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > > > EnableScript( "jscript" ); >
> <% > > > > database = "C:\\Program Files\\Amibroker\ \Data"; > > formula_1 = "C:\\Simple MA Cross.afl"; > > > > AB = new ActiveXObject( "Broker.Application " ); > > AB.LoadDatabase( database ); > > AA = AB.Analysis; > > Stk = AB.Stocks > > Doc = AB.Documents. Open( Stk.Ticker ); > > > > AA.LoadFormula( formula_1 ); // load formula from > external > > file > > > > AA.ApplyTo = 1; // use current symbol > > AA.RangeMode = 3; // use 'From' and 'To' dates > > AA.RangeFromDate = "11/01/2005" ; > > AA.RangeToDate = "12/31/2005" ; > > AA.Optimize( 0 ); // run Optimize for the > > portfolio, which is just one symbol > > AA.Backtest( ); > > > > %> > > //---------END AUTOMATION > > AFL--------- --------- --------- --------- ---------
---- > > > > > > > > > > > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > // Simple MA Cross: THIS IS A SEPARATE AFL SAVED AT: "C:\\Simple MA > > Cross.afl" > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > > > > > FastMALength = Optimize("FastMALen gth", 1, 1, 100, 1); > > SlowMALength = 20; > > > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > // BACKTESTER SETTINGS > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > ------ > > > > SetBarsRequired( 10000, 0); > > SetOption("AllowPos itionShrinking" , False); > >
SetOption("AllowSam eBarExit" , True); > > SetOption("Commissi onAmount" , 3.00); > > SetOption("Commissi onMode", 3); > > SetOption("FuturesM ode", 1); > > SetOption("InitialE quity", 100000); > > SetOption("Interest Rate",0); > > SetOption("MaxOpenP ositions" , 1); > > SetOption("MinPosVa lue", 0); > > SetOption("MinShare s", 1); > > SetOption("PriceBou ndChecking" , False ); > > SetOption("ReverseS ignalForcesExit" , False); > > SetOption("UsePrevB arEquityForPosSi zing", True ); > > SetTradeDelays( 0, 0, 0, 0); > > SetPositionSize( 1, spsShares); > > TickSize = 0.0001; // The minimum price move of symbol for > Forex > > PointValue = 100000; > > RoundLotSize = 1; > > MarginDeposit = 2500; > > BuyPrice = SellPrice = ShortPrice = CoverPrice = Close; > > >
> > //---------- --------- --------- --------- --------- --------- ---\ > \ > > -- > > // TRADING SYSTEM > > > //---------- --------- --------- --------- --------- --------- ---\ > \ > > -- > > > > FastMA = MA( C, FastMALength ); > > SlowMA = MA( C, SlowMALength ); > > Buy = Cross( FastMA, SlowMA ); > > Sell = Cross( SlowMA, FastMA ); > > >
- 1j.
-
Fri Dec 19, 2008 1:59 am (PST)
You can only automate AA from OUTSIDE of AA. I.e. the script should be EXTERNAL JScript, not an AFL run from AA befcause it will be immediatelly overwritten in first iteration. Best regards, Tomasz Janeczko amibroker.com ----- Original Message ----- From: ozzyapeman To: amibroker@xxxxxxxxx ps.com Sent: Friday, December 19, 2008 3:12 AM Subject: [amibroker] Re: Automation to load an AFL and run Portfolio Optimization The simplified code below runs without any syntax error. However, instead of optimizing through all 100 steps, it only does a single step. Any idea why doesn't it do all 100 steps, as coded in the Simple MA Cross afl?: //---------- --------- --------- --------- --------- --------- --- // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization //---------- --------- ---------
--------- --------- --------- --- EnableScript( "jscript" ); <% database = "C:\\Program Files\\Amibroker\ \Data"; formula_1 = "C:\\Simple MA Cross.afl"; AB = new ActiveXObject( "Broker.Application " ); AB.LoadDatabase( database ); AA = AB.Analysis; AA.LoadFormula( formula_1 ); // load formula from external file AA.ApplyTo = 1; // use current symbol AA.RangeMode = 3; // use 'From' and 'To' dates AA.RangeFromDate = "11/01/2005" ; AA.RangeToDate = "12/31/2005" ; AA.Optimize( 0 ); // run Optimize for the portfolio, which is just one symbol //AA.Backtest( ); %> //---------END AUTOMATION AFL--------- --------- --------- --------- --------- ---- --- In amibroker@xxxxxxxxx ps.com, "ozzyapeman" <zoopfree@xx .> wrote: > > Hoping someone can chime in here to let me know what I might
be doing > wrong. I'm currently testing out some simple automation code. The > objective is to load an AFL and then run a portfolio optimization for a > specified date range. > > I am using a simple MA crossover trading system for testing purposes. I > can of course optimize it manually in AA without any problem. But when I > try to run and control that optimization from a piece of automation > code, I get a whole range of syntax errors. > > Below are the two *separate* AFL codes. I imagine the first AFL has some > errors in it that is preventing the actions from being carried out > properly. What am I missing or doing wrong? Any input much appreciated: > > //---------- --------- --------- --------- --------- --------- ---\ > ------ > // AUTOMATION CODE: Load an AFL and Run a Portfolio Optimization > //---------- --------- --------- ---------
--------- --------- ---\ > ------ > > EnableScript( "jscript" ); > <% > > database = "C:\\Program Files\\Amibroker\ \Data"; > formula_1 = "C:\\Simple MA Cross.afl"; > > AB = new ActiveXObject( "Broker.Application " ); > AB.LoadDatabase( database ); > AA = AB.Analysis; > Stk = AB.Stocks > Doc = AB.Documents. Open( Stk.Ticker ); > > AA.LoadFormula( formula_1 ); // load formula from external > file > > AA.ApplyTo = 1; // use current symbol > AA.RangeMode = 3; // use 'From' and 'To' dates > AA.RangeFromDate = "11/01/2005" ; > AA.RangeToDate = "12/31/2005" ; > AA.Optimize( 0 ); // run Optimize for the > portfolio, which is just one symbol > AA.Backtest( ); > > %> > //---------END AUTOMATION > AFL--------- --------- --------- --------- --------- ---- > > >
> > > //---------- --------- --------- --------- --------- --------- ---\ > ------ > // Simple MA Cross: THIS IS A SEPARATE AFL SAVED AT: "C:\\Simple MA > Cross.afl" > //---------- --------- --------- --------- --------- --------- ---\ > ------ > > > FastMALength = Optimize("FastMALen gth", 1, 1, 100, 1); > SlowMALength = 20; > > //---------- --------- --------- --------- --------- --------- ---\ > ------ > // BACKTESTER SETTINGS > //---------- --------- --------- --------- --------- --------- ---\ > ------ > > SetBarsRequired( 10000, 0); > SetOption("AllowPos itionShrinking" , False); > SetOption("AllowSam eBarExit" , True); > SetOption("Commissi onAmount" , 3.00); > SetOption("Commissi onMode", 3); > SetOption("FuturesM ode", 1); > SetOption("InitialE quity", 100000); >
SetOption("Interest Rate",0); > SetOption("MaxOpenP ositions" , 1); > SetOption("MinPosVa lue", 0); > SetOption("MinShare s", 1); > SetOption("PriceBou ndChecking" , False ); > SetOption("ReverseS ignalForcesExit" , False); > SetOption("UsePrevB arEquityForPosSi zing", True ); > SetTradeDelays( 0, 0, 0, 0); > SetPositionSize( 1, spsShares); > TickSize = 0.0001; // The minimum price move of symbol for Forex > PointValue = 100000; > RoundLotSize = 1; > MarginDeposit = 2500; > BuyPrice = SellPrice = ShortPrice = CoverPrice = Close; > > //---------- --------- --------- --------- --------- --------- ---\ > -- > // TRADING SYSTEM > //---------- --------- --------- --------- --------- --------- ---\ > -- > > FastMA = MA( C, FastMALength ); > SlowMA = MA( C, SlowMALength ); > Buy = Cross( FastMA, SlowMA ); > Sell =
Cross( SlowMA, FastMA ); >
- 2a.
-
Thu Dec 18, 2008 6:00 pm (PST)
My last post seems to have been lost. To summarize, make sure that the following line is present and does not have any embedded spaces between the quotes. Yahoo tends to stuff in extra blank spaces into these posts. ab = CreateObject( "Broker.Applicat ion"); Mike --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> wrote: > > When I put the beginning of that script in I get messages like: > COM/object handle is null > COM object variable is not initialized or has invalid type. > Its highlighting both the aa = line and the wl= line. > Am i doing something wrong by just putting it in there? > is there another way to get the active watchlist number? Cuz that way I could > just select all in the AA and through the code get the active watchlist number and
extract the symbols from there. I just dont know how to get the active watchlist number of the symbol being analyzed. > > > --- On Thu, 12/18/08, Mike <sfclimbers@ ...> wrote: > From: Mike <sfclimbers@ ...> > Subject: [amibroker] Re: scrolling through a watchlist > To: amibroker@xxxxxxxxx ps.com> Date: Thursday, December 18, 2008, 3:48 PM > > > > > > > > > > > > Just make any number of watchlists that you want, each with exactly > > two symbols. Then, select whichever list you want to work against in > > the AA window and run the following script. Select a different > > watchlist in the AA window and run the script again. Repeat for as > > many lists as you have. >
> > > There may be a cleaner way for getting the active watchlist. But the > > method used should work. > > > > Mike > > > > -- > > Buy = Sell = 0; > > > > ab = CreateObject( "Broker.Applicat ion"); > > aa = ab.Analysis; > > wl = aa.Filter(0, "watchlist") ; > > > > list = CategoryGetSymbols( categoryWatchlis t, wl); > > ticker1 = StrExtract(list, 0); > > ticker2 = StrExtract(list, 1); > > > > _TRACE(CategoryGetN ame(categoryWatc hlist, wl) + ": " + ticker1 + " > > and " + ticker2); > > > > if (Name() == ticker1) { > > SetForeign(ticker2) ; > > // Read whatever you want from second data, e.g. > > foreignClose = Close; > >
RestorePriceArrays( ); > > > > Buy = foreignClose > Close; > > Sell = foreignClose < Close; > > } > > > > if (Name() == ticker2) { > > SetForeign(ticker1) ; > > // Read whatever you want from first data, e.g. > > foreignHigh = High; > > RestorePriceArrays( ); > > > > Buy = foreignHigh > High; > > Sell = foreignHigh < High; > > } > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> wrote: > > > > > > Your totally right actually. As long as the list is finite that > > should be fine. Im such a newbie at this coding though so the > > simplest things are difficult. > > > How do I say: > > > If current ticker belongs
to watchlist1, then ticker1=F and > > ticker2=GM. > > > > > > Ticker1 and Ticker2 are parts of my code. Then I figure I do it > > this way. Next writing if current ticker belongs to watchlist2 > > then .... > > > Then I run the code. I think that way would be the best. > > > > > > --- On Wed, 12/17/08, Mike <sfclimbers@ ...> wrote: > > > From: Mike <sfclimbers@ ...> > > > Subject: [amibroker] Re: scrolling through a watchlist > > > To: amibroker@xxxxxxxxx ps.com > > > Date: Wednesday, December 17, 2008, 11:57 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > What's wrong with the "both symbols in a single list" > > approach? I > > > > > > believe that the assumption is that you would have multiple lists, > > > > > > each with exactly two symbols (as you had originally suggested). > > Where > > > > > > are you running into problems? > > > > > > > > > > > > If it's a case of the script logic not being applicable from one > > pair > > > > > > to the next, then the whole hard coding of names problem goes away > > > > > > because each script would be customized to a pair and you could > > hard > > > > > > code the names after all, as per Tomasz's example.
Otherwise, were > > you > > > > > > not able to dig out the names correctly using StrExtract? > > > > > > > > > > > > Mike > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> > > wrote: > > > > > > > > > > > > > > Ya that code isn't working very well. Also all the 1st part of > > the > > > > > > pairs in one watchlists and the seconds in a second list can't > > really > > > > > > work because its alphabetizing each list. So when I enter the > > orders > > > > > > for the first list its fine, but then I get
to the second list and > > it > > > > > > alphabetizes that so it ruins the order with the first list. This > > is > > > > > > tough man! > > > > > > > > > > > > > > --- On Mon, 12/15/08, Mike <sfclimbers@ ...> wrote: > > > > > > > From: Mike <sfclimbers@ ...> > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > Date: Monday, December 15, 2008, 8:21 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sorry, it was not clear that you were wanting to act on both > > > > > > symbols. > > > > > > > > > > > > > > I thought you were trying to buy from the first list only, based > > on > > > > > > >
> > > > > > > signals/confirmatio n from the second list. > > > > > > > > > > > > > > > > > > > > > > > > > > > > As you've now discovered, the Foreign functionality allows access > > to > > > > > > > > > > > > > > foreign data, but it does not allow you to generate signals for > > that > > > > > > > > > > > > > > foreign symbol. To act on the symbol, it must appear in the > > > > > > watchlist > > > > > > > > > > > > > > and be processed in turn. > > > > >
> > > > > > > > > > > > > > > > > > > > > > > Tomasz has answered your question, which is the route that you > > were > > > > > > > > > > > > > > originally heading down. But, he did not address the hard coded > > > > > > names > > > > > > > > > > > > > > that you were trying to avoid. > > > > > > > > > > > > > > > > > > > > > > > > > > > > To avoid the hard coded names of Tomasz's answer, Dingo gave you > > the > > > > > > > > > >
> > > > answer, which is also what I used in my earlier sample. > > > > > > Specifically; > > > > > > > > > > > > > > use StrExtract from the watchlist. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Putting it all togeather... > > > > > > > > > > > > > > > > > > > > > > > > > > > > Again the symbols will be evaluated in alphabetical order, but > > > > > > > > > > > > > > CategoryGetSymbols will give the ordering as they appear in the > > >
> > > > > > > > > > > watchlist (i.e. not necessarily alphabetized) . So, if it > > matters, > > > > > > > > > > > > > > populate your list such that the symbol you want to to be treated > > as > > > > > > > > > > > > > > first actually appears first in the watchlist, even though the > > > > > > second > > > > > > > > > > > > > > may get run through the script before the first one. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = Sell = Short = Cover =
0; > > > > > > > > > > > > > > > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlis t, 1); > > > > > > > > > > > > > > first = StrExtract(list, 0); > > > > > > > > > > > > > > opposite = StrExtract(list, 1); > > > > > > > > > > > > > > > > > > > > > > > > > > > > _TRACE(first + " and " + opposite); > > > > > > > > > > > > > > > > > > > > > > > > > > > > if
(Name() == first) { > > > > > > > > > > > > > > SetForeign(opposite ); > > > > > > > > > > > > > > // Read whatever you want from opposite data > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = ... enter long for first symbol > > > > > > > > > > > > > > Sell = ... exit long for first symbol; > > > > > > > > > > > > > > } > > > > > > > > >
> > > > > > > > > > > > > > > > > > > if (Name() == opposite) { > > > > > > > > > > > > > > SetForeign(first) ; > > > > > > > > > > > > > > // Read whatever you want from first data > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = ... enter long for opposite symbol > > > > > > > > > > > > > > Sell = ... exit long for opposite symbol; > > > >
> > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks so much. I tried it this way and I almost got it. Im > > > > > > running > > > >
> > > > > > > > > > it on the first watchlist and then using the setforeign > > (opposite ); > > > > > > > > > > > > > > function. But Im having a problem. There are variables I declared > > > > > > > > > > > > > > early in the code. Then I say setforeign(opposite ); Then put in > > buy > > > > > > > > > > > > > > conditions based on those variables but I get no buys or sells in > > > > > > > > > > > > > > this foreign ticker. Only buys and sells in the first watchlist. > > How > > > > > > > > > > >
> > > come? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- On Sun, 12/14/08, Mike <sfclimbers@ ...> wrote: > > > > > > > > > > > > > > > From: Mike <sfclimbers@ ...> > > > > > > > > > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > > > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > > > > > > > > > Date: Sunday, December 14, 2008, 2:31 AM > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If you want to go down that route, you might > > consider > > > > > > > > > > > > > > just two lists, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > each with one side of the pair for each pair, rather than > > separate > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > lists per pair. >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > e.g. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > instead of: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList1 = A,X > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > watchList2 = M,Y > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList3 = I,Z > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > do: > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > watchList1 = A,I,M > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList2 = X,Z,Y > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Then you can run your script on watchList1, making indexed > > > > > > > > > > > > > > reference > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > to the symbols in watchList2 as shown below. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Note, however, that I rearanged watchList1 to be in > > alphabetical > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > order before adding the indexed opposite
symbols in watchList2. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > It appears that AmiBroker iterates through the active watchList > > in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > alphabetical order (regardless of the order that the symbols > > were > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > added to the list). So, you must ensure that the indexed > > opposites > > > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList2 will match their partner based on the assumption > > that > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > partners were sorted before being processed by your script. >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If your lists are expected to be relatively unchanging, this > > may > > > > > > be > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > an acceptable bit of book keeping. > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = Sell = Short = Cover = 0; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Get opposites from second list, ordered as originally > > entered. > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > list = CategoryGetSymbols( categoryWatchlis t, 2); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Get alphabetized index of current symbol from first list. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > index = status("stocknum" ); > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Extract opposite for the current symbol. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > opposite = StrExtract(list, index); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > _TRACE(Name( ) + " and " + opposite); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetForeign(opposite ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Do whatever you want with foreign opposite > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx
ps.com, jim fenster > > <normanjade@ ...> > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > thanks yes Im looking for something like this. In the end I > > have > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > code that at the beginning designates two symbols. > > ticker1=ibm , > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ticker2=ge for example. Then I run the code. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > The thing is, I have a few of them and I dont want to > > manually > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > enter them. Instead I was thinking of putting a couple of
> > tickers > > > > > > > > > > > > > > per > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchlist. Then trying to call upon them by saying take each > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchlist and make first symbol in watchlist = ticker1 and then > > > > > > 2nd > > > > > > > > > > > > > > = > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > ticker2. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Then run code. Then take watchlist 2 and do the same thing > > and > > > > > > > > > > > > > > run > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > code. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Is it possible to do that?
How would I code that? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- On Wed, 12/10/08, Barry Scarborough <razzbarry@ ..> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > From: Barry Scarborough <razzbarry@ ..> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Date: Wednesday, December 10, 2008, 11:32 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I an not sure what you are looking for. This > > program > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > runs through a > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > watch list and processes the the symbols individually. You > > can > > > > > > do > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > all > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > sorts of things within SetForeign() and RestorePriceArrays(
); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Barry > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _SECTION_BEGIN( "Using SetForeign") ; > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetChartOptions( 0, chartShowArrows | chartShowDates ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Filename = StrLeft(_DEFAULT_ NAME(),StrLen( _DEFAULT_ NAME())- > > 2) > > > > > > ; > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _N(Title = filename + StrFormat(" - {{DATE}} {{VALUES}} ")); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // parameters > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Watchlist = 10; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // create comma separated list of symbols in the watch list > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlist, watchlist ); > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > /* > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > this gets the symbol name and the for loop will process every > > > > > > one > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > the watch list for each
bar. In an auto trading program it > > will > > > > > > > > > > > > > > run > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > every time a tick is received > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > */ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ ) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > { > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetForeign(sym) ;
// switches to the symbol array, > > OHLCVOi > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > /* > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > put your code here. You can
create an include that will > > define > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > parameters for each symbol you have optimized and dynamically > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > switch > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > the parameters for the indicators. You can also dynamically > > > > > > > > > > > > > > switch > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > a different system for some symbols. Your imagination is the > > > > > > > > > > > > > > limit. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > */ > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _SECTION_END( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster > > <normanjade@ ...> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If you have a code that works on two symbols, is it > > possible > > > > > > > > > > > > > > call > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > upon the first and second tickers in the watchlist without > > > > > > having > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > actually manually write the tickers? Like referring to them > > as > > > > > > > >
> > > > > > 1st > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > and 2nd ticker in this specific watchlist. possible? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
- 2b.
-
Thu Dec 18, 2008 8:11 pm (PST)
Ya that works but I have to test one watchlist at a time. Is there no way to say test this on watchlist 1 and 2 at the same time? Not just 1? If I do all symbols it doesn't test properly. --- On Thu, 12/18/08, Mike < sfclimbers@xxxxxx com> wrote: From: Mike < sfclimbers@xxxxxx com> Subject: [amibroker] Re: scrolling through a watchlist To: amibroker@xxxxxxxxx ps.comDate: Thursday, December 18, 2008, 9:00 PM My last post seems to have been lost. To summarize, make sure that the following line is present and does not have any embedded spaces between the quotes. Yahoo tends to stuff in extra blank spaces into these posts. ab = CreateObject(
"Broker.Applicat ion"); Mike --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> wrote: > > When I put the beginning of that script in I get messages like: > COM/object handle is null > COM object variable is not initialized or has invalid type. > Its highlighting both the aa = line and the wl= line. > Am i doing something wrong by just putting it in there? > is there another way to get the active watchlist number? Cuz that way I could > just select all in the AA and through the code get the active watchlist number and extract the symbols from there. I just dont know how to get the active watchlist number of the symbol being analyzed. > > > --- On Thu, 12/18/08, Mike <sfclimbers@ ...> wrote: > From: Mike <sfclimbers@ ...> > Subject: [amibroker] Re:
scrolling through a watchlist > To: amibroker@xxxxxxxxx ps.com > Date: Thursday, December 18, 2008, 3:48 PM > > > > > > > > > > > > Just make any number of watchlists that you want, each with exactly > > two symbols. Then, select whichever list you want to work against in > > the AA window and run the following script. Select a different > > watchlist in the AA window and run the script again. Repeat for as > > many lists as you have. > > > > There may be a cleaner way for getting the active watchlist. But the > > method used should work. > > > > Mike > > > >
-- > > Buy = Sell = 0; > > > > ab = CreateObject( "Broker.Applicat ion"); > > aa = ab.Analysis; > > wl = aa.Filter(0, "watchlist") ; > > > > list = CategoryGetSymbols( categoryWatchlis t, wl); > > ticker1 = StrExtract(list, 0); > > ticker2 = StrExtract(list, 1); > > > > _TRACE(CategoryGetN ame(categoryWatc hlist, wl) + ": " + ticker1 + " > > and " + ticker2); > > > > if (Name() == ticker1) { > > SetForeign(ticker2) ; > > // Read whatever you want from second data, e.g. > > foreignClose = Close; > > RestorePriceArrays( ); > > > > Buy
= foreignClose > Close; > > Sell = foreignClose < Close; > > } > > > > if (Name() == ticker2) { > > SetForeign(ticker1) ; > > // Read whatever you want from first data, e.g. > > foreignHigh = High; > > RestorePriceArrays( ); > > > > Buy = foreignHigh > High; > > Sell = foreignHigh < High; > > } > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> wrote: > > > > > > Your totally right actually. As long as the list is finite that > > should be fine. Im such a newbie at this coding though so the > > simplest things are
difficult. > > > How do I say: > > > If current ticker belongs to watchlist1, then ticker1=F and > > ticker2=GM. > > > > > > Ticker1 and Ticker2 are parts of my code. Then I figure I do it > > this way. Next writing if current ticker belongs to watchlist2 > > then .... > > > Then I run the code. I think that way would be the best. > > > > > > --- On Wed, 12/17/08, Mike <sfclimbers@ ...> wrote: > > > From: Mike <sfclimbers@ ...> > > > Subject: [amibroker] Re: scrolling through a watchlist > > > To: amibroker@xxxxxxxxx ps.com > > > Date: Wednesday, December 17, 2008, 11:57 PM > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > What's wrong with the "both symbols in a single list" > > approach? I > > > > > > believe that the assumption is that you would have multiple lists, > > > > > > each with exactly two symbols (as you had originally suggested). > > Where > > > > > > are you running into problems? > > > > > > > > > > > > If it's a case of the script logic not
being applicable from one > > pair > > > > > > to the next, then the whole hard coding of names problem goes away > > > > > > because each script would be customized to a pair and you could > > hard > > > > > > code the names after all, as per Tomasz's example. Otherwise, were > > you > > > > > > not able to dig out the names correctly using StrExtract? > > > > > > > > > > > > Mike > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> >
> wrote: > > > > > > > > > > > > > > Ya that code isn't working very well. Also all the 1st part of > > the > > > > > > pairs in one watchlists and the seconds in a second list can't > > really > > > > > > work because its alphabetizing each list. So when I enter the > > orders > > > > > > for the first list its fine, but then I get to the second list and > > it > > > > > > alphabetizes that so it ruins the order with the first list. This > > is > > > > > > tough man! >
> > > > > > > > > > > > > --- On Mon, 12/15/08, Mike <sfclimbers@ ...> wrote: > > > > > > > From: Mike <sfclimbers@ ...> > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > Date: Monday, December 15, 2008, 8:21 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sorry, it was not clear that you were wanting to act on both > > > > > > symbols. > > > > > > > > > > >
> > > I thought you were trying to buy from the first list only, based > > on > > > > > > > > > > > > > > signals/confirmatio n from the second list. > > > > > > > > > > > > > > > > > > > > > > > > > > > > As you've now discovered, the Foreign functionality allows access > > to > > > > > > > > > > > > > > foreign data, but it does not allow you to generate signals for > > that > > > > > > >
> > > > > > > foreign symbol. To act on the symbol, it must appear in the > > > > > > watchlist > > > > > > > > > > > > > > and be processed in turn. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Tomasz has answered your question, which is the route that you > > were > > > > > > > > > > > > > > originally heading down. But, he did not address the hard coded > > > >
> > names > > > > > > > > > > > > > > that you were trying to avoid. > > > > > > > > > > > > > > > > > > > > > > > > > > > > To avoid the hard coded names of Tomasz's answer, Dingo gave you > > the > > > > > > > > > > > > > > answer, which is also what I used in my earlier sample. > > > > > > Specifically; > > > > > > > > > > > > > > use StrExtract
from the watchlist. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Putting it all togeather... > > > > > > > > > > > > > > > > > > > > > > > > > > > > Again the symbols will be evaluated in alphabetical order, but > > > > > > > > > > > > > > CategoryGetSymbols will give the ordering as they appear in the > > > > > > > > > > > >
> > watchlist (i.e. not necessarily alphabetized) . So, if it > > matters, > > > > > > > > > > > > > > populate your list such that the symbol you want to to be treated > > as > > > > > > > > > > > > > > first actually appears first in the watchlist, even though the > > > > > > second > > > > > > > > > > > > > > may get run through the script before the first one. > > > > > > > > > > > > > > > > >
> > > > > > > > > > > Buy = Sell = Short = Cover = 0; > > > > > > > > > > > > > > > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlis t, 1); > > > > > > > > > > > > > > first = StrExtract(list, 0); > > > > > > > > > > > > > > opposite = StrExtract(list, 1); > > > > > > > > > > > > > > > > > >
> > > > > > > > > > _TRACE(first + " and " + opposite); > > > > > > > > > > > > > > > > > > > > > > > > > > > > if (Name() == first) { > > > > > > > > > > > > > > SetForeign(opposite ); > > > > > > > > > > > > > > // Read whatever you want from opposite data > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > >
> > > > > > > > > > > > > > > > > > > > > > Buy = ... enter long for first symbol > > > > > > > > > > > > > > Sell = ... exit long for first symbol; > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > if (Name() == opposite) { > > > > > > > > > > > >
> > SetForeign(first) ; > > > > > > > > > > > > > > // Read whatever you want from first data > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = ... enter long for opposite symbol > > > > > > > > > > > > > > Sell = ... exit long for opposite symbol; > > > > > > > > > > > >
> > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
Thanks so much. I tried it this way and I almost got it. Im > > > > > > running > > > > > > > > > > > > > > it on the first watchlist and then using the setforeign > > (opposite ); > > > > > > > > > > > > > > function. But Im having a problem. There are variables I declared > > > > > > > > > > > > > > early in the code. Then I say setforeign(opposite ); Then put in > > buy > > > > > > > > > > > > > > conditions based on those variables
but I get no buys or sells in > > > > > > > > > > > > > > this foreign ticker. Only buys and sells in the first watchlist. > > How > > > > > > > > > > > > > > come? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- On Sun, 12/14/08, Mike <sfclimbers@ ...> wrote: > > > > > > > > > > > > > > > From: Mike <sfclimbers@ ...> > > > >
> > > > > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > > > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > > > > > > > > > Date: Sunday, December 14, 2008, 2:31 AM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > If you want to go down that route, you might > > consider > > > > > > > > > > > > > > just two lists, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > each with one side of the pair for each pair, rather than > > separate > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > lists per pair. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > e.g. > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > instead of: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList1 = A,X > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList2 = M,Y > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList3 = I,Z >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > do: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList1 = A,I,M > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > watchList2 = X,Z,Y > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Then you can run your script on watchList1, making indexed > > > > > > > > > > > > > > reference > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > to the symbols in watchList2 as shown below. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Note, however, that I rearanged watchList1 to be in > > alphabetical > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > order before adding the indexed opposite symbols in watchList2. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > It appears that AmiBroker iterates through the active watchList >
> in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > alphabetical order (regardless of the order that the symbols > > were > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > added to the list). So, you must ensure that the indexed > > opposites > > > > > > > > > > > > > > in > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > watchList2 will match their partner based on the assumption > > that > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > partners were sorted before being processed by your script. > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If your lists are expected to be relatively unchanging, this > > may > > > > > > be > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > an acceptable bit of book keeping. > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = Sell = Short = Cover = 0; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > // Get opposites from second list, ordered as originally > > entered. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlis t, 2); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > // Get alphabetized index of current symbol from first list. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > index = status("stocknum" ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > // Extract opposite for the current symbol. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > opposite = StrExtract(list, index); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _TRACE(Name( ) + " and " +
opposite); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetForeign(opposite ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Do whatever you want with foreign opposite > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster > > <normanjade@ ...> > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > thanks yes Im looking for something like this. In the end I > > have > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > code that at the beginning designates two symbols. > > ticker1=ibm , > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > ticker2=ge for example. Then I run the code. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > The thing is, I have a few of them and I dont want to > > manually > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > enter them. Instead I was thinking of putting a couple of > > tickers > > >
> > > > > > > > > > > per > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchlist. Then trying to call upon them by saying take each > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchlist and make first symbol in watchlist = ticker1 and then > > > > > > 2nd > > > > > > > > > >
> > > > = > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ticker2. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Then run code. Then take watchlist 2 and do the same thing > > and > > > > > > > > > > > > > > run > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > code. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Is it possible to do that? How would I code that? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > --- On Wed, 12/10/08, Barry Scarborough <razzbarry@ ..> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > From: Barry Scarborough <razzbarry@ ..> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Date: Wednesday, December 10, 2008, 11:32 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > I an not sure what you are looking for. This > > program > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > runs through a > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > watch list and processes the the symbols individually. You > > can > > > > > > do > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > all > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > sorts of things within SetForeign() and RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Barry > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _SECTION_BEGIN( "Using SetForeign") ; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > SetChartOptions( 0, chartShowArrows | chartShowDates ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Filename = StrLeft(_DEFAULT_ NAME(),StrLen( _DEFAULT_ NAME())- > > 2) > > > > > > ; > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _N(Title = filename + StrFormat(" - {{DATE}} {{VALUES}} ")); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // parameters > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Watchlist = 10; > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > // create comma separated list of symbols in the watch list > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlist, watchlist ); > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > /* > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > this gets the symbol name and the for loop will process every > > > > > > one > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > the watch list for each bar. In an auto trading program it > > will > > > > > > > > > > > > > > run > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > every time a tick is received > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > */ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ ) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > { > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetForeign(sym) ; // switches to the symbol array, > > OHLCVOi > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > /* > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > put your code here. You can create an include that will > > define > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > parameters for each symbol you have optimized and dynamically > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > switch > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > the parameters for the indicators. You can also dynamically > > > > > > > > > > > > > > switch > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > to > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > a different system for some symbols. Your imagination is the > > > > > > > > > > > > > > limit. > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > */ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > _SECTION_END( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster > > <normanjade@ ...> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If you
have a code that works on two symbols, is it > > possible > > > > > > > > > > > > > > call > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > upon the first and second tickers in the watchlist without > > > > > > having > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > actually manually write the tickers? Like referring to them > > as > > > > > > >
> > > > > > > 1st > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > and 2nd ticker in this specific watchlist. possible? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
- 2c.
-
Fri Dec 19, 2008 12:51 am (PST)
You can have a look at BatMan in the files section for running your script as a batch over different watchlists each time. Or, if you just want a single watchlist of multiple pairs upon which you make a single AmiBroker execution, then just add a loop to the code Make sure that the pairs are all added to a single list in paired order. e.g. ticker1 ticker2 ticker1 ticker2 ... This will not be practical if you have many many pairs. But, for a reasonably small set of pairs, it will do the job. Mike Buy = Sell = 0; ab = CreateObject( "Broker.Applicat ion"); aa = ab.Analysis; wl = aa.Filter(0, "watchlist") ; list = CategoryGetSymbols( categoryWatchlis t, wl); for (i = 0; (ticker1 = StrExtract(list, i)) != ""; i++) { if ((ticker2 = StrExtract(list, ++i)) == "") { break; } _TRACE(CategoryGetN ame(categoryWatc hlist, wl)
+ ": " + ticker1 + " and " + ticker2); if (Name() == ticker1) { SetForeign(ticker2) ; // Read whatever you want from second data, e.g. foreignClose = Close; RestorePriceArrays( ); Buy = foreignClose > Close; Sell = foreignClose < Close; } if (Name() == ticker2) { SetForeign(ticker1) ; // Read whatever you want from first data, e.g. foreignHigh = High; RestorePriceArrays( ); Buy = foreignHigh > High; Sell = foreignHigh < High; } } --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> wrote: > > Ya that works but I have to test one watchlist at a time. Is there no way to say test this on watchlist 1 and 2 at the same time? Not just 1? If I do all symbols it doesn't test properly. > > --- On Thu, 12/18/08, Mike <sfclimbers@ ...>
wrote: > From: Mike <sfclimbers@ ...> > Subject: [amibroker] Re: scrolling through a watchlist > To: amibroker@xxxxxxxxx ps.com> Date: Thursday, December 18, 2008, 9:00 PM > > > > > > > > > > > > My last post seems to have been lost. > > To summarize, make sure that the following line is present and does > > not have any embedded spaces between the quotes. Yahoo tends to stuff > > in extra blank spaces into these posts. > > > > ab = CreateObject( "Broker.Applicat ion"); > > > > Mike > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> wrote: > > > > > > When I put the beginning of
that script in I get messages like: > > > COM/object handle is null > > > COM object variable is not initialized or has invalid type. > > > Its highlighting both the aa = line and the wl= line. > > > Am i doing something wrong by just putting it in there? > > > is there another way to get the active watchlist number? Cuz that > > way I could > > > just select all in the AA and through the code get the active > > watchlist number and extract the symbols from there. I just dont know > > how to get the active watchlist number of the symbol being analyzed. > > > > > > > > > --- On Thu, 12/18/08, Mike <sfclimbers@ ...> wrote: > > > From: Mike <sfclimbers@ ...> > > > Subject: [amibroker] Re: scrolling through a
watchlist > > > To: amibroker@xxxxxxxxx ps.com > > > Date: Thursday, December 18, 2008, 3:48 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Just make any number of watchlists that you want, each > > with exactly > > > > > > two symbols. Then, select whichever list you want to work against in > > > > > > the AA window and run the following script. Select a different > > > > > > watchlist in the AA window and run the script again. Repeat for as > > > > > > many lists as you have. > > > > > > >
> > > > > There may be a cleaner way for getting the active watchlist. But the > > > > > > method used should work. > > > > > > > > > > > > Mike > > > > > > > > > > > > -- > > > > > > Buy = Sell = 0; > > > > > > > > > > > > ab = CreateObject( "Broker.Applicat ion"); > > > > > > aa = ab.Analysis; > > > > > > wl = aa.Filter(0, "watchlist") ; > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlis t, wl); > > > > > > ticker1 = StrExtract(list, 0); > > > > >
> ticker2 = StrExtract(list, 1); > > > > > > > > > > > > _TRACE(CategoryGetN ame(categoryWatc hlist, wl) + ": " + ticker1 + " > > > > > > and " + ticker2); > > > > > > > > > > > > if (Name() == ticker1) { > > > > > > SetForeign(ticker2) ; > > > > > > // Read whatever you want from second data, e.g. > > > > > > foreignClose = Close; > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > Buy = foreignClose > Close; > > > > > > Sell = foreignClose < Close; > > > > > > } > > > > > >
> > > > > > if (Name() == ticker2) { > > > > > > SetForeign(ticker1) ; > > > > > > // Read whatever you want from first data, e.g. > > > > > > foreignHigh = High; > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > Buy = foreignHigh > High; > > > > > > Sell = foreignHigh < High; > > > > > > } > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> > > wrote: > > > > > > > > > > > > > > Your totally right actually. As long as the list is finite that >
> > > > > should be fine. Im such a newbie at this coding though so the > > > > > > simplest things are difficult. > > > > > > > How do I say: > > > > > > > If current ticker belongs to watchlist1, then ticker1=F and > > > > > > ticker2=GM. > > > > > > > > > > > > > > Ticker1 and Ticker2 are parts of my code. Then I figure I do it > > > > > > this way. Next writing if current ticker belongs to watchlist2 > > > > > > then .... > > > > > > > Then I run the code. I think that way would be the best. > > > > > > > > > > > > > > --- On Wed, 12/17/08,
Mike <sfclimbers@ ...> wrote: > > > > > > > From: Mike <sfclimbers@ ...> > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > Date: Wednesday, December 17, 2008, 11:57 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > What's wrong with the "both symbols in a single list" > > > > > > approach? I > > > > > > > > > > > > > > believe that the assumption is that you would have multiple lists, > > > > > > > > > > > > > > each with exactly two symbols (as you had originally suggested). > > > > > > Where > > > > > > > > > > > > > > are you running into problems? > > > > > > > > > > > > > > > > > > > > > > > > > > > > If it's a case of the script logic not being applicable from one
> > > > > > pair > > > > > > > > > > > > > > to the next, then the whole hard coding of names problem goes away > > > > > > > > > > > > > > because each script would be customized to a pair and you could > > > > > > hard > > > > > > > > > > > > > > code the names after all, as per Tomasz's example. Otherwise, were > > > > > > you > > > > > > > > > > > > > > not able to dig out the names correctly using StrExtract? > > > > > > > > > > > > > > > > > > >
> > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Ya that code isn't working very well. Also all the 1st part of > > > > > > the > > > > > > > > > > > > > > pairs in one watchlists and the seconds in a second list can't > > > > > > really > > >
> > > > > > > > > > > work because its alphabetizing each list. So when I enter the > > > > > > orders > > > > > > > > > > > > > > for the first list its fine, but then I get to the second list and > > > > > > it > > > > > > > > > > > > > > alphabetizes that so it ruins the order with the first list. This > > > > > > is > > > > > > > > > > > > > > tough man! > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ---
On Mon, 12/15/08, Mike <sfclimbers@ ...> wrote: > > > > > > > > > > > > > > > From: Mike <sfclimbers@ ...> > > > > > > > > > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > > > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > > > > > > > > > Date: Monday, December 15, 2008, 8:21 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
Hi, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sorry, it was not clear that you were wanting to act on both > > > > > > > > > > > > > > symbols. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I thought you were trying to buy from the first list only, based > > > > > > on > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > signals/confirmatio n from the second list. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > As you've now discovered, the Foreign functionality allows > > access > > > > > > to > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > foreign data, but it does not allow you to generate signals for > > > > > > that > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > foreign symbol. To act on the symbol, it must appear in the > > > > > > > > > > > > > > watchlist > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > and be processed in turn. > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Tomasz has answered your question, which is the route that you > > > > > > were > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > originally heading down. But, he did not address the hard coded > > > > > > > > > > > > > > names > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > that
you were trying to avoid. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > To avoid the hard coded names of Tomasz's answer, Dingo gave you > > > > > > the > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > answer, which is also what I used in my earlier sample. > > > > > > > > > > > > > > Specifically; >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > use StrExtract from the watchlist. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Putting it all togeather... > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > Again the symbols will be evaluated in alphabetical order, but > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > CategoryGetSymbols will give the ordering as they appear in the > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchlist (i.e. not necessarily alphabetized) . So, if it > > > > > > matters, > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > populate your list such that the symbol you want to to be > > treated > > > > > > as > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > first actually appears first in the watchlist, even though the > > > > > > > > > > > > > > second > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > may get run through the script before the first one. > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = Sell = Short = Cover = 0; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlis t, 1); > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > first = StrExtract(list, 0); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > opposite = StrExtract(list, 1); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _TRACE(first + " and " + opposite); > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > if (Name() == first) { > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetForeign(opposite ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Read whatever you want from opposite data > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = ... enter long for first symbol > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sell = ... exit long for first symbol; > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > if (Name() == opposite) { > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetForeign(first) ; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Read whatever
you want from first data > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = ... enter long for opposite symbol > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sell = ... exit long for
opposite symbol; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks so much. I tried it this way and I almost got it. Im > > > > > > > > > > > > > > running > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > it on the first watchlist and then using the setforeign > > > > > > (opposite ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > function. But Im having a problem. There are variables I > > declared > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > early in the code. Then I say setforeign(opposite ); Then put in > > > > > > buy > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > conditions based on those variables but I get no buys or sells > > in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > this foreign ticker. Only buys and sells in the first watchlist. > > > > > > How > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > come? > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- On Sun, 12/14/08, Mike <sfclimbers@ ...> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > From: Mike <sfclimbers@ ...> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Date: Sunday, December 14, 2008, 2:31 AM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > If you want to go down that route, you might > > > > > > consider > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > just two lists, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > each with one side of the pair for each pair, rather
than > > > > > > separate > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > lists per pair. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > e.g. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > instead of: > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList1 = A,X > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList2 = M,Y > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList3 = I,Z > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > do: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList1 = A,I,M > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > watchList2 = X,Z,Y > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > Then you can run your script on watchList1, making indexed > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > reference > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > to the symbols in watchList2 as shown below. > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Note, however, that I rearanged watchList1 to be in > > > > > > alphabetical > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > order before adding the indexed opposite symbols in > > watchList2. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > It appears that AmiBroker iterates through the active > > watchList > > > > > > in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > alphabetical order (regardless of the order that the
symbols > > > > > > were > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > added to the list). So, you must ensure that the indexed > > > > > > opposites > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList2 will match their partner based on the assumption > > > > > > that > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > partners were sorted before being processed by your script. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > If your lists are expected to be relatively unchanging, this > > > > > > may > > > > > > > > > > > > > > be > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > an acceptable bit of book keeping. > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = Sell = Short = Cover = 0; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Get opposites from second list, ordered as originally > > > > > > entered. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlis t, 2); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > // Get alphabetized index of current symbol from first list. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > index = status("stocknum" ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Extract opposite for the current symbol. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > opposite = StrExtract(list, index); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > _TRACE(Name( ) + " and " + opposite); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > SetForeign(opposite ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Do whatever you want with foreign opposite > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Mike > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster > > > > > > <normanjade@ ...> > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > thanks yes Im looking for something like this. In the end I > > > > > > have > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > code that at the beginning designates two symbols. > > > >
> > ticker1=ibm , > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ticker2=ge for example. Then I run the code. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > The thing is,
I have a few of them and I dont want to > > > > > > manually > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > enter them. Instead I was thinking of putting a couple of > > > > > > tickers > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > per > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchlist. Then trying to call upon them by saying take each > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchlist and make first symbol in watchlist = ticker1 and > > then > > > > > >
> > > > > > > > 2nd > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > = > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ticker2. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > Then run code. Then take watchlist 2 and do the same thing > > > > > > and > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > run > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> code. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Is it possible to do that? How would I code that? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- On Wed, 12/10/08, Barry Scarborough <razzbarry@ ..> > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > From: Barry
Scarborough <razzbarry@ ..> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> To: amibroker@xxxxxxxxx ps.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Date: Wednesday, December 10, 2008, 11:32 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > I an not sure what you are looking for. This > > > > > > program > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > runs through a > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watch list and processes the the symbols individually. You > > > > > > can > > > > > > > > > > > > > > do > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > all > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > sorts of things within SetForeign() and RestorePriceArrays ( > > ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > Barry > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _SECTION_BEGIN( "Using SetForeign") ; > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetChartOptions( 0, chartShowArrows | chartShowDates ); > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Filename = StrLeft(_DEFAULT_ NAME(),StrLen( _DEFAULT_ > > NAME())- > > > > > > 2)
> > > > > > > > > > > > > > ; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > _N(Title = filename + StrFormat(" - {{DATE}} {{VALUES}} ")); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // parameters > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Watchlist = 10; > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // create comma separated list of symbols in the watch list > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlist, watchlist ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > /* > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > this gets the symbol name and the for loop will process > > every > > > > > > > > > > > > > > one > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > the watch list for each bar. In an auto trading program it > > > > > > will > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > run > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > every time a tick is received > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > */ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ ) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > { > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetForeign(sym) ; // switches to the
symbol array, > > > > > > OHLCVOi > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > /* >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > put your code here. You can create an include that will > > > >
> > define > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > parameters for each symbol you have optimized and > > dynamically > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > switch > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > the parameters for the indicators. You can also dynamically > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > switch > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > a different system for some symbols. Your imagination is the > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > limit. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > */ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _SECTION_END( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster > > > > > > <normanjade@ ...> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If you have a code that works on two symbols, is it > > > > > > possible > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > call > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > upon the first and second tickers in the watchlist without > > > > > > > > > > > >
> > having > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > actually manually write the tickers? Like referring to them > > > > > > as > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 1st > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > and 2nd ticker in this specific watchlist. possible? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
- 2d.
-
Fri Dec 19, 2008 2:45 am (PST)
It's working fine for me. Have you copied the whole script, including the line: ab = CreateObject( "Broker.Application "); Make sure that no extra spaces or any other corruption got added to the quoted string "Broker.Application " which should not have any spaces in it. Sometimes Yahoo stuffs in spaces to your posts. Mike --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> wrote: > > When I put the beginning of that script in I get messages like: > COM/object handle is null > COM object variable is not initialized or has invalid type. > Its highlighting both the aa = line and the wl= line. > Am i doing something wrong by just putting it in there? > is there another way to get the active watchlist number? Cuz that way I could > just select all in
the AA and through the code get the active watchlist number and extract the symbols from there. I just dont know how to get the active watchlist number of the symbol being analyzed. > > > --- On Thu, 12/18/08, Mike <sfclimbers@ ...> wrote: > From: Mike <sfclimbers@ ...> > Subject: [amibroker] Re: scrolling through a watchlist > To: amibroker@xxxxxxxxx ps.com> Date: Thursday, December 18, 2008, 3:48 PM > > > > > > > > > > > > Just make any number of watchlists that you want, each with exactly > > two symbols. Then, select whichever list you want to work against in > > the AA window and run the following script. Select a different > > watchlist in the AA window and run the script again.
Repeat for as > > many lists as you have. > > > > There may be a cleaner way for getting the active watchlist. But the > > method used should work. > > > > Mike > > > > -- > > Buy = Sell = 0; > > > > ab = CreateObject( "Broker.Applicat ion"); > > aa = ab.Analysis; > > wl = aa.Filter(0, "watchlist") ; > > > > list = CategoryGetSymbols( categoryWatchlis t, wl); > > ticker1 = StrExtract(list, 0); > > ticker2 = StrExtract(list, 1); > > > > _TRACE(CategoryGetN ame(categoryWatc hlist, wl) + ": " + ticker1 + " > > and " + ticker2); > > > > if (Name() == ticker1) { > > SetForeign(ticker2) ; > > // Read whatever you want from second data,
e.g. > > foreignClose = Close; > > RestorePriceArrays( ); > > > > Buy = foreignClose > Close; > > Sell = foreignClose < Close; > > } > > > > if (Name() == ticker2) { > > SetForeign(ticker1) ; > > // Read whatever you want from first data, e.g. > > foreignHigh = High; > > RestorePriceArrays( ); > > > > Buy = foreignHigh > High; > > Sell = foreignHigh < High; > > } > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> wrote: > > > > > > Your totally right actually. As long as the list is finite that > > should be fine. Im such a newbie at this coding though so the > > simplest things are difficult. > > >
How do I say: > > > If current ticker belongs to watchlist1, then ticker1=F and > > ticker2=GM. > > > > > > Ticker1 and Ticker2 are parts of my code. Then I figure I do it > > this way. Next writing if current ticker belongs to watchlist2 > > then .... > > > Then I run the code. I think that way would be the best. > > > > > > --- On Wed, 12/17/08, Mike <sfclimbers@ ...> wrote: > > > From: Mike <sfclimbers@ ...> > > > Subject: [amibroker] Re: scrolling through a watchlist > > > To: amibroker@xxxxxxxxx ps.com > > > Date: Wednesday, December 17, 2008, 11:57 PM > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > What's wrong with the "both symbols in a single list" > > approach? I > > > > > > believe that the assumption is that you would have multiple lists, > > > > > > each with exactly two symbols (as you had originally suggested). > > Where > > > > > > are you running into problems? > > > > > > > > > > > > If it's a case of the script logic not being applicable from one > > pair > > > > > > to the next, then the whole hard coding of names problem goes away > > > > > > because each script would be customized to a pair and you could > > hard > > > > >
> code the names after all, as per Tomasz's example. Otherwise, were > > you > > > > > > not able to dig out the names correctly using StrExtract? > > > > > > > > > > > > Mike > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> > > wrote: > > > > > > > > > > > > > > Ya that code isn't working very well. Also all the 1st part of > > the > > > > > > pairs in one watchlists and the seconds in a second list can't > > really > > > > > > work because its alphabetizing each list. So when I enter the > > orders > > > >
> > for the first list its fine, but then I get to the second list and > > it > > > > > > alphabetizes that so it ruins the order with the first list. This > > is > > > > > > tough man! > > > > > > > > > > > > > > --- On Mon, 12/15/08, Mike <sfclimbers@ ...> wrote: > > > > > > > From: Mike <sfclimbers@ ...> > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > Date: Monday, December 15, 2008, 8:21 PM > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sorry, it was not clear that you were wanting to act on both > > > > > > symbols. > > > > > > > > > > > > > > I thought you were trying to buy from the first list only, based > >
on > > > > > > > > > > > > > > signals/confirmatio n from the second list. > > > > > > > > > > > > > > > > > > > > > > > > > > > > As you've now discovered, the Foreign functionality allows access > > to > > > > > > > > > > > > > > foreign data, but it does not allow you to generate signals for > > that > > > > > > > > > > > > > > foreign symbol. To act on the symbol, it must appear in the > > > > > > watchlist > > > > > > > > > > > > > > and be
processed in turn. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Tomasz has answered your question, which is the route that you > > were > > > > > > > > > > > > > > originally heading down. But, he did not address the hard coded > > > > > > names > > > > > > > > > > > > > > that you were trying to avoid. > > > > > > > > > > > > > > > > > > > > > > > > > > > > To avoid the hard coded names of Tomasz's answer, Dingo gave you > > the > >
> > > > > > > > > > > > answer, which is also what I used in my earlier sample. > > > > > > Specifically; > > > > > > > > > > > > > > use StrExtract from the watchlist. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Putting it all togeather... > > > > > > > > > > > > > > > > > > > > > > > > > > > > Again the symbols will be evaluated in alphabetical order, but > > > > > > > > > > > > > > CategoryGetSymbols will give
the ordering as they appear in the > > > > > > > > > > > > > > watchlist (i.e. not necessarily alphabetized) . So, if it > > matters, > > > > > > > > > > > > > > populate your list such that the symbol you want to to be treated > > as > > > > > > > > > > > > > > first actually appears first in the watchlist, even though the > > > > > > second > > > > > > > > > > > > > > may get run through the script before the first one. > > > > > > > > > > > > > > > > > > > > > > > >
> > > > Buy = Sell = Short = Cover = 0; > > > > > > > > > > > > > > > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlis t, 1); > > > > > > > > > > > > > > first = StrExtract(list, 0); > > > > > > > > > > > > > > opposite = StrExtract(list, 1); > > > > > > > > > > > > > > > > > > > > > > > > > > > > _TRACE(first + " and " + opposite); > > > > > > > > > > > > > > > > > > > > >
> > > > > > > if (Name() == first) { > > > > > > > > > > > > > > SetForeign(opposite ); > > > > > > > > > > > > > > // Read whatever you want from opposite data > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = ... enter long for first symbol > > > > > > > > > > > > > > Sell = ... exit long for first symbol; > > > > > > > > > > > > > > } >
> > > > > > > > > > > > > > > > > > > > > > > > > > > if (Name() == opposite) { > > > > > > > > > > > > > > SetForeign(first) ; > > > > > > > > > > > > > > // Read whatever you want from first data > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = ... enter long for opposite symbol > > > > > > > > > > > > > > Sell = ...
exit long for opposite symbol; > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster <normanjade@ ...> > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks so much. I tried it this way and I almost got it. Im > > >
> > > running > > > > > > > > > > > > > > it on the first watchlist and then using the setforeign > > (opposite ); > > > > > > > > > > > > > > function. But Im having a problem. There are variables I declared > > > > > > > > > > > > > > early in the code. Then I say setforeign(opposite ); Then put in > > buy > > > > > > > > > > > > > > conditions based on those variables but I get no buys or sells in > > > > > > > > > > > > > > this foreign ticker. Only buys and sells in the first watchlist. > > How > > >
> > > > > > > > > > > come? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- On Sun, 12/14/08, Mike <sfclimbers@ ...> wrote: > > > > > > > > > > > > > > > From: Mike <sfclimbers@ ...> > > > > > > > > > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > > > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > > > > > > > > > Date: Sunday, December 14, 2008, 2:31 AM > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If you want to go down that route, you might > > consider > > > > > > > > > > > > > > just two lists, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > each with one side of the pair for each pair, rather than > > separate > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > lists per pair. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > e.g. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > instead of: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList1 = A,X > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > watchList2 = M,Y > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList3 = I,Z > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > do: > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > watchList1 = A,I,M > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList2 = X,Z,Y > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Then you can run your script on watchList1, making indexed > > > > > > > > > > > > > > reference >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > to the symbols in watchList2 as shown below. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Note, however, that I rearanged watchList1 to be in > > alphabetical > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > order before adding the indexed opposite symbols in watchList2. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > It appears that AmiBroker iterates through the active watchList > > in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > alphabetical order (regardless of the order that the symbols > > were > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > added to the list). So, you must ensure that the indexed > > opposites > > > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchList2 will match their partner based on the assumption > > that > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > partners were sorted
before being processed by your script. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If your lists are expected to be relatively unchanging, this > > may > > > > > > be > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > an acceptable bit of book keeping. > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Buy = Sell = Short = Cover = 0; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Get opposites from second list, ordered as originally > > entered. > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlis t, 2); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Get alphabetized index of current symbol from first list. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > index = status("stocknum" ); > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Extract opposite for the current symbol. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > opposite = StrExtract(list, index); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > _TRACE(Name( ) + " and " + opposite); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetForeign(opposite ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // Do whatever you want with foreign opposite > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster > > <normanjade@ ...> > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > thanks yes Im looking for something like this. In the end I > > have > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > code that at the beginning designates two symbols. > > ticker1=ibm , > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ticker2=ge for example. Then I run the code. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > The thing is, I have a few of them and I dont want to > > manually > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > enter them.
Instead I was thinking of putting a couple of > > tickers > > > > > > > > > > > > > > per > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchlist. Then trying to call upon them by saying take each > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > watchlist and make first symbol in watchlist = ticker1 and then > > > > > > 2nd > > > > > > > > > > > > > > = > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > ticker2. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Then run code. Then take watchlist 2 and do the same thing > > and > > > > > > > > > > > > > > run > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > code. > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > Is it possible to do that? How would I code that? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- On Wed, 12/10/08, Barry Scarborough <razzbarry@ ..> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > From: Barry Scarborough <razzbarry@ ..> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Subject: [amibroker] Re: scrolling through a watchlist > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > To: amibroker@xxxxxxxxx ps.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Date: Wednesday, December 10, 2008, 11:32 PM > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I an not sure what you are looking for. This > > program > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > runs through a > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > watch list and processes the the symbols individually. You > > can > > > > > > do > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > all > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> sorts of things within SetForeign() and RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Barry >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _SECTION_BEGIN( "Using SetForeign") ; > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SetChartOptions( 0, chartShowArrows | chartShowDates ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Filename = StrLeft(_DEFAULT_ NAME(),StrLen( _DEFAULT_ NAME())- > > 2) >
> > > > > ; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _N(Title = filename + StrFormat(" - {{DATE}} {{VALUES}} ")); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // parameters > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Watchlist = 10; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > // create comma separated list of symbols in the watch list > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > list = CategoryGetSymbols( categoryWatchlist, watchlist ); > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > /* > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > this gets the symbol name and the for loop will process every > > > > > > one > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > the watch list for each bar. In an auto trading program it > > will > > > > > > > > > > > > > > run > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > every time a tick is received > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > */ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ ) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > { > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > SetForeign(sym) ; // switches to the symbol array, > > OHLCVOi > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > /* > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > put your code here. You can create an include that will > > define > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > parameters for each symbol you have optimized and dynamically > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > switch
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > the parameters for the indicators. You can also dynamically > > > > > > > > > > > > > > switch > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > a different system for some symbols. Your imagination is the > > > > > > > > > > > > > > limit. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > */ > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > RestorePriceArrays( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > } > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _SECTION_END( ); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In amibroker@xxxxxxxxx ps.com, jim fenster > > <normanjade@ ...> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If you have a code that works on two symbols, is it > > possible > > > > > > > > > > > > > > call > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > upon the first and second tickers in the watchlist without > > > > > > having > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > actually manually write the tickers? Like referring to them >
> as > > > > > > > > > > > > > > 1st > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > and 2nd ticker in this specific watchlist. possible? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
- 3a.
-
Thu Dec 18, 2008 7:07 pm (PST)
Thanks PFTrader, I wish nobody else faces a situation like this, however for the benefit of any other users, the following article may come handy in future. http://lifehacker. com/393084/ how-to-recover- deleted-files- with-free-software With regards Sanjiv Bansal --- In amibroker@xxxxxxxxx ps.com, "pftrader" <apforex@xxx > wrote: > > Try GlaryUtilities > http://www.glaryuti lities.com/ gu.html?tag= download>
- 4a.
-
Fri Dec 19, 2008 1:22 am (PST)
Yes, that's it...thanks for the smart hint p --- In amibroker@xxxxxxxxx ps.com, "Mike" <sfclimbers@ ...> wrote: > > Is this what you want? > > Series1 = MA(Close, 50); > Series2 = ValueWhen(BarIndex( )%3 == 0, Series1); > Plot(Series1, "Smooth", colorRed); > Plot(Series2, "Steps", colorBlue); > > The above will give you a series like the following: > > 20,20,20,30, 30,30,... > > Mike > > --- In amibroker@xxxxxxxxx ps.com, "Paolo Cavatore" <pcavatore@> > wrote: > > > > I've got a very simple indicator but can't get proper afl code. > > > > I want to plot an indicator equal to MA(C, 50) on day1 - let's say >
20 > > $. For the following 2 days it has to be the same - 20$. > > On day 4 it is equal to MA(C, 50) again - let's say 30$ - and > remain > > at 30$ for the following 2 days again. > > Its shape would then be similar to a staircase. > > > > In short the indicator should be equal to MA(C, 50) every four days > > and be the same for the remaining 3 days. > > > > I tried to code it as follow but it doesn't work due to the IIF > logic: > > > > MyIndicator = IIf(BarsSince( MA(C, 50) != Ref(MA(C, 50), -1)) > 3, MA > > (C, 50), Ref(Ma(C, 50), -1)); > > > > Anyone can help? > > > > regards, > > > > paolo > > >
- 5.
-
Fri Dec 19, 2008 1:31 am (PST)
Hi all!
I try to make my own trading system and i need help. I want to recalculate my indicator evry day. Example: I have 3 periods ROC (on 5 Min) and i want to ask AmiBroker start calculate this indicator at 9:00 Morning and finish at the end of day
I try to do it but get mistake :-(
Thanks Max
- 6a.
-
Fri Dec 19, 2008 1:34 am (PST)
Greetings all -- Since my name was mentioned in this thread ---- Books and articles have copyright protection as soon as they are expressed. When I begin to write, my first draft has implicit protection. When I have the book printed and distributed, I include the statement that I am explicitly retaining the copyright and claiming protection. The whole book is copyrighted, even though it may contain information that is not original with me. Among other things, the copyright prohibits some person from redistributing or reselling my book, or any portion thereof, without my permission. (Whether for profit or not is not an issue. Certain "fair use" is exempt.) There is no doubt that some of the AFL code used as examples was well known before that code appeared in my book. But there is other code that is original with me. If the entire code from my book appears on a website for sale (as it
does), that is a violation of International Copyright laws. And I could bring a law suit and would win if I was willing to pay the price in both time and money. The cost to me would be high, the award probably low, and the likelihood of my collecting very low. If someone posts the simple moving average crossover example, as was done in this thread, or other examples that were well known before my book was published, I would be foolish to complain and very foolish to bring a law suit. Rather, in cases such as this, I benefit by having my work referenced. In fact, I have answered several questions posted to this forum by posting code included in my book in my response. That does not relinquish my protection under the copyright laws and it does not give permission to anyone else to republish it without my permission. The point is -- If someone claims copyright protection for their code, no one has a right to
republish that material without the copyright holder's permission unless they can show that the same information existed prior to that specific copyright claim in an uncopyrighted form. The material being protected may be worthless, but it is still protected. If the material is protected under copyright but published on the copyright holder's web site, you may post a URL link to his or her page, but you may not copy the information and republish it without permission. As for "should have published electronically" -- Think carefully about your business plan when you form your own publishing company. It is much more complex than first meets the eye. Thanks for listening, Howard On Tue, Dec 16, 2008 at 5:48 AM, Paul Ho < paul.tsho@xxxxxx com> wrote: > Amikid > send me a private email, saying what you want done, ie
indicator, system or > exploration .....I might be able to provide some free afl consulting > /paul. > > ------------ --------- --------- > *From:* amibroker@xxxxxxxxx ps.com [mailto: amibroker@xxxxxxxxx ps.com] *On > Behalf Of *pdevadasnayak > *Sent:* Tuesday, 16 December 2008 11:27 PM > *To:* amibroker@xxxxxxxxx ps.com> *Subject:* [amibroker] Re: Synergy trading system > > > My sincere Thanks to Barry Scarborough, Brian,"LB" & Judith for setting > the controversy to "rest' > > My only problem here was I could not find "volatility Bands" in > Amibroker AFL library. > > I would like to know > > 1) Has "13"
RSI got to be smoothed twice once with 2 MAV & then With 7 MAV > > 2) Volatility bands what should be the Percentages above & below the > Parameters 34 > > Since I could Not handle AFL coding myself I asked this question.I am > new to Amibroker.My intention was not & is not to hurt anyone. > > Regards > > Amikid > > --- In amibroker@xxxxxxxxx ps.com <amibroker%40yahoog roups.com> , "Barry > Scarborough" <razzbarry@x ..> > wrote: > > > > Wow guys! I can remember such a malicious thread since I started > > posting here in 2003. Waz up? > > > > 1. There is no copyright violation when a user can reference an open > > item. To say it is would be as silly as saying that checking a book > > out at the library is a
copyright violation. Techie did not copy it. > > He just posted a link to it and asked if the concept could be coded > > in AFL. Anything written down is automatically copyrighted. So you > > can't copy it and claim it is yours. But you can use the intellectual > > property to your benefit. We do that with text books and > > encyclopedias all the time. And we do that with AFL examples. They > > are all copyrighted as soon as they are posted. > > > > 2. This paper is in the public domain. No password or user id > > required. Hardly a highly protected item. If you can find something > > on the internet that is in the public domain it is not illegal to use > > it. Even patents can be used by individuals. You just can use the > > idea in something you sell without paying a royalty. > > > > 3. Where is there any indication anyone is
trying to steal something? > > Nothing was stolen but maybe a little sanity lost. It is kinda hard > > to steal something that is provided free. > > > > 4. Techie had a valid question, can this be done in AB. If anyone > > either wanted to buy AB or find out if something can be done why not > > ask? > > > > 5. No there is nothing in the paper that I can see that can't be done > > in AB and would be fairly straight forward. I did not see all the > > formulas but I just took a quick peek. > > > > 6. Nothing stupid or insulting here dingo. Did a bee fly up your nose > > or what? > > > > Bed time, maybe for more than just me. > > > > Kind thoughts, > > Barry > > > > --- In amibroker@xxxxxxxxx ps.com
<amibroker%40yahoog roups.com> , > "techie11111" <techie11111@ > > > wrote: > > > > > > Can anyone code the AfL for traders dynamic Index or synergy trading > > > system > > > > > > The link I got from internet is posted here > > > > > > www.forexmt4. com/_MT4_ Systems/Traders% 20Dynamics/ TDI_1.pdf > > > > > > Regards > > > > > > > > > Amikid > > > > > > > >
- 7a.
-
Fri Dec 19, 2008 1:35 am (PST)
Place the cross over a bar or candle. A bubble windows will show Y value. BR Tim a écrit : > > Hi Dennis, > Is there anyway you know of to get the X-Y axis showing on the > crosshairs? Personally, I prefer that mode of presentation. Thank you. > > Kindest regards, > > Tim > > --- In amibroker@xxxxxxxxx ps.com <mailto:amibroker% 40yahoogroups. com>, > Dennis Brown <see3d@xxx> wrote: > > > > The X and Y cursor values are shown at the bottom of the window. > > > > BR, > > Dennis > > > > On Dec 15, 2008, at 2:07 PM, r_terbush wrote: > > > > > How do I turn on the y-axis value for the crosshair? Surprised that I > > > cannot find any discussion of this in the usermanual,
google hits, > > > etc. > > > . > >
- 8a.
-
Fri Dec 19, 2008 1:36 am (PST)
Barry -- I contacted TWS and received the following explanation. "/Amibroker historical data equates Trader Workstation (TWS) charting information. Therefore, Amibroker backfill messages are identical to the TWS charting display. If the Chart feature in TWS is not receiving data for the ADR@xxxx INDEX contract, then it is impossible to obtain the same information through any API program. For further investigation, I tried requesting ADR@xxxx IND and the data is not available. Some of the indexes are not available for backfill data, and ADR is one of them unfortunately. Before requesting data in Amibroker, first you need to navigate to the TWS and enter the specified contract then open a charting window. If you are successful in requesting backfill data in TWS, then you should able to obtain the same historical data through the API./" Thanks for your help. --
Keith Barry Scarborough wrote: > > I tried ADR-AMEX-IND this morning and could not back fill it. Same > error message as last night. But I let it run and the data is being > received and filling the chart. > > I guess back fill is a question for TWS support. > > Barry > > --- In amibroker@xxxxxxxxx ps.com <mailto:amibroker% 40yahoogroups. com>, > "Barry Scarborough" <razzbarry@x ..> > wrote: > > > > I tried and get the same error. If you place your cursor on the > green > > CONN IB bar in the lower right the last message will be displayed. > The > > message I get is Data service error message, not data returned. At > > times this happens for no apparent reason. Wait until the market > opens > > tomorrow and see if it
works then. Watch to see if the bars are > being > > updated in real time, then try to back fill. > > > > Barry > > > > --- In amibroker@xxxxxxxxx ps.com > <mailto:amibroker% 40yahoogroups. com>, Keith McCombs <kmccombs@> wrote: > > > > > > I just recently got AB working with IB controller and TWS, 1 > minute > > > data. I cannot load ADR-AMEX-IND. Whenever I try, an error or > > warning > > > message is displayed, but lasts for such a short time that I am > > unable > > > to read it. Also, I can view the chart on TWS, so I'm pretty > sure I > > am > > > using the correct symbol. > > > > > > However, I have no problem with SPX-CBOE-IND or any of the > *stocks* I >
> > have tried so far. > > > > > > Any help is greatly appreciated. > > > -- Keith > > > > > > >
- 9.
-
Fri Dec 19, 2008 5:18 am (PST)
Is it possible to PLOT 5min and 15Min 200bars EMA on 1Min Chart?
Also want to Draw the colorfull Area of Previous Hour and Current Hour.
- 10.
-
Fri Dec 19, 2008 7:25 am (PST)
Hi,
Can somebody help me to correct this formula ?
I'd like to write the X value of the dot line just once, at the end of each line.
Thank you for the help
Best regards
//PIVOTS LEVELS
// turning points tn = Now(); _TRACE("**** ********* ********* *Time = "+tn);
top = C==HHV(C,3); bot = C==LLV(C,3);
topH = ValueWhen(top, C); botL = ValueWhen(bot, C);
GraphXSpace= 10;
col = IIf( Close > Ref( Close, -1 ), colorGreen, colorRed ); Plot( Close,"\nCl" , colorBlack, styleCandle );
Plot( topH, "", colorRed, styleDots+styleNoLi ne ); Plot( botL, "", colorGreen, styleDots+styleNoLi ne );
_N(Title = "PIVOTS LEVELS - " + StrFormat("{ {NAME}} - {{INTERVAL}} {{DATE}} \nOp %g \nHi %g \nLo %g {{VALUES}}", O, H, L ));
for( i = 0; i < BarCount; i++ ) { if( top [i] ) PlotText( "" + botL[ i ], i, botL[ i ], colorGreen
); if( bot [i] ) PlotText( "" + topH[ i ], i, topH[ i ], colorRed ); }
- 11a.
-
Fri Dec 19, 2008 7:57 am (PST)
I have a database with 1-min data and selected the time interval as hourly. so, all the built-in arrays are compressed accordingly but the problem is i am not able to access 30-min data from the same AFL to display in commentary/interpre ation using TimeFrameGetPrice( "0",in5Minute* 6). Its always returning the hourly data.
Is it possible to access the data in lower-time frame in commentary/interpre tation while the chart interval is set to higher time-frame?
- 11b.
-
Fri Dec 19, 2008 8:52 am (PST)
It is clearly explained in the guide http://www.amibroke r.com/guide/ h_timeframe. html"Please note that you can only compress data from shorter interval to longer interval. So when working with 1-minute data you can compress to 2, 3, 4, 5, 6, ....N-minute data. But when working with 15 minute data you can not get 1-minute data bars. In a similar way if you have only EOD data you can not access intraday time frames." So, your chart needs to be using 30 minute interval or less if you want interpretation using 30 min data. Best regards, Tomasz Janeczko amibroker.com ----- Original Message ----- From: "nagkiran_k" < k.nagakiran@ gmail.com> To: < amibroker@xxxxxxxxx ps.com> Sent: Friday, December 19, 2008 4:57 PM Subject: [amibroker] Accessing data from time frame lesser than selected chart time interval >I have a database with 1-min data and selected the time interval as > hourly. so, all the built-in arrays are compressed accordingly but the > problem is i am not able to access 30-min data from the same AFL to > display in commentary/interpre ation using > TimeFrameGetPrice( "0",in5Minute* 6). Its always returning the hourly data. > > Is it possible to access the data in lower-time frame in > commentary/interpre tation while the chart interval is set to higher > time-frame? > > > ------------ --------- --------- ------ > > **** 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.amibroke r.com/devlog/> > For other support material please check also: > http://www.amibroke r.com/support. html> > ************ ********* ********* *** > Yahoo! Groups Links > > >
- 12.
-
Fri Dec 19, 2008 8:46 am (PST)
Need a clarification from the manual. The manual does not state this clearly enough for my little brain.
Is the current bar (ie. the most recent bar) close[barcount - 1]?
appreciate the help
**** 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*********************************
|
Add more friends to your messenger and enjoy! Invite them now.
__._,_.___
**** 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
*********************************
__,_._,___
|