Utility Classes of the SDK
DowntimeTradeSignal
Copy
class DowntimeTradeSignal
Copy
// following parameters are available
$this->registerIntParam("pastStartIndex", 1, 0, null, "Start Index");
$this->registerIntParam("pastEntryCount", 15, 1, null, "Length");
$this->registerIntParam("zeroTradesInRow", 3, 1, null, "Zero Trades In Row");
DowntimeTradeSignal example class
Copy
class DowntimeTradeSignalExample extends UserTradeSignalBase
{
private DowntimeTradeSignal $_downtimeSignal;
protected function init(?ParamValues $params = null)
{
$downtimeTradeSignalParams = $params?->getChildParams("downtimeSignal");
// you can also set the parameters manually
//$downtimeTradeSignalParams->setParam("pastStartIndex", 1);
//$downtimeTradeSignalParams->setParam("pastEntryCount", 15);
//$downtimeTradeSignalParams->setParam("zeroTradesInRow", 5);
$this->_downtimeSignal = new DowntimeTradeSignal($downtimeTradeSignalParams);
$this->registerSignal($this->_downtimeSignal);
$this->registerDefinitionClass("downtimeSignal", $this->_downtimeSignal, "Downtime");
}
function getSignalInfo(TradeContext $tradeContext):TradeSignalInfo
{
$ohlcEntry = $tradeContext->ohlcEntry;
if ($this->_downtimeSignal->getSignalInfo($tradeContext))
{
// we have a downtime signal, so stop trading
return null;
}
...
}
}
VolumeTradeSignal
Copy
class VolumeTradeSignal
Copy
// following parameters are available
$this->registerIntParam("pastStartIndex", 1, 0, null, "Start Index");
$this->registerIntParam("pastEntryCount", 15, 0, null, "Length");
$this->registerFloatParam("minVolume", 0, 0, null, "Min Volume");
$this->registerEnumParam("calcType", OHLCDataEntryValueType::class, OHLCDataEntryValueType::WeightedAvg, "Calc Type");
VolumeTradeSignal example class
Copy
class VolumeTradeSignalExample extends UserTradeSignalBase
{
private VolumeTradeSignal $_volumeSignal;
protected function init(?ParamValues $params = null)
{
$volumeTradeSignalParams = $params?->getChildParams("volumeSignal");
// you can also set the parameters manually
//$volumeTradeSignalParams->setParam("pastStartIndex", 1);
//$volumeTradeSignalParams->setParam("pastEntryCount", 15);
//$volumeTradeSignalParams->setParam("minVolume", 5000);
//$volumeTradeSignalParams->setParam("calcType", 5, OHLCDataEntryValueType::WeightedAvg);
$this->_volumeSignal = new VolumeTradeSignal($volumeTradeSignalParams);
$this->registerSignal($this->_volumeSignal);
$this->registerDefinitionClass("volumeSignal", $this->_volumeSignal, "Volume");
}
function getSignalInfo(TradeContext $tradeContext):TradeSignalInfo
{
$ohlcEntry = $tradeContext->ohlcEntry;
if (!$this->_volumeSignal->getSignalInfo($tradeContext))
{
// we have no volume signal (not enough volume for the configured time), so stop trading
return null;
}
...
}
}
IndicatorCrossTradeSignal
Copy
class IndicatorCrossTradeSignal
Copy
// following parameters are available
$this->registerEnumParam("crossType", IndicatorCrossType::class, null, "Cross Type");
$this->registerClassParam("indicator1", IndicatorBase::class, "Indicator #1");
$this->registerStringParam("indicator1Key", "", "Indicator #1 Key");
$this->registerClassParam("indicator2", IndicatorBase::class, "Indicator #2");
$this->registerStringParam("indicator2Key", "", "Indicator #2 Key");
IndicatorCrossTradeSignal example class
Copy
class IndicatorCrossTradeSignalExample extends UserTradeSignalBase
{
private IndicatorCrossTradeSignal $_indicatorCrossSignal;
protected function init(?ParamValues $params = null)
{
// NOTE: you could also set the parameters via $params
$indicator1 = new IndicatorSMA(ParamValues::fromArray(array("ohlcKey" => $params->getParam("sma1OHLCKey", OHLCKeyType::Close), "timePeriod" => $params->getParam("sma1Period", 9))));
$indicator2 = new IndicatorSMA(ParamValues::fromArray(array("ohlcKey" => $params->getParam("sma2OHLCKey", OHLCKeyType::Close), "timePeriod" => $params->getParam("sma2Period", 21))));
$indicatorCrossTradeSignalParams = new ParamValues();
$indicatorCrossTradeSignalParams->setParam("crossType", $params->getParam("crossType", IndicatorCrossType::Up));
$indicatorCrossTradeSignalParams->setParam("indicator1", $indicator1);
$indicatorCrossTradeSignalParams->setParam("indicator2", $indicator2);
$this->_indicatorCrossSignal = new IndicatorCrossTradeSignal($indicatorCrossTradeSignalParams);
$this->registerSignal($this->_indicatorCrossSignal);
$this->registerDefinitionClass("indicatorCrossSignal", $this->_indicatorCrossSignal, "IndicatorCross");
}
function getSignalInfo(TradeContext $tradeContext):TradeSignalInfo
{
$ohlcEntry = $tradeContext->ohlcEntry;
if ($this->_indicatorCrossSignal->getSignalInfo($tradeContext))
{
// we have a signal that the 2 SMA indicators have crossed UP
// do somthing here
...
}
...
}
}
Utility functions of the SDK
- Arc Cosine
- Arc Sine
- Arc Tangent
- Highest Value
- Index of Highest Value
- MidPoint over Period
- Midpoint Price over Period
- Lowest Value
- Index of Lowest Value
- Lowest and Highest Values
- Indexes of Lowest and Highest Values
- Summation
Vector Functions
- Vector Addition
- Vector Ceil
- Vector Cosine
- Vector Cosh
- Vector Division
- Vector Exponential
- Vector Floor
- Vector Natural Logarithm
- Vector Base-10 Logarithm
- Vector Multiplication
- Vector Sine
- Vector Sinh
- Vector Square Root
- Vector Subtraction
- Vector Tangent
- Vector Tanh
SDK Functions
Copy
/**
* Calculates the arc cosine for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_acos(array $real):array
Copy
/**
* Highest value over a specified period
*
* @param array $real Array of real values.
* @param ?int $timePeriod [OPTIONAL] [DEFAULT 30] Number of period. Valid range from 2 to 100000.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_max(array $real, int $timePeriod = null):array
Copy
/**
* Index of highest value over a specified period
*
* @param array $real Array of real values.
* @param ?int $timePeriod [OPTIONAL] [DEFAULT 30] Number of period. Valid range from 2 to 100000.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_maxindex(array $real, int $timePeriod = null):array
Copy
/**
* MidPoint over period
*
* @param array $real Array of real values.
* @param ?int $timePeriod [OPTIONAL] [DEFAULT 14] Number of period. Valid range from 2 to 100000.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_midpoint(array $real, int $timePeriod = null):array
Copy
/**
* Midpoint Price over period
*
* @param array $high High price, array of real values.
* @param array $low Low price, array of real values.
* @param ?int $timePeriod [OPTIONAL] [DEFAULT 14] Number of period. Valid range from 2 to 100000.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_midprice(array $high, array $low, int $timePeriod = null):array
Copy
/**
* Lowest value over a specified period
*
* @param array $real Array of real values.
* @param ?int $timePeriod [OPTIONAL] [DEFAULT 30] Number of period. Valid range from 2 to 100000.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_min(array $real, int $timePeriod = null):array
Copy
/**
* Index of lowest value over a specified period
*
* @param array $real Array of real values.
* @param ?int $timePeriod [OPTIONAL] [DEFAULT 30] Number of period. Valid range from 2 to 100000.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_minindex(array $real, int $timePeriod = null):array
Copy
/**
* Lowest and highest values over a specified period
*
* @param array $real Array of real values.
* @param ?int $timePeriod [OPTIONAL] [DEFAULT 30] Number of period. Valid range from 2 to 100000.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_minmax(array $real, int $timePeriod = null):array
Copy
/**
* Indexes of lowest and highest values over a specified period
*
* @param array $real Array of real values.
* @param ?int $timePeriod [OPTIONAL] [DEFAULT 30] Number of period. Valid range from 2 to 100000.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_minmaxindex(array $real, int $timePeriod = null):array
Copy
/**
* Summation
*
* @param array $real Array of real values.
* @param ?int $timePeriod [OPTIONAL] [DEFAULT 30] Number of period. Valid range from 2 to 100000.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_sum(array $real, int $timePeriod = null):array
Copy
/**
* Calculates the vector addition of real0 to real1 and returns the resulting vector.
*
* @param array $real0 Array of real values.
* @param array $real1 Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_add(array $real0, array $real1):array
Copy
/**
* Vector Trigonometric ASin
* Calculates the arc sine for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_asin(array $real):array
Copy
/**
* Vector Trigonometric ATan
* Calculates the arc tangent for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_atan(array $real):array
Copy
/**
* Vector Ceil
* Calculates the next highest integer for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_ceil(array $real):array
Copy
/**
* Vector Trigonometric Cos
* Calculates the cosine for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_cos(array $real):array
Copy
/**
* Vector Trigonometric Cosh
* Calculates the hyperbolic cosine for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_cosh(array $real):array
Copy
/**
* Vector Arithmetic Div
* Divides each value from real0 by the corresponding value from real1 and returns the resulting array.
*
* @param array $real0 Array of real values.
* @param array $real1 Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_div(array $real0, array $real1):array
Copy
/**
* Vector Arithmetic Exp
* Calculates e raised to the power of each value in real. Returns an array with the calculated data.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_exp(array $real):array
Copy
/**
* Vector Floor
* Calculates the next lowest integer for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_floor(array $real):array
Copy
/**
* Vector Log Natural
* Calculates the natural logarithm for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_ln(array $real):array
Copy
/**
* Vector Log10
* Calculates the base-10 logarithm for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_log10(array $real):array
Copy
/**
* Vector Arithmetic Mult
* Calculates the vector dot product of real0 with real1 and returns the resulting vector.
*
* @param array $real0 Array of real values.
* @param array $real1 Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_mult(array $real0, array $real1):array
Copy
/**
* Vector Trigonometric Sin
* Calculates the sine for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_sin(array $real):array
Copy
/**
* Vector Trigonometric Sinh
* Calculates the hyperbolic sine for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_sinh(array $real):array
Copy
/**
* Vector Square Root
* Calculates the square root of each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_sqrt(array $real):array
Copy
/**
* Vector Arithmetic Subtraction
* Calculates the vector subtraction of real1 from real0 and returns the resulting vector.
*
* @param array $real0 Array of real values.
* @param array $real1 Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_sub(array $real0, array $real1):array
Copy
/**
* Vector Trigonometric Tan
* Calculates the tangent for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_tan(array $real):array
Copy
/**
* Vector Trigonometric Tanh
* Calculates the hyperbolic tangent for each value in real and returns the resulting array.
*
* @param array $real Array of real values.
*
* @return array Returns an array with calculated data or false on failure.
* @throws Exception
*/
bb_tanh(array $real):array

