-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathstream_batch_consistency.txt
95 lines (90 loc) · 8.98 KB
/
stream_batch_consistency.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
def cleanEnvironment(){
try{ dropStreamEngine("taReactiveSateEngine") } catch(ex){ print(ex) }
undef all
}
cleanEnvironment()
go
use ta
go
schema = table(`tradedate`symbol`high`low`open`close`volume`bs`periods as name, `DATE`SYMBOL`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`BOOL`INT as type)
data=loadText(getHomeDir() + "/testData.csv" ,schema=schema)
name = `tradedate`symbol`high`low`open`close`volume`bs`periods
type = `DATE`SYMBOL`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`BOOL`INT
inputTable = table(1:0, name, type)
name = `symbol`tradedate`VAR`STDDEV`BETA`SMA`EMA`WMA`DEMA`TEMA`TRIMA`KAMA`T3`MA`BBANDS1`BBANDS2`BBANDS3`RSI`STOCHF1`STOCHF2`STOCH1`STOCH2`STOCHRSI1`STOCHRSI2`TRIX`CORREL`LINEARREG_SLOPE`LINEARREG_INTERCEPT`LINEARREG_ANGLE`LINEARREG`TSF`BOP`CCI`TRANGE`PLUS_DM`PLUS_DI`MINUS_DM`MINUS_DI`DX`ADX`ADXR`CMO`MACD1`MACD2`MACD3`MACDEXT1`MACDEXT2`MACDEXT3`MACDFIX1`MACDFIX2`MACDFIX3`MIDPRICE`MIDPOINT`MOM`ROC`ROCP`ROCR`ROCR100`PPO`MAVP`APO`AROON1`AROON2`AROONOSC`ULTOSC`WILLR`AD`OBV`AVGPRICE`MEDPRICE`TYPPRICE`WCLPRICE`ATR`NATR`MFI
type = `SYMBOL`DATE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`DOUBLE
outputTable = table(1:0, name, type)
reactiveStateMetrics=<[
tradedate,
ta::var(close, timePeriod=5, nbdev=1) as `VAR,
ta::stddev(close, timePeriod=5, nbdev=1) as `STDDEV,
ta::beta(high, low, timePeriod=5) as `BETA,
ta::sma(close, timePeriod=30) as `SMA,
ta::ema(close, timePeriod=30) as `EMA,
ta::wma(close, timePeriod=30) as `WMA,
ta::dema(close, timePeriod=30) as `DEMA,
ta::tema(close, timePeriod=30) as `TEMA,
ta::trima(close, timePeriod=30) as `TRIMA,
ta::kama(close, timePeriod=30) as `KAMA,
ta::t3(close, timePeriod=5, vfactor=1) as `T3,
ta::ma(close, timePeriod=30, maType=0) as `MA,
ta::bBands(close, timePeriod=5, nbdevUp=2, nbdevDn=2, maType=0) as `BBANDS1`BBANDS2`BBANDS3,
ta::rsi(close, timePeriod=14) as `RSI,
ta::stochf(high, low, close, fastkPeriod=5, fastdPeriod=3, fastdMatype=0) as `STOCHF1`STOCHF2,
ta::stoch(high, low, close, fastkPeriod=5, slowkPeriod=3, slowkMatype=0, slowdPeriod=3, slowdMatype=0) as `STOCH1`STOCH2,
ta::stochRsi(close, timePeriod=14, fastkPeriod=5, fastdPeriod=3, fastdMatype=0) as `STOCHRSI1`STOCHRSI2,
ta::trix(close, timePeriod=30) as `TRIX,
ta::correl(high, low, timePeriod=30) as `CORREL,
ta::linearreg_slope(close, timePeriod=14) as `LINEARREG_SLOPE,
ta::linearreg_intercept(close, timePeriod=14) as `LINEARREG_INTERCEPT,
ta::linearreg_angle(close, timePeriod=14) as `LINEARREG_ANGLE,
ta::linearreg(close, timePeriod=14) as `LINEARREG,
ta::tsf(close, timePeriod=14) as `TSF,
ta::bop(open, high, low, close) as `BOP,
ta::cci(high, low, close, timePeriod=14) as `CCI,
ta::trange(high, low, close) as `TRANGE,
ta::plus_dm(high, low, timePeriod=14) as `PLUS_DM,
ta::plus_di(high, low, close, timePeriod=14) as `PLUS_DI,
ta::minus_dm(high, low, timePeriod=14) as `MINUS_DM,
ta::minus_di(high, low, close, timePeriod=14) as `MINUS_DI,
ta::dx(high, low, close, timePeriod=14) as `DX,
ta::adx(high, low, close, timePeriod=14) as `ADX,
ta::adxr(high, low, close, timePeriod=14) as `ADXR,
ta::cmo(close, timePeriod=14) as `CMO,
ta::macd(close, fastPeriod=12, slowPeriod=26, signalPeriod=9) as `MACD1`MACD2`MACD3,
ta::macdExt(close, fastPeriod=12, fastMaType=0, slowPeriod=26, slowMaType=0, signalPeriod=9, signalMaType=0) as `MACDEXT1`MACDEXT2`MACDEXT3,
ta::macdFix(close, signalPeriod=9) as `MACDFIX1`MACDFIX2`MACDFIX3,
ta::midPrice(high, low, timePeriod=14) as `MIDPRICE,
ta::midPoint(close, timePeriod=14) as `MIDPOINT,
ta::mom(close, timePeriod=10) as `MOM,
ta::roc(close, timePeriod=10) as `ROC,
ta::rocp(close, timePeriod=10) as `ROCP,
ta::rocr(close, timePeriod=10) as `ROCR,
ta::rocr100(close, timePeriod=10) as `ROCR100,
ta::ppo(close, fastPeriod=12, slowPeriod=26, maType=0) as `PPO,
ta::mavp(close, periods, minPeriod=2, maxPeriod=30, maType=0) as `MAVP,
ta::apo(close, fastPeriod=12, slowPeriod=26, maType=0) as `APO,
ta::aroon(high, low, timePeriod=14) as `AROON1`AROON2,
ta::aroonOsc(high, low, timePeriod=14) as `AROONOSC,
ta::ultOsc(high, low, close, timePeriod1=7, timePeriod2=14, timePeriod3=28) as `ULTOSC,
ta::willr(high, low, close, timePeriod=14) as `WILLR,
ta::ad(high, low, close, volume) as `AD,
ta::obv(close, volume) as `OBV,
ta::avgPrice(open, high, low, close) as `AVGPRICE,
ta::medPrice(high, low) as `MEDPRICE,
ta::typPrice(high, low, close) as `TYPPRICE,
ta::wclPrice(high, low, close) as `WCLPRICE,
ta::atr(high, low, close, timePeriod=14) as `ATR,
ta::natr(high, low, close, timePeriod=14) as `NATR,
ta::mfi(high, low, close, volume, timePeriod=14) as `MFI
]>
engine = createReactiveStateEngine(name="taReactiveSateEngine", metrics=reactiveStateMetrics, dummyTable=inputTable, outputTable=outputTable, keyColumn=`symbol, keepOrder=true)
engine.append!(data)
res_stream = select * from outputTable order by symbol, tradedate
res_sql = select symbol, tradedate, ta::var(close, timePeriod=5, nbdev=1) as `VAR,ta::stddev(close, timePeriod=5, nbdev=1) as `STDDEV, ta::beta(high, low, timePeriod=5) as `BETA, ta::sma(close, timePeriod=30) as `SMA, ta::ema(close, timePeriod=30) as `EMA, ta::wma(close, timePeriod=30) as `WMA, ta::dema(close, timePeriod=30) as `DEMA, ta::tema(close, timePeriod=30) as `TEMA, ta::trima(close, timePeriod=30) as `TRIMA, ta::kama(close, timePeriod=30) as `KAMA, ta::t3(close, timePeriod=5, vfactor=1) as `T3, ta::ma(close, timePeriod=30, maType=0) as `MA, ta::bBands(close, timePeriod=5, nbdevUp=2, nbdevDn=2, maType=0) as `BBANDS1`BBANDS2`BBANDS3, ta::rsi(close, timePeriod=14) as `RSI, ta::stochf(high, low, close, fastkPeriod=5, fastdPeriod=3, fastdMatype=0) as `STOCHF1`STOCHF2, ta::stoch(high, low, close, fastkPeriod=5, slowkPeriod=3, slowkMatype=0, slowdPeriod=3, slowdMatype=0) as `STOCH1`STOCH2, ta::stochRsi(close, timePeriod=14, fastkPeriod=5, fastdPeriod=3, fastdMatype=0) as `STOCHRSI1`STOCHRSI2, ta::trix(close, timePeriod=30) as `TRIX, ta::correl(high, low, timePeriod=30) as `CORREL, ta::linearreg_slope(close, timePeriod=14) as `LINEARREG_SLOPE, ta::linearreg_intercept(close, timePeriod=14) as `LINEARREG_INTERCEPT, ta::linearreg_angle(close, timePeriod=14) as `LINEARREG_ANGLE, ta::linearreg(close, timePeriod=14) as `LINEARREG, ta::tsf(close, timePeriod=14) as `TSF, ta::bop(open, high, low, close) as `BOP, ta::cci(high, low, close, timePeriod=14) as `CCI, ta::trange(high, low, close) as `TRANGE, ta::plus_dm(high, low, timePeriod=14) as `PLUS_DM, ta::plus_di(high, low, close, timePeriod=14) as `PLUS_DI, ta::minus_dm(high, low, timePeriod=14) as `MINUS_DM, ta::minus_di(high, low, close, timePeriod=14) as `MINUS_DI, ta::dx(high, low, close, timePeriod=14) as `DX, ta::adx(high, low, close, timePeriod=14) as `ADX, ta::adxr(high, low, close, timePeriod=14) as `ADXR, ta::cmo(close, timePeriod=14) as `CMO, ta::macd(close, fastPeriod=12, slowPeriod=26, signalPeriod=9) as `MACD1`MACD2`MACD3, ta::macdExt(close, fastPeriod=12, fastMaType=0, slowPeriod=26, slowMaType=0, signalPeriod=9, signalMaType=0) as `MACDEXT1`MACDEXT2`MACDEXT3, ta::macdFix(close, signalPeriod=9) as `MACDFIX1`MACDFIX2`MACDFIX3, ta::midPrice(high, low, timePeriod=14) as `MIDPRICE, ta::midPoint(close, timePeriod=14) as `MIDPOINT, ta::mom(close, timePeriod=10) as `MOM, ta::roc(close, timePeriod=10) as `ROC, ta::rocp(close, timePeriod=10) as `ROCP, ta::rocr(close, timePeriod=10) as `ROCR, ta::rocr100(close, timePeriod=10) as `ROCR100, ta::ppo(close, fastPeriod=12, slowPeriod=26, maType=0) as `PPO, ta::mavp(close, periods, minPeriod=2, maxPeriod=30, maType=0) as `MAVP, ta::apo(close, fastPeriod=12, slowPeriod=26, maType=0) as `APO, ta::aroon(high, low, timePeriod=14) as `AROON1`AROON2, ta::aroonOsc(high, low, timePeriod=14) as `AROONOSC, ta::ultOsc(high, low, close, timePeriod1=7, timePeriod2=14, timePeriod3=28) as `ULTOSC, ta::willr(high, low, close, timePeriod=14) as `WILLR, ta::ad(high, low, close, volume) as `AD, ta::obv(close, volume) as `OBV, ta::avgPrice(open, high, low, close) as `AVGPRICE, ta::medPrice(high, low) as `MEDPRICE, ta::typPrice(high, low, close) as `TYPPRICE, ta::wclPrice(high, low, close) as `WCLPRICE, ta::atr(high, low, close, timePeriod=14) as `ATR, ta::natr(high, low, close, timePeriod=14) as `NATR, ta::mfi(high, low, close, volume, timePeriod=14) as `MFI from data context by symbol
res = []
for (i in res_stream.colNames()[2:]){
res.append!(max(res_stream[i] - res_sql[i]))
print('gap of ' + i + ': ', max(res_stream[i] - res_sql[i]))
}
res_dict = dict(res_stream.colNames()[2:], res)