One Unified Global Perspective
Communications with a Global Perspective
Home
Intro
Contact Us
Voice over IP
PBX Solutions
Services
Support
Glossary
Open Source
Blog
Forum

WebMail





2006 Dec 29 - Fri

Emailing Call Detail Records

In a number of earlier blog entries, I developed and posted a Perl script named ciscowatcher.pl. The script attaches to a Linux based Syslog service and listens for Cisco device generated syslog messages.

One of the messages listened for is the %VOIPAAA-5-VOIP_CALL_HISTORY message generated by H.323 voice gateways. The script generates two Postgresql database files. One is a raw data file called calllog, which contains call-leg information, one call-leg is a voip leg and the other leg is a PSTN leg. With those two legs, one can determine the calling party and the called party. The script generates the database table called cdr from these two pieces of information.

This information is useful for Cisco Telephone Solutions based upon Cisco Unified Callmanager Express Systems, which do not have a real Call Detail Record capability.

Even for organizations with Cisco's Callmanager Solution, getting Call Detail Records can be a problem sometimes because of the way the SQL service is authenticated.

To tie the bow on this situation, I've added a Perl script called sendcdr.pl. It takes the information form the cdr table, formats it, and writes it out as an Excel spreadsheet file using the Spreadsheet::WriteExcel Perl Module from CPAN. The Spreadsheet module is surprisingly powerful in that it can provide bolded and centered column headers as well as properly formatted date/time stamps.

Once the spreadsheet file is generated, it is then emailed using the Mail::Sender Perl Module, also from CPAN.

By placing the script into a cron job entry, call details records can be automatically emailed on a regular basis. The only thing missing is a utility to purge call detail records once they have been emitted. That will be a subject for my next revision.

[/OpenSource/Debian/Monitoring] permanent link


2006 Dec 28 - Thu

Interim getDevConfig Files for Cricket

I've made some further modifications to the Acktomic's genDevConfig files. One fix was to get the H.323 dial-peers to show with current versions of Cisco's IOS. I've also added some target-type code so that the various errored-second counters on the T1 interfaces in Cisco's VWIC modules can be displayed.

On the T1 controllers, the following counters are available from the 'current counter' set, and are shown as guages:

  • dsx1CurrentESs: Errored Seconds
  • dsx1CurrentSESs: Severely Errored Seconds
  • dsx1CurrentSEFSs: Severely Errored Framing Seconds
  • dsx1CurrentUASs: Unavailable Seconds
  • dsx1CurrentCSSs: Controlled Slip Seconds
  • dsx1CurrentPCVs: Path Coding Violations
  • dsx1CurrentLESs: Line Errored Seconds
  • dsx1CurrentBESs: Bursty Errored Seconds
  • dsx1CurrentDMs: Degraded Minutes
  • dsx1CurrentLCVs: Line Code Violations

My earlier instructions have a section on replacing various lines. Rather than go through that again, here are the files that need to be replaced:

Francois from Acktomic will be incorporating these changes into his version. I'll post an update when his collection has been updated.

Here is a slightly revised command line for scanning voice gateways. There are two additional interace types that are ignored. The line also shows how to turn on some debugging statements to see what else is performed.

/usr/share/cricket/util/genDevConfig -2 -c snmpro --vendorint --loglevel debug --voip -d 22,81,101 vgw01

[/OpenSource/Debian/Monitoring/Cricket] permanent link


2006 Dec 27 - Wed

Book: New Trading Systems and Methods, by Perry J. Kaufman

Many people refer to the Achelis book for simple, straight-forward descriptions of technical analysis tools. I too have it on my primary bookshelf. However, lately, more often than not, I find myself reaching for Kaufman's book to get good background on the various ways of technically analysing trading options. Kaufman has chapters devoted to practically every indicator type you may encounter: chart reading, events, regressions, trending, momentum, oscillators, seasonality, cycles, patterns, multiple time frames, and advanced techniques. He then goes into some details regarding system testing, practical considerations, risk control, and diversification. As a wrap up, he provides some end-notes for the mathematically inclined.

There appear to be traders who will sit at their screen all day and watch for pattern based setups. It appears that many traders fall into this category, and the book is not for them.

Notes and blogs regarding people who do automated trading appear to be few and far between. In any case, this book is for the analytical crowd who need to prepare for the day's manual trades. It is also for the automated crowd who need the computer to do all the trading 'by-the-rules' in order to eliminate all forms of emotion from the trade.

I think you'll find a wealth of ideas you can mix and match to make a trading strategy uniquely your own.

Technical anlysis and automated trading strategy design takes much work and energy. A good chunk of statistics is practically mandatory (which the book does provide in various sections). This book fulfills only a portion of the overall knowledge someone will need build a winning trading strategy. Trader phsychology and money management skills will need to be learned elsewhere.

I'll give the book two thumbs up as it provides excellent details on the spectrum of technical analysis and provides references for the times you wish to flesh out the details. Mr. Kaufman must have a most amazing technical library, based upon the breadth and depth of descriptions, references, and citations he uses.

[/Trading/TechnicalAnalysis] permanent link


2006 Dec 24 - Sun

Merrill Patterns

