--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/progs/trade.scala Sat Nov 05 17:11:47 2016 +0000
@@ -0,0 +1,66 @@
+
+
+val trades = List(28.0, 18.0, 20.0, 26.0, 24.0)
+
+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)
+}
+
+
+trade_times(trades)
+
+assert(trade_times(List(10.0, 8.0, 7.0, 6.0)) == (3, 3), "the first test fails")
+
+
+
+import io.Source
+import scala.util._
+
+def get_page(url: String): List[String] = {
+ Try(Source.fromURL(url)("ISO-8859-1").getLines.toList).
+ getOrElse { println(s" Problem with: $url"); List() }
+}
+
+def process_page(url: String): List[(String, Double)] = {
+ get_page(url).drop(1).map(_.split(",").toList).map((xs) => (xs(0), xs(6).toDouble))
+}
+
+def query_comp(name: String): (Int, Int) = {
+ val list = process_page("""http://ichart.yahoo.com/table.csv?s=""" + name)
+ trade_times(list.reverse.map(_._2))
+}
+
+
+val indices = List("GOOG", "AAPL", "MSFT", "IBM", "FB", "YHOO", "AMZN", "BIDU")
+
+indices.map(query_comp(_))
+
+val appl_page = get_page("""http://ichart.yahoo.com/table.csv?s=GOOG""")
+val goog_page = get_page("""http://ichart.yahoo.com/table.csv?s=GOOG""")
+goog_page.length
+
+val pairs = goog_page.drop(1).map(_.split(",").toList).map((xs:List[String]) => (xs(0), xs(6).toDouble))
+
+pairs.map(_._2)
+
+trade_times(pairs.reverse.map(_._2))
+
+pairs(3067)
+pairs(11)
+
+
+/*
+scala trade.scala 2> /dev/null || echo "command1 borked it"
+
+command1
+if [ $? -ne 0 ]; then
+ echo "command1 borked it"
+fi
+*/
+
+