trophy

Long Only, ETF Alpha Streams Competition with $27,500 Prize Pool

Back

Using Indicators with Futures

hi,

I am trying to build a simple algo that uses indicators on Futures.

I keep getting this error at runtime:


During the algorithm initialization, the following exception has occurred: Please register to receive data for symbol ' ' using the AddSecurity() function.

Any idea what am I doing wrong here ?




namespace QuantConnect
{
/*
* QuantConnect University: Bollinger Bands Example:
*/
public class BollingerBandsAlgorithm : QCAlgorithm
{
string _symbol = "ZN";
BollingerBands _bb;
RelativeStrengthIndex _rsi;
AverageTrueRange _atr;
ExponentialMovingAverage _ema;
SimpleMovingAverage _sma;
MovingAverageConvergenceDivergence _macd;

decimal _price;

//Initialize the data and resolution you require for your strategy:
public override void Initialize()
{
//Initialize
SetStartDate(2018, 1, 1);
SetEndDate(2018, 2, 1);
SetCash(25000);

//Add as many securities as you like. All the data will be passed into the event handler:
AddSecurity(SecurityType.Future, _symbol, Resolution.Minute);

//Set up Indicators:
_bb = BB(_symbol, 20, 1, MovingAverageType.Simple, Resolution.Daily);
_rsi = RSI(_symbol, 14, MovingAverageType.Simple, Resolution.Daily);
_atr = ATR(_symbol, 14, MovingAverageType.Simple, Resolution.Daily);
_ema = EMA(_symbol, 14, Resolution.Daily);
_sma = SMA(_symbol, 14, Resolution.Daily);
_macd = MACD(_symbol, 12, 26, 9, MovingAverageType.Simple, Resolution.Daily);
}

public void OnData(TradeBars data)
{
if (!_bb.IsReady || !_rsi.IsReady) return;

_price = data["ZN"].Close;

if (!Portfolio.HoldStock)
{
int quantity = (int)Math.Floor(Portfolio.Cash / data[_symbol].Close);

//Order function places trades: enter the string symbol and the quantity you want:
Order(_symbol, quantity);

//Debug sends messages to the user console: "Time" is the algorithm time keeper object
Debug("Purchased ZN on " + Time.ToShortDateString());
}
}

// Fire plotting events once per day:
public override void OnEndOfDay() {
if (!_bb.IsReady) return;

Plot("BB", "Price", _price);
Plot("BB", _bb.UpperBand, _bb.MiddleBand, _bb.LowerBand);

Plot("RSI", _rsi);

Plot("ATR", _atr);

Plot("MACD", "Price", _price);
Plot("MACD", _macd.Fast, _macd.Slow);

Plot("Averages", _ema, _sma);
}
}
}

 

Update Backtest







0

The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.


Hi Yuval,

"ZN" will subscribe to Futures data but dealing with Futures requires that you define a filter for contract expiration dates, and when Futures data gets passed into OnData it is passed Slice objects that contain Futures Chains, which in turn are made up of specific Futures Contracts -- this means that data['ZN'] won't return any sort of data object, and this is the cause of the error you are seeing. Additionally, indicators will need to be made for each specific contract rather than for "ZN". The best place to look to familiarize yourself with these would be to look here and here, and hopefully, this and other posts in the forum will provide helpful guidance.

0

The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.


Update Backtest





0

The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.


Loading...

This discussion is closed