On page 94 of Bollinger's Book: Bollinger on Bollinger Bands, he talks about matching various tradeable patterns developed by Arthur Merrill. In an earlier article on Peak Matching, I provided some code to match chart trading peaks and valleys in real-time. By using that code in addition to my Merrill Pattern Matcher code, Aurther Merrill's patterns can be computed live during a trading session. The PeakMatch code stores it's values in a DoubleSeries array from which the MerrillPattern code uses the last five values to compute the pattern. Then based upon the analysis provided in Bollinger's book and Merrill's book, one can use the information to influence trading styles.

The code is built upon a table driven decision format, which in turn is based upon the observation that Merrill's patterns can be described within a 5x5 grid where each of five peaks/valleys will fall into unique row. The rows are numbered 1 through 5. With five rows, there are 2 to the 5 combinations, ie, 32 combinations.

A set of five points is classified by placing the price point and an index into a sorted array. The concatenation of the sorted indexes is used to generate 'key' to be used in looking for the pattern in the pattern list.

[/Trading/SmartQuant/Articles] permanent link


2006 Dec 23 - Sat

IQFeed Provider for SmartQuant

I've recompiled the IQFeed Utilities to run with QD 2.3.3 and DC 2.1.5. The OneUnified.IQfeed.dll file is used for linking up to IQFeed for obtaining real-time Quote/Trade/Depth streams for QuantDeveloper.

The IHistory interface, is as of yet, still unimplemented. I'll see about rectifying that over the Chrismas Break. Hopefully.

The IQFeed client I'm currently using is IQFeed Client 4.2.0.2.

In the zip file is a test program called ticker.exe. It provides visibility into real-time data in three formats:

  • A Level I ticker tape stream modelled upon Thomas Carr's 'The Tape-Reading Edge' in July 2005's issue of Technical Analysis of Stocks and Commodities.
  • A Level II chart showing buy-side and sell-side Market Makers.
  • A Level II price chart modelled after Interactive Brokers book chart.

IQFeed provides Level II data only on Nasdaq traded instruments.

One usage note, I'm not certain if I've done the simple thing of converting symbols into upper case yet in the ticker program, so you may need to enter them manually as upper-case before clicking on one of the buttons on the left hand menu.

In the ticker program, when viewing the Level II price action, there is one bug which occurs when the Bid overlaps the Ask. The overlapped level will show price counts incorrectly.

[/Trading/SmartQuant/Articles] permanent link


SmartQuant QuantDeveloper & DataCenter Release

The update meant for 'mid-week' didn't get posted till week-end.

SmartQuant has released revisions to DataCenter and QuantDeveloper. They are at the following revision levels:

DataCenter
Version 2.1.5 (22-Dec-2006) 

QuantDeveloper Enterprise Edition
Version 2.3.3 (22-Dec-2006) 

QuantDeveloper source code.
Version 2.3.2 (13-Dec-2006) 

[/Trading/SmartQuant/Releases] permanent link


2006 Dec 22 - Fri

Cisco Syslog Additions

I have once again updated ciscowatcher.pl.

A couple of primary additions:

  • Watches for and emails on changes of the '%CONTROLLER-5-UPDOWN' event (for VWICs and such).
  • Added a table to record Controller up/down events and current status
  • Updated the database schema to generate Call Detail Records from Cisco H.323 gateway events
  • Fixed a problem when processing certain VOIPAAA-5-VOIP_CALL_HISTORY records containing an extra ','

[/OpenSource/Debian/Monitoring] permanent link


