--- a/progs/trade_sol.scala Sun Nov 05 12:56:55 2017 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-// Part 2 about Buy-Low-Sell-High using Yahoo Financial Data
-//===========================================================
-
-
-// (1) Complete the function that is given a list of floats
-// and calculuates the indices for when to buy the commodity
-// and when to sell
-
-def trade_times(xs: List[Double]): (Int, Int) = {
- val low = xs.min
- val low_index = xs.indexOf(low)
- val rest = xs.drop(low_index)
- val high = rest.max
- val high_index = rest.indexOf(high)
- (low_index, low_index + high_index)
-}
-
-val prices = List(28.0, 18.0, 20.0, 26.0, 24.0)
-assert(trade_times(prices) == (1, 3), "the trade_times test fails")
-
-
-// (2) Complete the ``get webpage'' function that takes a
-// a stock symbol as argument and queries the Yahoo server
-// at
-// http://ichart.yahoo.com/table.csv?s=<<insert stock symbol>>
-//
-// This servive returns a CSV-list that needs to be separated into
-// a list of strings.
-
-import io.Source
-import scala.util._
-
-def get_yahoo_page(symbol: String): List[String] = {
- val url = """http://ichart.yahoo.com/table.csv?s=""" + symbol
- Try(Source.fromURL(url)("ISO-8859-1").getLines.toList).
- getOrElse { println(s" Problem with: $url"); List() }
-}
-
-// (3) Complete the function that processes the CSV list
-// extracting the dates and anjusted close prices. The
-// prices need to be transformed into Doubles.
-
-def process_page(symbol: String): List[(String, Double)] = {
- get_yahoo_page(symbol).drop(1).map(_.split(",").toList).map((xs) => (xs(0), xs(6).toDouble))
-}
-
-
-// (4) Complete the query_company function that obtains the
-// processed CSV-list for a stock symbol. It should return
-// the dates for when to buy and sell the stocks of that company.
-
-def query_company(symbol: String): (String, String) = {
- val list = process_page(symbol).reverse
- val (tbuy, tsell) = trade_times(list.map(_._2))
- (list(tbuy)._1, list(tsell)._1)
-}
-
-//query_company("GOOG")
-
-
-val indices = List("GOOG", "AAPL", "MSFT", "IBM", "FB", "YHOO", "AMZN", "BIDU")
-
-for (name <- indices) {
- val times = query_company(name)
- println(s"Buy ${name} on ${times._1} and sell on ${times._2}")
-}
-
-
-
-/*
-scala trade.scala 2> /dev/null || echo "command1 borked it"
-
-command1
-if [ $? -ne 0 ]; then
- echo "command1 borked it"
-fi
-*/
-
-