Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/lib-base/src/Candle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ float Candle::GetPriceByType(const PriceType & type) const
case PriceType::TYPICAL:
return GetTypical();
}

throw EnjoLib::ExceptRuntimeError("Candle::GetPriceByType(): unimplemented type");
Osstream oss;
oss << "Candle::GetPriceByType(): unimplemented type = " << int(type);
throw EnjoLib::ExceptRuntimeError(oss.str());
}
10 changes: 10 additions & 0 deletions src/lib-base/src/ConfigTS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ void ConfigTS::RegisterAndReadBools(EnjoLib::Istream & f)
void ConfigTS::RegisterAndReadInts(EnjoLib::Istream & f)
{
RegisterAndReadInt (f, PRED_TYPE, 0);
RegisterAndReadInt (f, PRICE_TYPE, 0);
}
void ConfigTS::RegisterAndReadFloats(EnjoLib::Istream & f)
{
Expand All @@ -55,3 +56,12 @@ void ConfigTS::SetPredType(const PredictorType & type)
{
PRED_TYPE = static_cast<long int>(type);
}

PriceType ConfigTS::GetPriceType() const
{
return static_cast<PriceType>(PRICE_TYPE);
}
void ConfigTS::SetPriceType(const PriceType & type)
{
PRICE_TYPE = static_cast<long int>(type);
}
10 changes: 8 additions & 2 deletions src/lib-base/src/ConfigTS.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <Util/Str.hpp>

enum class PredictorType;
enum class PriceType;

class ConfigTS : public ConfigBase
{
Expand All @@ -18,19 +19,24 @@ class ConfigTS : public ConfigBase
void RegisterAndReadStrs (EnjoLib::Istream & ifs) override;

void FromOptsNumeric(const OptionsNumeric & optsNum) override;

PredictorType GetPredType() const;
void SetPredType(const PredictorType & type);

PriceType GetPriceType() const;
void SetPriceType(const PriceType & type);


static const char * DEFAULT_SCRIPT_FILE_NAME;

EnjoLib::Str m_scriptPathTxt;
bool crashOnRecoverableErrors = false;
bool PLOT_SERIES = true;
bool MT_REPORT = false;
bool MT_XFORM = false;

long int PRED_TYPE = 0;
long int PRICE_TYPE = 0;

protected:
EnjoLib::Str GetFileNameProt() const override;
Expand Down
8 changes: 2 additions & 6 deletions src/lib-base/src/OptiHigh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#include "ConfigTF2.h"
#include "OptimizerFactoryAbstract.h"

#include "OptiVar.h" /// TODO: Remove
//#include "OptiVar.h" /// TODO: Remove

#include <Ios/Osstream.hpp>
#include <Util/Str.hpp>
Expand Down Expand Up @@ -50,6 +50,7 @@ EnjoLib::Str OptiHigh::WalkForwardOptiIndiv(const ISymbol & sym, const IPeriod &
const OptiXValid & optiXvalidInitial = cvc.GetPass(i);
OptiXValid optiXvalid = optiXvalidInitial;

// This is how you'd create a simulator and pass it the accumulator:
//const SimulatorFactory simFact;
//Corrade::Containers::Pointer<ISimulatorStd> simul = simFact.CreateStandard(*stratPtr, 0, false, ConfigGlob().MIN_SCORE);
//simul->SetAccumulator(&simAccum);
Expand All @@ -63,12 +64,7 @@ EnjoLib::Str OptiHigh::WalkForwardOptiIndiv(const ISymbol & sym, const IPeriod &
ossPassed << "X-Valid - " + per.GetSymbolPeriodId() << " " << gm.round(iprogress / double(totalSize) * 100) << "%";
progressMonitHigh.PrintProgressBarTime(optiXvalid.xvalid.end, optiConst.Len(), ossPassed.str(), false);
{
//cout << "OPTI\n";
//gcfg.OPTI_USE = false;
//Optimizer opti(stratType, sym, period, fact.GetStrat(), optiXvalid.opti);
//confOpti.SetOptimizer(OptiType::OPTI_TYPE_FIND); /// TODO: Make it implicit in the optiBase(); and make OPTI_TYPE_XVALID?
CorPtr<IOptimizer> opti = optiFact.Create(optiXvalid.opti);
//optiBase.SetStartEnd(optiXvalid.opti);
(*opti)();
{
//{LOGL << "\nValid:\n";}
Expand Down
23 changes: 23 additions & 0 deletions src/lib-base/src/PriceTypeStr.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#include "PriceTypeStr.h"
#include "PriceType.h"

PriceTypeStr::PriceTypeStr()
{
for (int i = 0; i <= int(PriceType::TYPICAL); ++i)
{
const PriceType type = PriceType(i);
switch (type) // Generate compiler warnings
{
case PriceType::CLOSE: Add(i, "Close"); break;
case PriceType::OPEN: Add(i, "Open"); break;
case PriceType::LOW: Add(i, "Low"); break;
case PriceType::HIGH: Add(i, "High"); break;
case PriceType::WEIGHTED_CLOSE: Add(i, "Weighted close"); break;
case PriceType::TYPICAL: Add(i, "Typical"); break;
}
}
}

PriceTypeStr::~PriceTypeStr()
{
}
18 changes: 18 additions & 0 deletions src/lib-base/src/PriceTypeStr.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#ifndef PRICETYPESTR_H
#define PRICETYPESTR_H

#include <Util/EnumStringMap.hpp>


class PriceTypeStr : public EnjoLib::EnumStringMap
{
public:
PriceTypeStr();
virtual ~PriceTypeStr();

protected:

private:
};

#endif // PRICETYPESTR_H
17 changes: 3 additions & 14 deletions src/lib-base/src/URTWrap.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "URTWrap.h"

#include <Statistical/3rdParty/EigenUtil.hpp>
#include <Template/CorradePointer.h>

#include <STD/VectorCpp.hpp>
Expand All @@ -8,18 +9,6 @@ using namespace std;

URTWrap::URTWrap(){}

#include <Eigen/Dense>
/// TODO: Upstream to EnjoLib 3rd
static Eigen::VectorXd ConvertVector1( const EnjoLib::VecD & vec )
{
const int nrows = vec.size();
Eigen::VectorXd veceig(nrows);
for ( int i = 0; i < nrows; ++i )
veceig(i) = vec.at(i);

return veceig;
}

//#define USE_URT
#ifdef USE_URT
#include <URT.hpp>
Expand Down Expand Up @@ -62,11 +51,11 @@ class URTAlgo : public IURTAlgo
{
if (lags == 0)
{
m_algo = CorPtr<Algo>(new Algo(ConvertVector1(data.Data()), "AIC", "c"));
m_algo = CorPtr<Algo>(new Algo(EigenUtil::ConvertVector2Eigen(data.Data()), "AIC", "c"));
}
else
{
m_algo = CorPtr<Algo>(new Algo(ConvertVector1(data.Data()), lags, "c"));
m_algo = CorPtr<Algo>(new Algo(EigenUtil::ConvertVector2Eigen(data.Data()), lags, "c"));
}
}
virtual ~URTAlgo(){}
Expand Down
4 changes: 2 additions & 2 deletions src/tsqsim-lib/src/ITSXform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ unsigned ITSXform::MaxShift() const
return 0;
}

double ITSXform::GetVal(const IHasCandles & input, int idx) const
double ITSXform::GetVal(const IHasCandles & input, const PriceType & priceType, int idx) const
{
const Candle & can = input.GetCandle(idx);
return can.GetClose(); /// TODO: Return a common value
return can.GetPriceByType(priceType); /// TODO: Return a common value
}
5 changes: 3 additions & 2 deletions src/tsqsim-lib/src/ITSXform.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include <Util/VecD.hpp>

enum class PriceType;
class IHasCandles;
struct XformRes;

Expand All @@ -11,14 +12,14 @@ struct ITSXform
ITSXform();
virtual ~ITSXform();

virtual XformRes Run(const IHasCandles & input, int idx, double prevConverted) const = 0; /// TODO: remove valPrev
virtual XformRes Run(const IHasCandles & input, const PriceType & priceType, int idx, double prevConverted) const = 0; /// TODO: remove valPrev
virtual XformRes Run(const EnjoLib::VecD & vals) const = 0;
virtual double Invert(const EnjoLib::VecD & vals, double lost) const = 0;

/// virtual double Invert(const IHasCandles & input, int idx) const = 0; /// TODO HI-level iface
virtual unsigned MaxShift() const;

double GetVal(const IHasCandles & input, int idx) const;
double GetVal(const IHasCandles & input, const PriceType & priceType, int idx) const;
};

#endif // ITSXFORM_H
4 changes: 2 additions & 2 deletions src/tsqsim-lib/src/SimulatorTS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ void SimulatorTS::RunRaw(const StartEnd & startEndFrame)

std::vector<Inp> input;
VecD original;
const double initial = m_per.GetCandles().GetDataIter().at(idxStart).GetClose();
const double initial = m_per.GetCandles().GetDataIter().at(idxStart).GetPriceByType(m_cfgTS.GetPriceType());
//const double initial = m_per.GetCandles().GetDataIter().at(idxStart).GetHigh();
input.reserve(idxFinish - idxStart);
{
Expand All @@ -78,7 +78,7 @@ void SimulatorTS::RunRaw(const StartEnd & startEndFrame)
Get<2>(ele) = i;
input.push_back(ele);

original.Add(m_per.GetCandles().GetDataIter().at(i).GetClose());
original.Add(m_per.GetCandles().GetDataIter().at(i).GetPriceByType(m_cfgTS.GetPriceType()));
}
{
//LOGL << "Calculating... " << startEndFrame.ToStr() << "\n";
Expand Down
4 changes: 3 additions & 1 deletion src/tsqsim-lib/src/TSFunLua.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include "Candle.h"
//#include "IBufferCandles.h"
#include "ConfigTS.h"

#include <Util/FileUtils.hpp>
#include <Util/CoutBuf.hpp>
Expand Down Expand Up @@ -67,7 +68,8 @@ TSRes TSFunLua::OnDataPointProt(int idx) const
const Candle & canCurr = GetCandle(idx);
const Candle & canPrev = GetCandle(idx, 1);

const double ret = gmat.Fabs(canCurr.GetClose() - canPrev.GetClose());

const double ret = gmat.Fabs(canCurr.GetPriceByType(GetTSIn().m_cfgTS.GetPriceType()) - canPrev.GetPriceByType(GetTSIn().m_cfgTS.GetPriceType()));

TSRes res(true);
res.val = ret;
Expand Down
3 changes: 2 additions & 1 deletion src/tsqsim-lib/src/TSFunPrintCumul.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "TSFunPrintCumul.h"

#include "Candle.h"
#include "ConfigTS.h"

#include <Math/GeneralMath.hpp>
#include <Util/CoutBuf.hpp>
Expand All @@ -25,7 +26,7 @@ TSRes TSFunPrintCumul::OnDataPointProt(int idx) const
const Candle & canCurr = GetCandle(idx);
const Candle & canPrev = GetCandle(idx, 1);

const double ret = gmat.Sqrt(gmat.Fabs(canCurr.GetClose() - canPrev.GetClose()));// - 0.035;
const double ret = gmat.Sqrt(gmat.Fabs(canCurr.GetPriceByType(GetTSIn().m_cfgTS.GetPriceType()) - canPrev.GetPriceByType(GetTSIn().m_cfgTS.GetPriceType())));// - 0.035;

TSRes res(true);
res.val = ret;
Expand Down
1 change: 1 addition & 0 deletions src/tsqsim-lib/src/TSFunTxt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ using namespace EnjoLib;

TSFunTxt::TSFunTxt(const TSInput & tsin)
: TSFunBase(tsin)
, m_xformMan(tsin.m_cfgTS.GetPriceType())
{
//const CharManipulations cman;
const Tokenizer tok;
Expand Down
3 changes: 2 additions & 1 deletion src/tsqsim-lib/src/TSFunXForm.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "TSFunXForm.h"
#include "ConfigTS.h"

#include "Candle.h"

Expand All @@ -20,7 +21,7 @@ TSRes TSFunXForm::OnDataPointProt(int idx) const
const Candle & canCurr = GetCandle(idx);
const Candle & canPrev = GetCandle(idx, 1);

const double ret = gmat.Fabs(canCurr.GetClose() - canPrev.GetClose());
const double ret = gmat.Fabs(canCurr.GetPriceByType(GetTSIn().m_cfgTS.GetPriceType()) - canPrev.GetPriceByType(GetTSIn().m_cfgTS.GetPriceType()));

TSRes res(true);
res.val = ret;
Expand Down
25 changes: 11 additions & 14 deletions src/tsqsim-lib/src/TSXformImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,22 @@ TSXformDiff::TSXformDiff(const VecStr & params)
m_order = CharManipulations().ToInt(params.at(0));
}
}
XformRes TSXformDiff::Run(const IHasCandles & input, int idx, double prevConverted) const
XformRes TSXformDiff::Run(const IHasCandles & input, const PriceType & priceType, int idx, double prevConverted) const
{
const Candle & canCurr = input.GetCandle(idx);
double prev = prevConverted ;
if (idx < int(input.Len()) - int(MaxShift())) /// TODO: Retarded from a user's perspective. It should be: "if (i > 0)" ?
{
const Candle & canPrev = input.GetCandle(idx, 1);
prev = canPrev.GetClose();
prev = canPrev.GetPriceByType(priceType);
//prev = 0;
}
else
{
//LOGL << "Prev = " << prev << Nl;
}
//const double diff = canCurr.GetClose() - prev;
//const double diff = canCurr.GetHigh() - prev;
//return diff;
VecD inp;
inp.Add(canCurr.GetClose());
inp.Add(canCurr.GetPriceByType(priceType));
inp.Add(prev);
const XformRes & diff = Run(inp);
return diff;
Expand All @@ -64,12 +61,12 @@ unsigned TSXformDiff::MaxShift() const
return m_order;
}

XformRes TSXformOrig::Run(const IHasCandles & input, int idx, double prevConverted) const
XformRes TSXformOrig::Run(const IHasCandles & input, const PriceType & priceType, int idx, double prevConverted) const
{
XformRes res;

const Candle & canCurr = input.GetCandle(idx);
res.conv = canCurr.GetClose();
res.conv = canCurr.GetPriceByType(priceType);

return res; /// TODO: Get a common value of candle
}
Expand All @@ -84,7 +81,7 @@ double TSXformOrig::Invert(const EnjoLib::VecD & vals, double lost) const
return vals.at(0);
}

XformRes TSXformFabs::Run(const IHasCandles & input, int idx, double prevConverted) const
XformRes TSXformFabs::Run(const IHasCandles & input, const PriceType & priceType, int idx, double prevConverted) const
{
return Run(VecD(1, prevConverted));
}
Expand All @@ -100,7 +97,7 @@ double TSXformFabs::Invert(const EnjoLib::VecD & vals, double lost) const
return vals.at(0) * lost;
}

XformRes TSXformSqrt::Run(const IHasCandles & input, int idx, double prevConverted) const
XformRes TSXformSqrt::Run(const IHasCandles & input, const PriceType & priceType, int idx, double prevConverted) const
{
return Run(VecD(1, prevConverted));
}
Expand Down Expand Up @@ -131,7 +128,7 @@ double TSXformSqrt::Invert(const EnjoLib::VecD & vals, double lost) const
return valPrev < 0 ? -pow : pow;
}

XformRes TSXformLog::Run(const IHasCandles & input, int idx, double prevConverted) const
XformRes TSXformLog::Run(const IHasCandles & input, const PriceType & priceType, int idx, double prevConverted) const
{
return Run(VecD(1, prevConverted));
}
Expand Down Expand Up @@ -174,7 +171,7 @@ TSXformAdd::TSXformAdd(const VecStr & params)
: m_add(CharManipulations().ToDouble(params.at(0)))
{
}
XformRes TSXformAdd::Run(const IHasCandles & input, int idx, double prevConverted) const
XformRes TSXformAdd::Run(const IHasCandles & input, const PriceType & priceType, int idx, double prevConverted) const
{
return Run(VecD(1, prevConverted));
}
Expand All @@ -192,7 +189,7 @@ TSXformMul::TSXformMul(const VecStr & params)
{
Assertions::IsNonZero(m_mul, "TSXformMul::TSXformMul()");
}
XformRes TSXformMul::Run(const IHasCandles & input, int idx, double prevConverted) const
XformRes TSXformMul::Run(const IHasCandles & input, const PriceType & priceType, int idx, double prevConverted) const
{
return Run(VecD(1, prevConverted));
}
Expand All @@ -210,7 +207,7 @@ TSXformDiv::TSXformDiv(const VecStr & params)
{
Assertions::IsNonZero(m_div, "TSXformDiv::TSXformDiv()");
}
XformRes TSXformDiv::Run(const IHasCandles & input, int idx, double prevConverted) const
XformRes TSXformDiv::Run(const IHasCandles & input, const PriceType & priceType, int idx, double prevConverted) const
{
return Run(VecD(1, prevConverted));
}
Expand Down
Loading