VRF-lite (VRF's without MPLS)

VRF-lite (Virtual Routing & Forwarding) is a handy construct for keeping data segregated within a network. It can be thought of as kind of a meta-VLAN thing.

At one customer site, who has a number of branch offices, has a Cisco Callmanager solution spanning those sites. Each site has an internet connection. Three sites are in a single metro area and are linked with metro-links as well as tunnels. A fourth site is in another country. The three sites are linked to the fourth site through IPSEC tunnels. Four different providers are used.

From a real usage perspective, there are six tunnels of consequence: the three tunnels from the metro area to the single site, and the three return tunnels from the single site to the three grouped metro sites. Each of those six tunnels can be categorized in terms of a voice quality metric.

The design puzzle was to come up with a mechanism to route data across a set of tunnels and route voice across a different set of tunnels, in order to make best use of measured delay, jitter, and loss metrics. Using Policy Based Routing (PBR) was one solution but was rejected due to its scaleability problems (ie, lack thereof).

The idea that was finally implemented was to use VRF's to segregate voice from data, but still allow one to get to the other. The design yielded side benefits: provided a method to keep guest traffic separate, allows a method to get external addresses to different parts of the network, and provided a mechanism to improve secure access to network devices.

VRF's allow a routing process per VRF, thus facilitating the use of routing's built in automated route selection and fail-over. And by assigning costs to certain routes, those routes can be prioritized by whatever criteria you choose.

As indicated by another auditing consultant, the configuration does turn complex, but no suitable alternative solution was offered, which says something in itself. Perhaps others can offer up something better, I am open to suggestions.

In the example, 192.18.x.x addresses simulate external addresses, and 192.168.x.x simulate internal addresses. Interface s0/0/0 is the external internet interface, f0/0 is a trunked interface to the interior network, and f0/1 is an interface to the firewall

As you can see, there is an OSPF routing process per VRF, thus facilitating independant routing of each traffic type.

The example incorporates a bunch of features I've encountered in my searches in Cisco's documentation sites, Cisco's forums, Cisco's TAC, as well as Cisco's 'Implementing MPLS VPN' two volume book set.

The example highlights a number of functions:

  • make internet connected links a member of an external vrf (vrfExterior)
  • external addresses can therefore be routed between buildings and providers
  • external addresses can therefore cross pollinate firewalls as a measure of redundancy
  • make internal links members of the global routing table with RFC1918 addresses
  • external addresses are kept separate from internal addresses
  • allows flexible use of equipment when hardware budgets are restricted
  • IPSEC encrypted tunnels are can carry VRF's between sites
  • each inter-site tunnel requires a separate loopback (per Cisco's docs)
  • a Guest VRF is kept totally separate from the Corporate Voice and Data networks
  • Multiprotocol BGP is used route between vrfData and vrfVoice
  • special attention must be paid to the redistribution statements to make best use of OSPF internal, external 1 and external 2 routes (external 2 is not redistributed)
  • with careful redistribution, 'sho ip ospf vrf vrfVoice' shows which routes originate in the vrf and which originate outside, which facilitates troubleshooting and documentation
  • some will argue that carrying guest traffic on the corporate hardware is a no-no, how do others feel about that?

If you have comments on how to improve the configuration, I'm all ears.

I hope this helps others to come up to speed with how VRF-lite can become a part of everyone's routing/switching toolset. And of course, I'm always open to consulting gigs if anyone would like some assistance.

!
ip cef
!
ip vrf vrfData
 description Server, Workstation, Printer data
 rd 65400:300
 route-target export 65400:300
 route-target import 65400:300
 route-target import 65400:400
!
ip vrf vrfExterior
 description Exterior BGP routed data
 rd 65400:200
 route-target export 65400:200
 route-target import 65400:200
!
ip vrf vrfGuest
 description Guest Wireless & Wired
 rd 65400:500
 route-target export 65400:500
 route-target import 65400:500
!
ip vrf vrfVoice
 description Voice Servers, Phones & Gateways
 rd 65400:400
 route-target export 65400:400
 route-target import 65400:400
 route-target import 65400:300
!
!
crypto keyring key4Exterior vrf vrfExterior
  pre-shared-key address 0.0.0.0 0.0.0.0 key 
!
crypto isakmp policy 10
 encr aes
 authentication pre-share
 group 2
!
crypto ipsec transform-set transForTunnels esp-aes esp-sha-hmac 
 mode transport
!
crypto ipsec profile profForTunnels
 set transform-set transForTunnels 
!
interface Loopback10000
 description OSPF ID
 ip address 192.168.5.254 255.255.255.255
!
interface Loopback10001
 description eBGP ID
 ip vrf forwarding vrfExterior
 ip address 192.18.164.191 255.255.255.255
!
interface Loopback10011
 description Global Routing
 ip vrf forwarding vrfExterior
 ip address 192.18.10.1 255.255.255.255
!
interface Loopback10012
 description vrfExterior
 ip vrf forwarding vrfExterior
 ip address 192.18.10.2 255.255.255.255
!
interface Loopback10013
 description vrfData
 ip vrf forwarding vrfExterior
 ip address 192.18.10.3 255.255.255.255
!
interface Loopback10014
 description vrfVoice
 ip vrf forwarding vrfExterior
 ip address 192.18.10.4 255.255.255.255
!
interface Loopback20000
 ip vrf forwarding vrfExterior
 ip address 192.168.5.224 255.255.255.255
!
interface Loopback30000
 ip vrf forwarding vrfData
 ip address 192.168.5.225 255.255.255.255
!
interface Loopback40000
 ip vrf forwarding vrfVoice
 ip address 192.168.5.226 255.255.255.255
!
interface Loopback50000
 ip vrf forwarding vrfGuest
 ip address 192.168.5.227 255.255.255.255
!
interface Tunnel100101
 description Global Building1 - Building2
 bandwidth 1000
 ip address 192.168.5.69 255.255.255.252
 ip ospf authentication message-digest
! ip ospf message-digest-key 1 md5 
 ip ospf mtu-ignore
 load-interval 30
 qos pre-classify
 keepalive 10 3
 tunnel source Loopback10011
 tunnel destination 192.18.20.1
 tunnel mode ipsec ipv4
 tunnel vrf vrfExterior
 tunnel protection ipsec profile profForTunnels
 max-reserved-bandwidth 100
 service-policy output pmShapeTunnels
!
!
interface Tunnel200101
 description vrfExterior Building1 - Building2
 bandwidth 1000
 ip vrf forwarding vrfExterior
 ip address 192.168.5.77 255.255.255.252
 ip ospf authentication message-digest
! ip ospf message-digest-key 1 md5 
 ip ospf mtu-ignore
 load-interval 30
 qos pre-classify
 keepalive 10 3
 tunnel source Loopback10012
 tunnel destination 192.18.20.2
 tunnel mode ipsec ipv4
 tunnel vrf vrfExterior
 tunnel protection ipsec profile profForTunnels
 max-reserved-bandwidth 100
 service-policy output pmShapeTunnels
!
interface Tunnel300101
 description vrfData Building1 - Building2
 bandwidth 1000
 ip vrf forwarding vrfData
 ip address 192.168.5.65 255.255.255.252
 ip ospf authentication message-digest
! ip ospf message-digest-key 1 md5 
 ip ospf mtu-ignore
 load-interval 30
 qos pre-classify
 keepalive 10 3
 tunnel source Loopback10013
 tunnel destination 192.18.20.3
 tunnel mode ipsec ipv4
 tunnel vrf vrfExterior
 tunnel protection ipsec profile profForTunnels
 max-reserved-bandwidth 100
 service-policy output pmShapeTunnels
!
interface Tunnel400101
 description vrfVoice Building1 - Building2
 bandwidth 1000
 ip vrf forwarding vrfVoice
 ip address 192.168.5.73 255.255.255.252
 ip ospf authentication message-digest
! ip ospf message-digest-key 1 md5 
 ip ospf mtu-ignore
 load-interval 30
 qos pre-classify
 keepalive 10 3
 tunnel source Loopback10014
 tunnel destination 192.18.20.4
 tunnel mode ipsec ipv4
 tunnel vrf vrfExterior
 tunnel protection ipsec profile profForTunnels
 max-reserved-bandwidth 100
 service-policy output pmShapeTunnels
!
interface Null0
 no ip unreachables
!
interface FastEthernet0/0
 no ip address
 ip route-cache flow
 load-interval 30
 duplex auto
 speed auto
 service-policy output pmFastEthernet
!
interface FastEthernet0/0.199
 description Global Routing
 encapsulation dot1Q 199
 ip address 192.168.5.26 255.255.255.248
 ip ospf authentication message-digest
! ip ospf message-digest-key 1 md5 
!
interface FastEthernet0/0.299
 description vrfExterior
 encapsulation dot1Q 299
 ip vrf forwarding vrfExterior
 ip address 192.168.5.106 255.255.255.248
 ip ospf authentication message-digest
! ip ospf message-digest-key 1 md5 
!
interface FastEthernet0/0.399
 description vrfData 
 encapsulation dot1Q 399
 ip vrf forwarding vrfData
 ip address 192.168.5.34 255.255.255.248
 ip ospf authentication message-digest
! ip ospf message-digest-key 1 md5 
!
interface FastEthernet0/0.499
 description vrfVoice
 encapsulation dot1Q 499
 ip vrf forwarding vrfVoice
 ip address 192.168.5.122 255.255.255.248
 ip ospf authentication message-digest
! ip ospf message-digest-key 1 md5 
!
interface FastEthernet0/0.599
 description vrfGuest
 encapsulation dot1Q 599
 ip vrf forwarding vrfGuest
 ip address 192.168.5.130 255.255.255.248
 ip ospf authentication message-digest
! ip ospf message-digest-key 1 md5 
!
interface FastEthernet0/1
 description to Firewall
 ip vrf forwarding vrfExterior
 ip address 192.18.10.11 255.255.255.248
 ip route-cache flow
 load-interval 30
 duplex auto
 speed auto
 no cdp enable
 service-policy output pmFastEthernet
!
interface Serial0/0/0:0
 description Internet Access
 no ip address
 encapsulation frame-relay IETF
 ip route-cache flow
 load-interval 30
 frame-relay lmi-type ansi
 max-reserved-bandwidth 100
 service-policy output pmShapeSerialInterface
!
interface Serial0/0/0:0.1 point-to-point
 description Frame Relay to internet
 ip vrf forwarding vrfExterior
 ip address 192.18.10.33 255.255.255.252
 ip access-group aclBlockInbound in
 ip access-group aclBlockOutbound out
 ip verify unicast reverse-path
 no ip redirects
 no ip unreachables
 no ip proxy-arp
 no cdp enable
 frame-relay interface-dlci 170 IETF   
!
router ospf 200 vrf vrfExterior
 router-id 192.168.5.224
 log-adjacency-changes
 auto-cost reference-bandwidth 10000
 capability vrf-lite
 passive-interface FastEthernet0/1
 passive-interface Serial0/0/0:0.1
 passive-interface Loopback10001
 passive-interface Loopback10011
 passive-interface Loopback10012
 passive-interface Loopback10013
 passive-interface Loopback10014
 passive-interface Loopback20000
 network 192.168.5.56 0.0.0.7 area 0
 network 192.168.5.76 0.0.0.3 area 0
 network 192.168.5.92 0.0.0.3 area 0
 network 192.168.5.104 0.0.0.7 area 0
 network 192.168.5.224 0.0.0.0 area 0
 network 192.168.197.36 0.0.0.3 area 0
!
router ospf 300 vrf vrfData
 router-id 192.168.5.225
 log-adjacency-changes
 auto-cost reference-bandwidth 10000
 capability vrf-lite
 redistribute bgp 65400 metric 120 subnets
 passive-interface Loopback30000
 network 192.168.5.32 0.0.0.7 area 0
 network 192.168.5.64 0.0.0.3 area 0
 network 192.168.5.80 0.0.0.3 area 0
 network 192.168.5.112 0.0.0.7 area 0
 network 192.168.5.225 0.0.0.0 area 0
 network 192.168.197.40 0.0.0.3 area 0
!
router ospf 400 vrf vrfVoice
 router-id 192.168.5.226
 log-adjacency-changes
 auto-cost reference-bandwidth 10000
 capability vrf-lite
 redistribute bgp 65400 metric 120 subnets
 passive-interface Loopback40000
 network 192.168.5.48 0.0.0.7 area 0
 network 192.168.5.72 0.0.0.3 area 0
 network 192.168.5.88 0.0.0.3 area 0
 network 192.168.5.120 0.0.0.7 area 0
 network 192.168.5.226 0.0.0.0 area 0
 network 192.168.197.44 0.0.0.3 area 0
 default-information originate always
!
router ospf 500 vrf vrfGuest
 router-id 192.168.5.227
 log-adjacency-changes
 auto-cost reference-bandwidth 10000
 capability vrf-lite
 passive-interface Loopback50000
 network 192.168.5.40 0.0.0.7 area 0
 network 192.168.5.68 0.0.0.3 area 0
 network 192.168.5.84 0.0.0.3 area 0
 network 192.168.5.128 0.0.0.7 area 0
 network 192.168.5.227 0.0.0.0 area 0
!
router ospf 100
 log-adjacency-changes
 auto-cost reference-bandwidth 10000
 passive-interface Loopback10000
 network 192.168.5.4 0.0.0.3 area 0
 network 192.168.5.16 0.0.0.3 area 0
 network 192.168.5.20 0.0.0.3 area 0
 network 192.168.5.24 0.0.0.7 area 0
 network 192.168.5.68 0.0.0.3 area 0
 network 192.168.5.80 0.0.0.7 area 0
 network 192.168.5.254 0.0.0.0 area 0
 network 192.168.197.32 0.0.0.3 area 0
!
router bgp 65400
 no synchronization
 bgp router-id 192.18.164.191
 bgp log-neighbor-changes
 no auto-summary
 !
 address-family ipv4 vrf vrfVoice
 redistribute ospf 400 vrf vrfVoice
 no synchronization
 exit-address-family
 !
 address-family ipv4 vrf vrfData
 redistribute ospf 300 vrf vrfData match internal external 1
 no synchronization
 exit-address-family
!

end

[/Cisco] permanent link


2006 Dec 21 - Thu

Scalping, Elite Trader, and Range Bars

On the Elite Trader Forums, a poster that goes by the moniker of yoohoo has quite a few useful things to say about scalping.

Scalping is definitely an intraday activity. One attempts to capture small movements in the market, often of a one or two points. And one has to remember to make sure that the movement includes room for slippage and for commissions.

I've heard a number of definitions for the term 'point'. In those forums, I'm now given to understand that a point can be a synonym for the spread for the equity.

Yoohoo indicates that he's been trading since about 1998, so I think he has quite some experience. His posts certainly indicate that he is drawing on much hard earned knowledge. For traders trying to get on the positive side of the markets, his comments, as well as many others, are worth reading over at the forums.

As part of the set of indicators he uses, I learned of a new one: range bars. According to the article, range bars were invented by a Brazilian trader named Vicente M. Nicolellis Jr. In a nutshell, range bars are created through price movements: once an instrument has moved through a preset price range, a new bar is created. This creates a series of same sized bars, and is time independent. As a result, a trending market will generate a series of range bars as it goes up or down, while a sideways market will generate few if any bars (as long as the sideways movement is within the range of the bar).

[/Trading] permanent link


2006 Dec 20 - Wed

Cisco Syslog Additions

I have once again updated ciscowatcher.pl.

A couple of primary additions:

  • Additional events are processed
  • Email messages can be sent as alerts based upon nature of event

Some of the events processed include:

  • '%ISDN-6-CONNECT'
  • '%ISDN-6-DISCONNECT'
  • '%VOIPAAA-5-VOIP_CALL_HISTORY'
  • '%SEC-6-IPACCESSLOGDP'
  • '%SEC-CLUSTER_MEMBER_1-6-IPACCESSLOGDP'
  • '%SEC-6-IPACCESSLOGP'
  • '%SEC-CLUSTER_MEMBER_1-6-IPACCESSLOGP'
  • '%OSPF-5-ADJCHG'
  • '%SYS-5-CONFIG_I'
  • '%LINK-5-CHANGED'
  • '%LINEPROTO-5-UPDOWN'
  • '%LINK-3-UPDOWN'
  • '%LINEPROTO-CLUSTER_MEMBER_1-5-UPDOWN'
  • '%LINK-CLUSTER_MEMBER_1-3-UPDOWN'
  • '%CRYPTO-4-PKT_REPLAY_ERR'
  • '%SYS-6-CLOCKUPDATE'
  • '%DOT11-6-ASSOC'
  • '%DOT11-6-DISASSOC'
  • '%DOT11-7-AUTH_FAILED'
  • '%DOT11-6-ROAMED'

The email module example shows the the script sending email to the default service on the same machine. By simply changing the mail accounts and server id's, email can be sent to any SMTP capable server for distribution.

This script is configured to send notifications and save the results in a database anytime an OSPF link changes state.

[/OpenSource/Debian/Monitoring] permanent link


Volume At Price

It is said that, through the course of the day, trading trends will revert to the level of highest volume.

The software at Ensign Software has a feature which will chart a nice bar graph of the volume-at-price distribution for visual traders.

However, for a quick and dirty indicator at a single level only, fit for automated trading, I wrote the following small class:

public class VolumeAtPrice {
	
	SortedList slVolumeAtPrice;
	public int LargestVolume = 0;
	public double PriceAtLargestVolume = 0;
	
	public VolumeAtPrice() {
		slVolumeAtPrice = new SortedList( 400 );
	}
	
	public void Add( Trade trade ) {
		if ( slVolumeAtPrice.ContainsKey( trade.Price ) ) {
			int ix = slVolumeAtPrice.IndexOfKey( trade.Price );
			int volume = (int) slVolumeAtPrice.GetByIndex( ix );
			volume += trade.Size;
			slVolumeAtPrice.SetByIndex( ix, volume );
			if ( volume > LargestVolume ) {
				LargestVolume = volume;
				PriceAtLargestVolume = trade.Price;
			}
		}
		else {
			slVolumeAtPrice.Add( trade.Price, trade.Size );
			if ( trade.Size > LargestVolume ) {
				LargestVolume = trade.Size;
				PriceAtLargestVolume = trade.Price;
			}
		}
	}
}

After updating with the latest Trade, examine PriceAtLargestVolume to see where the current highest volume trading level occurs.

[/Trading/SmartQuant/Articles] permanent link


2006 Dec 19 - Tue

SmartQuant QuantDeveloper & DataCenter Release

Since Anton mentioned this blog on the SmartQuant forum earlier today, I better get the version list up-to-date here.

There was mention that another update will be released mid-week this week. Among other things, it is said to fix a couple of bugs plus allow scripted access to DataCenter MarketDepth from QuantDeveloper.

SmartQuant has released revisions to DataCenter and QuantDeveloper. They are at the following revision levels:

DataCenter
Version 2.1.4 (27-Nov-2006)

QuantDeveloper Enterprise Edition
Version 2.3.2 (08-Dec-2006) 

QuantDeveloper source code.
Version 2.3.2 (13-Dec-2006) 

[/Trading/SmartQuant/Releases] permanent link


The Stock Bandit

I've added a link to an interesting article by The Stock Bandit regarding trading with multiple positions. I've been attempting to design a system based upon handling single positions. But with multiple indicators sometimes signalling different directions, I've been at a loss (in more ways than one) to figure out which indicator to believe at any one point in time.

I've slowly been realizing that by handling multiple positions, multiple scenarios can be played out at once, with each scenario adding and removing positions to the overall portfolio.

Obviously, handling multiple positions is not for the faint of heart, but I'm hoping through robust back testing, it will prove it's worth for use in a real money environment.

[/Trading] permanent link


2006 Dec 07 - Thu

World Money Show, February 2007

InterShow, which bills themselves as 'The Worlds Leading Producer of Investment Trade Shows and Cruises', is putting on the World Money Show at the Gaylord Palms Resort in Orlando, Florida from February 7 to 10 in 2007.

The exhibit hall listing is quite extensive, as is their speaker list. Their Sponsor list has some well known names. If anyone has gone to one of these, please leave a comment as to your thoughts regarding past events.

[/Trading] permanent link


2006 Dec 06 - Wed

Finding Local Peaks in Quote/Trade Streams

Just about any book on technical analysis you open will have a number of charts showing the usual peaks and valleys of a instrument's trading range. Many trading strategies are designed around the specific arrangement of peaks and valleys. I thought, up till now, that these peaks and valleys could only be determined through studies through the use of the good old Mark I Eyeball.

However, after reading Bollinger's book entitled Bollinger on Bollinger Bands, in which he discusses computer aided determination of those peaks and valleys, I set out to work on an algorithm to do the same.

The C# PeakMatch Code Segment is my first attempt at peak and valley pattern matching.

It is implemented as a state machine in order to make it easy to determine, during live streams, whether the stream is going up or down. You can use various summary statistics from quotes, trades, or even bars as input values.

The variable dblPatternDelta is the grey zone used for determining when the pattern flips. This variable will need to be adjusted on an instrument by instrument basis. In addition, further tuning is necessary if you wish to capture small nuances or just large swings in the trading value. As such, determining the peak is a problem of lag. Sigh, so much for having a magical realtime signal for determining when the top or bottom of a range. The variable dtPatternPt1 holds the DateTime of the last determined peak. When a change of direction of determined, then that peak/valley attribute is stored in dsPattern.

dsPattern can then be used within a sliding window of pattern analysis. I'll show an implementation of Arthur Merrill's patterns in another article.

Further information on choosing a good value for dblPatternDelta can be found in Bollinger's book.

[/Trading/SmartQuant/Articles] permanent link


2006 Dec 05 - Tue

Google Webmaster Tools

I cover a number of different topics in my blog. I'm interested in finding out how people arrive on those pages. From a Google perspective, they have a convenient tool for analyzing some of this information.

Google has a site called Google Webmaster Central. On that page is a link for Webmaster Tools (including Sitemaps). I've added my web site to the tool. As part of that process, they generate a verification key. I've installed the verification key in the footer file that gets included on all generated webpages on my site. This verification key is part of a script that talks to Google each time a web page is rendered by a web browser.

As part of each rendering, information is sent to Google that logs the queries used to get to the specific page. Google summarizes this information and reports this to me each time I visit the Google Webmaster Tools.

I've also uploaded a simple site-map so Google knows which pages to visit.

Now that I've provided some basic information to Google, I can now get an idea of how pages are crawled, when they are crawled, and how the pages are ranked within Google's system.

I also have the ability to download a spreadsheet of queries Google has recorded for reaching each page set. This will help me to optimize the keywords in each document. It also gives me an idea of people's interests, and thereby provide additional content focussed to those topics of interest.

I have a Google search tool at the top of my pages. The searches entered in that box are also recorded so I can tell for what people are searching once they reach my site.

There is also a set of index statistics provided which include: the pages indexed by Google, sites that Google knows that link to my site, and presents a list of sites related to my site so I can have an idea of who my competition might be.

I've found the Google 'link:' not quite as detailed as I think it should be. Google has maybe twelve sites showing information for link:www.oneunified.net. On the other hand, Alexa shows around 74 sites linking.

Anyway, for a high level view of what GoogleBot thinks about my site, Google Webmaster Central provides a good summary.

[/Personal/SoftwareDevelopment/HTML/Findability] permanent link


NTP for Callmanager

Since Cisco generally recommends that the Callmanager server not be a member of an Active Directory domain, is is unable to make use of the time distribution protocols normally available to member servers and computers. As background, I think Cisco's stance is understandable, and reflects the quantity of testing Cisco performs with each upgrade and service pack install. If a server is a member of a domain, it is entirely possible that registry entries, dlls, or applications coulds be modified through Group Policies that may affect the reliable functioning of the phone server.

As an alternative to Microsoft's time distribution protocol, the industry standard NTP (Network Time Protocol) can be used. The Callmanager installation automatically installs an NTP client, but does not turn it on.

To turn it on is quite simple. Obtain an address of an NTP server, either on your network or an external one. Using the one that drives the Active Directory domain controllors would be best. As a last resort, an address from pool.ntp.org could be used.

Edit the file C:\WINNT\system32\drivers\etc\ntp.conf and apply the ip address to the server line. Save the file. Bring up Microsoft's Services management application. Set the Network Time Protocol service to Automatic and start it up.

The Event Log will record startup and synchronization messages for your reference.

Be aware that with each Callmanager upgrade you perform, the service may be turned back to Manual and the ntp.conf file may be overwritten. You may want to make a backup of the configuration file so you can easily re-apply after your next upgrade.

[/Cisco/Callmanager] permanent link


Ping Weblog

I used the ping_weblogs_com found and described at Get Noticed by Pinging site. The referenced page also lists a number of services to ping.

Adding a ping to weblogs.com was reasonably simple, except that I forgot that I can't do a $ping_weblogs_com in the text article, but had to do it as part of a flavour file.

And as I didn't want to do it as part of a regular article presentation, as it may extend the page load times, I had to create some separate flavour files. I then activated the plugin in the story flavour.

Now I'm all set with to ping Weblogs.com.

BrutalHogs has a ping flavour to help a little with the manual ping process. But I think that Ping-O-Matic probably takes care of most things, even if it is only manually for now.

[/OpenSource/blosxom] permanent link


Adding an RSS Template to Blosxom

The RSS template/flavour supplied with the original installation of Blosxom doesn't really conform to modern useage. At The Unofficial Blosxom User Group, mention is made of Hal Halvorsen's A better RSS 2.0 template for Blosxom.

He mentions it might take ten to fifteen minutes to configure. In actual fact it was easier than that. I copied his flavours into the root of my blog directory and made the following changes:

  • story.rss20: added .article to fn in two places, since that is how I suffix each individual blog article from a url perspective
  • head.rss20: changed the copyright notice
  • foot.blog: changed my index.rss link to index.rss20 for my xml tag

I was able to validate the feed with Weblogs.com Feed Validator.

So, in actual fact, adding the feed ability and documenting it in this blog took maybe fifteen or twenty minutes. Easy.

[/OpenSource/blosxom] permanent link


2006 Dec 04 - Mon

Keywords for Search Engine Optimization (SEO)

Search engines like keywords, keywords that are balanced, not overused, not underused. Both copy writers and site designers need to be involved in optimization of keywords and phrases. Once appropriate keywords and phrases have been determined (more about this in another entery), copy writers need to work them into the text of the website. In addition, the keywords and phrases can be incorporated into meta-tags of the page, but I've heard that you can't overboard here, nor can you rely only on meta-tags to carry the day.

Another trick is to incorporate the keywords into web site structure and navigation. For example, on one my pages I discuss a set of HD-600 headphones by Sennheiser. The page references the word AudioPhonics and the directory structure in which the article rests has that word as part of the path.

That article has a Google rank of 7 or 8. It has reached that rank within a few weeks of posting. However, that page is actually about the Sennheiser HD 600 headphones, and if I do a search on that phrase, page rank is very very low. It is somewhere between 140 and 745,000. So, in effect, people will land on that page due to a search of the nebulous topic of AudioPhonics rather than the more specific topic of Sennheiser HD 600 Headphones about which I wrote.

Because there are so many other pages out there that have Sennheiser HD 600 in the title bar, which my page doesn't (I'm going to have to move to different blogging software to make that happen), they probably enjoy higher rankings. However, an appropriate title is only one of many attributes a search engine will use to compute a page rank.

Those other pages also probably use meta-tags.

Those other pages may also have inbound links of one form or another to gain them extra visibility.

Those other sites may also have related content that helps a search engine's related content matchers. (I'm still finding out about this one to see how true it is).

