Chart-tests-1.9.3: tests/Test17.hs
module Test17 where
import Graphics.Rendering.Chart
import Data.Colour
import Data.Colour.Names
import Control.Lens
import Data.Default.Class
import Data.Time.LocalTime
import System.Random
import ExampleStocks
import Utils
-- demonstrate Candles
chart :: Double -> Renderable (LayoutPick LocalTime Double Double)
chart lwidth = layoutLRToRenderable layout
where
layout = layoutlr_title .~"Stock Prices"
$ layoutlr_background .~ solidFillStyle (opaque white)
$ layoutlr_left_axis_visibility . axis_show_ticks .~ False
$ layoutlr_plots .~ [ Right (toPlot msftArea)
, Right (toPlot msftLine)
, Right (toPlot msftCandle)
, Left (toPlot aaplArea)
, Left (toPlot aaplLine)
, Left (toPlot aaplCandle) ]
$ layoutlr_foreground .~ opaque black
$ def
aaplLine = plot_lines_style .~ lineStyle 2 green
$ plot_lines_values .~ [[ (d, cl)
| (d,(lo,op,cl,hi)) <- pricesAAPL]]
$ plot_lines_title .~ "AAPL closing"
$ def
msftLine = plot_lines_style .~ lineStyle 2 purple
$ plot_lines_values .~ [[ (d, cl)
| (d,(lo,op,cl,hi)) <- pricesMSFT]]
$ plot_lines_title .~ "MSFT closing"
$ def
aaplArea = plot_fillbetween_style .~ solidFillStyle (withOpacity green 0.4)
$ plot_fillbetween_values .~ [ (d, (lo,hi))
| (d,(lo,op,cl,hi)) <- pricesAAPL]
$ plot_fillbetween_title .~ "AAPL spread"
$ def
msftArea = plot_fillbetween_style .~ solidFillStyle (withOpacity purple 0.4)
$ plot_fillbetween_values .~ [ (d, (lo,hi))
| (d,(lo,op,cl,hi)) <- pricesMSFT]
$ plot_fillbetween_title .~ "MSFT spread"
$ def
aaplCandle = plot_candle_line_style .~ lineStyle 1 blue
$ plot_candle_fill .~ True
$ plot_candle_tick_length .~ 0
$ plot_candle_width .~ 2
$ plot_candle_values .~ [ Candle d lo op 0 cl hi
| (d,(lo,op,cl,hi)) <- pricesAAPL]
$ plot_candle_title .~ "AAPL candle"
$ def
msftCandle = plot_candle_line_style .~ lineStyle 1 red
$ plot_candle_fill .~ True
$ plot_candle_rise_fill_style .~ solidFillStyle (opaque pink)
$ plot_candle_fall_fill_style .~ solidFillStyle (opaque red)
$ plot_candle_tick_length .~ 0
$ plot_candle_width .~ 2
$ plot_candle_values .~ [ Candle d lo op 0 cl hi
| (d,(lo,op,cl,hi)) <- pricesMSFT]
$ plot_candle_title .~ "MSFT candle"
$ def
lineStyle n colour = line_width .~ n * lwidth
$ line_color .~ opaque colour
$ def ^. plot_lines_style
-- main = main' "test17" (chart 0.25)