{"id":2061,"date":"2011-02-09T11:04:04","date_gmt":"2011-02-09T11:04:04","guid":{"rendered":"http:\/\/www.amibroker.org\/userkb\/?p=2061"},"modified":"2011-02-09T17:31:11","modified_gmt":"2011-02-09T17:31:11","slug":"collecting-and-plotting-ticks","status":"publish","type":"post","link":"http:\/\/www.amibroker.org\/editable_userkb\/2011\/02\/09\/collecting-and-plotting-ticks\/","title":{"rendered":"Collecting and Plotting Ticks v2"},"content":{"rendered":"

The program below shows how you can collect tick-based data and display it in its own pane.<\/p>\n

Note: There was an error in the earlier version that is fixed, v2 only collect ticks if the Total Volume for the day changes. Feel free to report any further problems (on the main list or by private email please).<\/p>\n

The example shows Last, Bid and Ask price. You can repeat the four lines that plot each price as often as you like to add other types of tick-based data. A typical chart looks like this:<\/p>\n

<\/a>\"\"<\/a><\/p>\n

<\/span>function <\/span>TickArray2<\/span>( <\/span>Ticker<\/span>, <\/span>TickPriceName<\/span>, <\/span>NumTicks<\/span>, <\/span>Reset <\/span>)\r{\r<\/span>Tickprice <\/span>= <\/span>GetRTDataForeign<\/span>( <\/span>TickPriceName<\/span>, <\/span>Ticker <\/span>);\r<\/span>PrevVolume <\/span>= <\/span>Nz<\/span>( <\/span>StaticVarGet<\/span>( <\/span>"~TotalVolume_" <\/span>+ <\/span>TickPriceName <\/span>) );\r<\/span>TotVol <\/span>= <\/span>GetRTDataForeign<\/span>( <\/span>"TotalVolume"<\/span>, <\/span>Ticker <\/span>);\r<\/span>StaticVarSet<\/span>( <\/span>"~TotalVolume_" <\/span>+ <\/span>TickPriceName<\/span>, <\/span>TotVol <\/span>);\r\rif ( <\/span>TotVol <\/span>&<\/span>gt<\/span>; <\/span>PrevVolume <\/span>)\r{\r<\/span>InIndicator <\/span>= <\/span>Status<\/span>( <\/span>"Action" <\/span>) == <\/span>1<\/span>;\r<\/span>StaticVarSet<\/span>( <\/span>"LastQuotePrice"<\/span>, <\/span>TickPrice <\/span>);\r<\/span>TA <\/span>= <\/span>Null<\/span>; <\/span>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0<\/span>\/\/ Clear Output array\r<\/span>NumTicks <\/span>= <\/span>Min<\/span>( <\/span>BarCount <\/span>- <\/span>2<\/span>, <\/span>NumTicks <\/span>); <\/span>\/\/ Stay in array size\r<\/span>for ( <\/span>n <\/span>= <\/span>NumTicks<\/span>; <\/span>n <\/span>&<\/span>gt<\/span>;= <\/span>0<\/span>; <\/span>n<\/span>-- )\r{\r<\/span>T <\/span>= <\/span>StaticVarGet<\/span>( <\/span>TickPriceName <\/span>+ ( <\/span>n <\/span>- <\/span>1 <\/span>) );\r<\/span>StaticVarSet<\/span>( <\/span>TickPriceName <\/span>+ <\/span>n<\/span>, <\/span>T <\/span>);\r<\/span>TA<\/span>[ <\/span>BarCount <\/span>- <\/span>1 <\/span>- <\/span>n<\/span>] = <\/span>T<\/span>; <\/span>\u00a0\u00a0 \u00a0<\/span>\/\/ Fill return array\r<\/span>}\r<\/span>StaticVarSet<\/span>( <\/span>TickPriceName <\/span>+ <\/span>0<\/span>, <\/span>TickPrice <\/span>);\r<\/span>TA<\/span>[<\/span>BarCount<\/span>-<\/span>1<\/span>] = <\/span>TickPrice<\/span>;\r}\relse\r{\r<\/span>TA <\/span>= <\/span>Null<\/span>; <\/span>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 <\/span>\/\/ Clear Output array\r<\/span>NumTicks <\/span>= <\/span>Min<\/span>( <\/span>BarCount <\/span>- <\/span>2<\/span>, <\/span>NumTicks <\/span>); <\/span>\u00a0\u00a0 \u00a0<\/span>\/\/ Stay in array size\r<\/span>for ( <\/span>n <\/span>= <\/span>NumTicks<\/span>; <\/span>n <\/span>&<\/span>gt<\/span>;= <\/span>0<\/span>; <\/span>n<\/span>-- )\r{\r<\/span>T <\/span>= <\/span>StaticVarGet<\/span>( <\/span>TickPriceName <\/span>+ <\/span>n <\/span>);\r<\/span>TA<\/span>[ <\/span>BarCount <\/span>- <\/span>1 <\/span>- <\/span>n<\/span>] = <\/span>T<\/span>; <\/span>\u00a0\u00a0 \u00a0<\/span>\/\/ Fill return array\r<\/span>}\r}\rreturn <\/span>TA<\/span>;\r}\r\rfunction <\/span>TickArraysReset<\/span>( <\/span>TickPriceName <\/span>)\r{\rglobal <\/span>NumTicks<\/span>;\r<\/span>StaticVarSet<\/span>( <\/span>"Init"<\/span>+<\/span>TickPricename<\/span>, <\/span>1 <\/span>);\rfor ( <\/span>n <\/span>= <\/span>NumTicks<\/span>; <\/span>n <\/span>&<\/span>gt<\/span>;= <\/span>0<\/span>; <\/span>n<\/span>-- ) <\/span>StaticVarRemove<\/span>( <\/span>TickPriceName\u00a0 <\/span>+ <\/span>n <\/span>);\r}\r\r<\/span>GraphXSpace <\/span>= <\/span>20<\/span>;\r<\/span>TickerName <\/span>= <\/span>Name<\/span>();\r<\/span>Clear\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0<\/span>= <\/span>ParamTrigger<\/span>( <\/span>"Clear Tick Charts"<\/span>, <\/span>"CLEAR" <\/span>);\r<\/span>NumTicks\u00a0\u00a0 \u00a0<\/span>= <\/span>Param<\/span>( <\/span>"Tick-Array Length"<\/span>, <\/span>20<\/span>, <\/span>3<\/span>, <\/span>1000<\/span>, <\/span>1 <\/span>);\r\r<\/span>TickPriceName <\/span>= <\/span>"Last"<\/span>;\rif ( <\/span>IsNull<\/span>( <\/span>StaticVarGet<\/span>( <\/span>"Init"<\/span>+<\/span>TickPriceName <\/span>) ) OR <\/span>Clear <\/span>) <\/span>TickArraysReset<\/span>( <\/span>TickPriceName <\/span>);\r<\/span>TA <\/span>= <\/span>TickArray2<\/span>( <\/span>TickerName<\/span>, <\/span>TickPriceName<\/span>, <\/span>NumTicks<\/span>, <\/span>Clear<\/span>);\r<\/span>Plot<\/span>( <\/span>TA<\/span>, <\/span>TickPriceName<\/span>, <\/span>1<\/span>, <\/span>1<\/span>);\r\r<\/span>TickPriceName <\/span>= <\/span>"Bid"<\/span>;\rif ( <\/span>IsNull<\/span>( <\/span>StaticVarGet<\/span>( <\/span>"Init"<\/span>+<\/span>TickPriceName <\/span>) ) OR <\/span>Clear <\/span>) <\/span>TickArraysReset<\/span>( <\/span>TickPriceName <\/span>);\r<\/span>TA <\/span>= <\/span>TickArray2<\/span>( <\/span>TickerName<\/span>, <\/span>TickPriceName<\/span>, <\/span>NumTicks<\/span>, <\/span>Clear<\/span>);\r<\/span>Plot<\/span>( <\/span>TA<\/span>, <\/span>TickPriceName<\/span>, <\/span>4<\/span>, <\/span>1<\/span>);\r\r<\/span>TickPriceName <\/span>= <\/span>"Ask"<\/span>;\rif ( <\/span>IsNull<\/span>( <\/span>StaticVarGet<\/span>( <\/span>"Init"<\/span>+<\/span>TickPriceName <\/span>) ) OR <\/span>Clear <\/span>) <\/span>TickArraysReset<\/span>( <\/span>TickPriceName <\/span>);\r<\/span>TA <\/span>= <\/span>TickArray2<\/span>( <\/span>TickerName<\/span>, <\/span>TickPriceName<\/span>, <\/span>NumTicks<\/span>, <\/span>Clear<\/span>);\r<\/span>Plot<\/span>( <\/span>TA<\/span>, <\/span>TickPriceName<\/span>, <\/span>5<\/span>, <\/span>1<\/span>);<\/span><\/pre>\n","protected":false},"excerpt":{"rendered":"

The program below shows how you can collect tick-based data and display it in its own pane. Note: There was an error in the earlier version that is fixed, v2 only collect ticks if the Total Volume for the day changes. Feel free to report any further problems (on the main list or by private […]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[64],"tags":[],"_links":{"self":[{"href":"http:\/\/www.amibroker.org\/editable_userkb\/wp-json\/wp\/v2\/posts\/2061"}],"collection":[{"href":"http:\/\/www.amibroker.org\/editable_userkb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.amibroker.org\/editable_userkb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.amibroker.org\/editable_userkb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.amibroker.org\/editable_userkb\/wp-json\/wp\/v2\/comments?post=2061"}],"version-history":[{"count":9,"href":"http:\/\/www.amibroker.org\/editable_userkb\/wp-json\/wp\/v2\/posts\/2061\/revisions"}],"predecessor-version":[{"id":2069,"href":"http:\/\/www.amibroker.org\/editable_userkb\/wp-json\/wp\/v2\/posts\/2061\/revisions\/2069"}],"wp:attachment":[{"href":"http:\/\/www.amibroker.org\/editable_userkb\/wp-json\/wp\/v2\/media?parent=2061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.amibroker.org\/editable_userkb\/wp-json\/wp\/v2\/categories?post=2061"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.amibroker.org\/editable_userkb\/wp-json\/wp\/v2\/tags?post=2061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}