But you'll also note that when doing a search on the phrase 'Sennheiser HD 600', a bunch of other kind of related pages show up: ones that have a portion of the phrase repeatedly, ones that include the phrase in passing but related to similar equipment, and ones that have them in the url somewhere.

So, after having mentioned what search engines like, we'll see what happens with this page in the page rankings in a few weeks for the search topic 'Sennheiser HD 600'. I've mentioned the product multiple times within the text of this document, which is what Search Engines seem to like. I'm still missing the text in meta-tags, the title, and the url, but we'll see how things go. It will be form of double irony that people come here because they searched for 'Sennheiser HD 600' when in fact this page is actually is about Search Engine Optimization, in another form: Optimzation for Search Engine Findability.

In summary, if you are looking for visibility and findability, each page you write needs to be hand crafted with these various techniques in mind. And even if you've crafted a page for a certain phrase, you may find a search engine likes it differently based upon user's search patterns and preferences. But if you watch these patterns, you can use them to your benefit to further enhance your findability.

[/Personal/SoftwareDevelopment/HTML/Findability] permanent link


Book Review: Ambient Findability by Peter Morville

As I've been adding content to my blog, I've also been looking into methods and mechanisms of promoting it .

Over the last few years, I've been receiving JIll Whalen's High Rankings Advisor Newsletter. She devotes her time to educating her readers in the subject of SEO (Search Engine Optimization). I've been reading the newsletter ever since the time that meta-tags had significant meaning. Now they represent only a portion of toolset needed to successfully promote a web site.

