namespace QuantConnect.Algorithm.CSharp
{
public class BasicTemplateAlgorithm : QCAlgorithm
{
decimal cashLeft = 100000;
public override void Initialize()
{
SetBrokerageModel(BrokerageName.GDAX, AccountType.Cash);
SetStartDate(2017, 12, 01); //Set Start Date
SetEndDate(2017, 12, 12); //Set End Date
SetCash(cashLeft); //Set Strategy Cash
AddCrypto("BTCUSD", Resolution.Daily, Market.GDAX);
}
public override void OnData(Slice data)
{
Debug("BTC Price is $" + data.Bars["BTCUSD"].Close + " and Buying Power is $" + Portfolio.GetBuyingPower("BTCUSD"));
if (Portfolio.GetBuyingPower("BTCUSD") > data.Bars["BTCUSD"].Close)
{
var ticket = MarketOrder("BTCUSD", 1);
if (ticket.Status == OrderStatus.Filled)
{
var fills = ticket.OrderEvents.Where(orderEvent => orderEvent.Status.IsFill()).ToList();
Debug("Bought! Now have " + Portfolio["BTCUSD"].Quantity + " coins");
cashLeft -= fills.Sum(fill => fill.FillPrice);
Debug("Actual Cash Left: " + cashLeft);
Debug("Delta Cash (error): " + (Portfolio.GetBuyingPower("BTCUSD") - cashLeft));
Debug(" ");
}
else
{
Debug("Failed Fill");
Debug(" ");
}
}
else
{
Debug("Not enough buying power");
Debug(" ");
}
}
}
}