1

私はscalaに慣れていないので、この問題にどのように取り組むべきかわかりませんか? 基本的に、一連の相場の移動平均クロスオーバーを見つけようとしています。以前の値を取得して現在の値と比較する方法がわかりません。

if ( fastMovingAverage(n-1) > slowMovingAverage(n-1) && fastMovingAverage(n) < slowMovingAverage(n) )
then do some action



package com.example.csv

import scala.io.Source


object FileParser {
  val TIMESTAMP_LOCATION = 3
  val BID_LOCATION = 4
  val OFFER_LOCATION = 5
  val FAST_WINDOW_SIZE = 5
  val SLOW_WINDOW_SIZE = 10

  def main(args: Array[String]) = {
    val records = Source.fromFile("Sample.csv")
    .getLines()
    .drop(1)
    .map(_.split(","))
    .takeWhile( _ != null)
    .sliding(SLOW_WINDOW_SIZE , 1)
    .foreach(x => movingAverage(x))
  }

  def movingAverage(numbers: Seq[Array[String]]) = {
    val listOfBids = numbers.map(x => x(BID_LOCATION).toDouble)
    val slowAverage = listOfBids.reduceLeft(_ + _)/numbers.length
    val fastListOfBids = listOfBids.takeRight(FAST_WINDOW_SIZE)
    val fastAverage = fastListOfBids.reduceLeft(_ + _)/fastListOfBids.length
    println("Slow Average " + slowAverage + " Fast Average " + fastAverage)
  }

}
4

1 に答える 1