Browse Source

Backtest++

stable
Denis Tereshkin 6 years ago
parent
commit
6880925a27
  1. 15
      src/ATrade/Driver/Backtest.hs
  2. 2
      src/ATrade/RoboCom/Indicators.hs

15
src/ATrade/Driver/Backtest.hs

@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RankNTypes #-}
@ -16,7 +18,7 @@ import ATrade.Driver.Types (InitializationCallback, @@ -16,7 +18,7 @@ import ATrade.Driver.Types (InitializationCallback,
import ATrade.Exceptions
import ATrade.Quotes.Finam as QF
import ATrade.RoboCom.Monad (Event (..), EventCallback,
StrategyAction (..),
MonadRobot (..), StrategyAction (..),
StrategyEnvironment (..),
appendToLog, runStrategyElement, st)
import ATrade.RoboCom.Positions
@ -314,3 +316,14 @@ defaultBacktestState s c tickerList = BacktestState 0 s c (StrategyEnvironment " @@ -314,3 +316,14 @@ defaultBacktestState s c tickerList = BacktestState 0 s c (StrategyEnvironment "
newtype BacktestingMonad s c a = BacktestingMonad { unBacktestingMonad :: State (BacktestState s c) a }
deriving (Functor, Applicative, Monad, MonadState (BacktestState s c))
instance MonadRobot (BacktestingMonad s c) s c where
submitOrder order = undefined
cancelOrder oid = undefined
appendToLog txt = undefined
setupTimer time = undefined
enqueueIOAction actionId action = undefined
getConfig = undefined
getState = undefined
setState s = undefined
getEnvironment = undefined

2
src/ATrade/RoboCom/Indicators.hs

@ -40,7 +40,7 @@ cci period bars = (head tp - tpMean) / (0.015 * meanDev) @@ -40,7 +40,7 @@ cci period bars = (head tp - tpMean) / (0.015 * meanDev)
typicalPrice a b c = (a + b + c) / 3
atr :: Int -> [Bar] -> Double
atr period bars = case reverse (take (5 * period) trueranges) of
atr period bars = case reverse (take (10 * period) trueranges) of
(firstValue:rest) -> foldl (\x y -> (x * (period' - 1) + y) / period') firstValue rest
_ -> 0
where

Loading…
Cancel
Save