Web site promotion is really all about 'findability'. Peter Morville presents this topic in a very readable book called 'Ambient Findability' available from O'Reilly Press. The sub-title of his book is 'What We Find Changes Who We Become', which I think is very apt, based upon the research he presents within the pages of his book.

We as Blog authors and web page developers provide content so that we can share it with others, and perhaps make some money from it, if not for other altruistic reasons. As they say, content is king. But if no one knows about the content, what good does it do? So the key question is: how does one get others to visit?

Obviously, other's can't visit if they don't know where to visit. One concept that comes immediately to mind is a one called viral marketing. Marketing Terms defines it as a 'marketing phenomenon that facilitates and encourages people to pass along a marketing message'. If you can get a snowball of a message rolling, people will come.

On the other hand, in order to build a base of respectability and long term associations, any number of ideas and philosophies need to be considered. No one promotion gimmick will yield results. Around 175 pages of book can be boiled down to this meaning laden quote:

Semantic Web tools and standards create a powerful, enduring foundation. Taxonomies and ontologies provide a solid semantic network that connects interface to infrastructure. And the fast-moving, fashionable folksomonies sit on top: flexible, adaptable, and responsive to user feedback.

The book is much more readable than what is found in that exerpt, but hopefully the exerpt provides a desire to find out more of what it takes to build a successful web site. Search Engine Optimization is part and parcel of semantic content. Tag building through such sites as Flickr and Del.icio.us provide the folksomony, or user ratedness of a site. And search engine classification schemes provide accessibility.

Many different topics related to finding things are presented within the book. It is an excellent first book for those involved with the multi-role task of making web sites findable, as well as usable.

[/Personal/SoftwareDevelopment/HTML/Findability] permanent link



Blog Content ©2009
Ray Burkholder
All Rights Reserved
ray@oneunified.net
(441) 505 7293
Available for Contract Work
Resume

RSS: Click to see the XML version of this web page.

twitter
View Ray 
Burkholder's profile on LinkedIn
technorati
Add to Technorati Favorites



December
Su Mo Tu We Th Fr Sa
         
           


Main Links:
Monitoring Server
SSH Tools
QuantDeveloper Code

Special Links:
Frink

Blog Links:
Sergey Solyanik
Marc Andreessen
HotGigs
Micro Persuasion
... Reasonable ...
Chris Donnan
BeyondVC
lifehacker
Trader Mike
Ticker Sense
HeadRush
TraderFeed
Stock Bandit
The Daily WTF
Guy Kawaski
J. Brant Arseneau
Steve Pavlina
Matt Cutts
Kevin Scaldeferri
Joel On Software
Quant Recruiter
Blosxom User Group
Wesner Moise
Julian Dunn
Steve Yegge
Max Dama

2006
Months
Dec




Mason HQ

Disclaimer: This site may include market analysis. All ideas, opinions, and/or forecasts, expressed or implied herein, are for informational purposes only and should not be construed as a recommendation to invest, trade, and/or speculate in the markets. Any investments, trades, and/or speculations made in light of the ideas, opinions, and/or forecasts, expressed or implied herein, are committed at your own risk, financial or otherwise.