public void Initialize()
 {
     _algorithm = new QCAlgorithm();
     _algorithm.SetBrokerageModel(BrokerageName.FxcmBrokerage);
     _algorithm.SetCash(100000);
     _algorithm.AddSecurity(SecurityType.Forex, Ticker);
     _algorithm.SetFinishedWarmingUp();
 }
        public void Setup()
        {
            _algo =  new QCAlgorithm();
            var historyProvider = new SubscriptionDataReaderHistoryProvider();
            historyProvider.Initialize(null,
                                       new LocalDiskMapFileProvider(),
                                       new LocalDiskFactorFileProvider(),
                                       new DefaultDataFileProvider(),
                                       null);

            _algo.HistoryProvider = historyProvider;

            _security = new Security(SecurityExchangeHours.AlwaysOpen(DateTimeZone.Utc),
                                        _config,
                                        new Cash(CashBook.AccountCurrency, 0, 1m),
                                        SymbolProperties.GetDefault(CashBook.AccountCurrency));

            _brokerageInitializer = new BrokerageModelSecurityInitializer(new DefaultBrokerageModel(),
                                                                             new FuncSecuritySeeder(_algo.GetLastKnownPrice));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="DollarVolumeUniverseDefinitions"/> class
 /// </summary>
 /// <param name="algorithm">The algorithm instance, used for obtaining the default <see cref="UniverseSettings"/></param>
 public DollarVolumeUniverseDefinitions(QCAlgorithm algorithm)
 {
     _algorithm = algorithm;
 }
Exemplo n.º 4
0
 /// <summary>
 /// Parameter constructor to inject the algorithm to report from
 /// </summary>
 /// <param name="algorithm">the algorithm running</param>
 public TradeBarReporter(QCAlgorithm algorithm)
 {
     _algorithm        = algorithm;
     _logHandler       = Composer.Instance.GetExportedValueByTypeName <ILogHandler>("CustomFileLogHandler");
     HasPrintedHeading = false;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DollarVolumeUniverseDefinitions"/> class
 /// </summary>
 /// <param name="algorithm">The algorithm instance, used for obtaining the default <see cref="UniverseSettings"/></param>
 public DollarVolumeUniverseDefinitions(QCAlgorithm algorithm)
 {
     _algorithm = algorithm;
 }
Exemplo n.º 6
0
 public void SetHoldings_Short_RoundOff()
 {
     var algo = new QCAlgorithm();
     algo.AddSecurity(SecurityType.Forex, "EURUSD");
     algo.SetCash(100000);
     algo.SetBrokerageModel(BrokerageName.FxcmBrokerage);
     algo.Securities[Symbols.EURUSD].TransactionModel = new ConstantFeeTransactionModel(0);
     Security eurusd = algo.Securities[Symbols.EURUSD];
     // Set Price to $26
     Update(eurusd, 26);
     // So -100000/26 = -3846, After Rounding off becomes -3000
     var actual = algo.CalculateOrderQuantity(Symbols.EURUSD, -1m);
     Assert.AreEqual(-3000m, actual);
 }
Exemplo n.º 7
0
 public OrderTransactionFactory(QCAlgorithm algorithm)
 {
     _algorithm = algorithm;
 }
Exemplo n.º 8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CandlestickPatterns"/> class
 /// </summary>
 /// <param name="algorithm">The algorithm instance</param>
 public CandlestickPatterns(QCAlgorithm algorithm)
 {
     _algorithm = algorithm;
 }
Exemplo n.º 9
0
 private QCAlgorithm GetAlgorithm(out Security msft, decimal initialMarginRequirement, decimal maintenanceMarginRequirement, decimal fee)
 {
     //Initialize algorithm
     var algo = new QCAlgorithm();
     algo.AddSecurity(SecurityType.Equity, "MSFT");
     algo.SetCash(100000);
     algo.Securities[Symbols.MSFT].TransactionModel = new ConstantFeeTransactionModel(fee);
     msft = algo.Securities[Symbols.MSFT];
     msft.MarginModel = new SecurityMarginModel(initialMarginRequirement, maintenanceMarginRequirement);
     return algo;
 }
Exemplo n.º 10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CandlestickPatterns"/> class
 /// </summary>
 /// <param name="algorithm">The algorithm instance</param>
 public CandlestickPatterns(QCAlgorithm algorithm)
 {
     _algorithm = algorithm;
 }
Exemplo n.º 11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UniverseDefinitions"/> class
 /// </summary>
 /// <param name="algorithm">The algorithm instance, used for obtaining the default <see cref="UniverseSettings"/></param>
 public UniverseDefinitions(QCAlgorithm algorithm)
 {
     DollarVolume = new DollarVolumeUniverseDefinitions(algorithm);
     Index        = new IndexUniverseDefinitions(algorithm);
     Constituent  = new ConstituentUniverseDefinitions(algorithm);
 }
Exemplo n.º 12
0
 //[Test]
 //public void SetHoldings_LongToLonger_PriceRise()
 //{
 //    var algo = GetAlgorithm();
 //    //Set price to $25
 //    algo.Securities.Update(DateTime.Now, Update("MSFT", 25));
 //    //Half cash spent on 2000 MSFT shares.
 //    algo.Portfolio.SetCash(50000);
 //    algo.Portfolio["MSFT"].SetHoldings(25, 2000);
 //    //Price rises to $50.
 //    algo.Securities.Update(DateTime.Now, Update("MSFT", 50));
 //    //Now: 2000 * 50 = $100k Holdings, $50k Cash: $150k. MSFT is already 66% of holdings.
 //    //Calculate the order for 75% MSFT:
 //    var actual = algo.CalculateOrderQuantity("MSFT", 0.75m);
 //    //Need to buy to make position $112.5k == $12.5k / 50 = 250 shares
 //    Assert.AreEqual(250, actual);
 //}
 //[Test]
 //public void SetHoldings_LongerToLong_PriceRise()
 //{
 //    var algo = GetAlgorithm();
 //    //Set price to $25
 //    algo.Securities.Update(DateTime.Now, Update("MSFT", 25));
 //    //75% cash spent on 3000 MSFT shares.
 //    algo.Portfolio.SetCash(25000);
 //    algo.Portfolio["MSFT"].SetHoldings(25, 3000);
 //    //Price rises to $50.
 //    algo.Securities.Update(DateTime.Now, Update("MSFT", 50));
 //    //Now: 3000 * 50 = $150k Holdings, $25k Cash: $175k. MSFT is 86% of holdings.
 //    //Calculate the order for 50% MSFT:
 //    var actual = algo.CalculateOrderQuantity("MSFT", 0.5m);
 //    //Need to sell to 50% = 87.5k target from $150k = 62.5 / $50-share = 1250
 //    Assert.AreEqual(-1250, actual);
 //}
 //[Test]
 //public void SetHoldings_LongToShort_PriceRise()
 //{
 //    var algo = GetAlgorithm();
 //    //Set price to $25
 //    algo.Securities.Update(DateTime.Now, Update("MSFT", 25));
 //    //Half cash spent on 2000 MSFT shares.
 //    algo.Portfolio.SetCash(50000);
 //    algo.Portfolio["MSFT"].SetHoldings(25, 2000);
 //    //Price rises to $50.
 //    algo.Securities.Update(DateTime.Now, Update("MSFT", 50));
 //    //Now: 2000 * 50 = $100k Holdings, $50k Cash: $150k. MSFT is 66% of holdings.
 //    var actual = algo.CalculateOrderQuantity("MSFT", -0.5m);
 //    // Need to hold -75k from $100k = delta: $175k / $50-share = -3500 shares.
 //    Assert.AreEqual(-3500, actual);
 //}
 //[Test]
 //public void SetHoldings_ShortToShorter_PriceRise()
 //{
 //    var algo = GetAlgorithm();
 //    //Set price to $25
 //    algo.Securities.Update(DateTime.Now, Update("MSFT", 25));
 //    //Half cash spent on -2000 MSFT shares.
 //    algo.Portfolio.SetCash(50000);
 //    algo.Portfolio["MSFT"].SetHoldings(25, -2000);
 //    //Price rises to $50.
 //    algo.Securities.Update(DateTime.Now, Update("MSFT", 50));
 //    //Now: 2000 * 50 = $0k Net Holdings, $50k Cash: $50k. MSFT is 0% of holdings.
 //    var actual = algo.CalculateOrderQuantity("MSFT", -0.75m);
 //    //Want to hold -75% of MSFT: 50k total, -37.5k / $50-share = -750 TOTAL.
 //    // Currently -2000, so net order +1250.
 //    Assert.AreEqual(1250, actual);
 //}
 //[Test]
 //public void SetHoldings_ShortToLong_PriceRise()
 //{
 //    var algo = GetAlgorithm();
 //    //Set price to $25
 //    algo.Securities.Update(DateTime.Now, Update("MSFT", 25));
 //    //Half cash spent on -2000 MSFT shares.
 //    algo.Portfolio.SetCash(50000);
 //    algo.Portfolio["MSFT"].SetHoldings(25, -2000);
 //    //Price rises to $50.
 //    algo.Securities.Update(DateTime.Now, Update("MSFT", 50));
 //    //Now: 2000 * 50 = $0k Net Holdings, $50k Cash: $50k. MSFT is 0% of holdings.
 //    var actual = algo.CalculateOrderQuantity("MSFT", 0.5m);
 //    //We want to be 50% long, this is currently +2000 holdings + 50% 50k = $25k/ $50-share=500
 //    Assert.AreEqual(2500, actual);
 //}
 private QCAlgorithm GetAlgorithm()
 {
     //Initialize algorithm
     var algo = new QCAlgorithm();
     algo.AddSecurity(SecurityType.Equity, "MSFT");
     algo.SetCash(100000);
     algo.Securities["MSFT"].TransactionModel = new ConstantFeeTransactionModel(0);
     return algo;
 }
Exemplo n.º 13
0
 public OrderReporter(QCAlgorithm algorithm)
 {
     _algorithm = algorithm;
     _logHandler = Composer.Instance.GetExportedValueByTypeName<ILogHandler>("TransactionFileLogHandler");
 }
Exemplo n.º 14
0
 public void Setup()
 {
     _algo = new QCAlgorithm();
     SymbolCache.TryRemove(ForexSym);
     SymbolCache.TryRemove(Sym);
 }
Exemplo n.º 15
0
 public Contract_ES(QCAlgorithm Algorithm_ES)
 {
     _Algorithm_ES = Algorithm_ES;
 }
Exemplo n.º 16
0
        //[Test]
        //public void SetHoldings_LongToLonger_PriceRise()
        //{
        //    var algo = GetAlgorithm();
        //    //Set price to $25
        //    Update(msft, 25));
        //    //Half cash spent on 2000 MSFT shares.
        //    algo.Portfolio.SetCash(50000);
        //    algo.Portfolio[Symbols.MSFT].SetHoldings(25, 2000);

        //    //Price rises to $50.
        //    Update(msft, 50));

        //    //Now: 2000 * 50 = $100k Holdings, $50k Cash: $150k. MSFT is already 66% of holdings.
        //    //Calculate the order for 75% MSFT:
        //    var actual = algo.CalculateOrderQuantity(Symbols.MSFT, 0.75m);

        //    //Need to buy to make position $112.5k == $12.5k / 50 = 250 shares
        //    Assert.AreEqual(250, actual);
        //}

        //[Test]
        //public void SetHoldings_LongerToLong_PriceRise()
        //{
        //    var algo = GetAlgorithm();
        //    //Set price to $25
        //    Update(msft, 25));

        //    //75% cash spent on 3000 MSFT shares.
        //    algo.Portfolio.SetCash(25000);
        //    algo.Portfolio[Symbols.MSFT].SetHoldings(25, 3000);

        //    //Price rises to $50.
        //    Update(msft, 50));

        //    //Now: 3000 * 50 = $150k Holdings, $25k Cash: $175k. MSFT is 86% of holdings.
        //    //Calculate the order for 50% MSFT:
        //    var actual = algo.CalculateOrderQuantity(Symbols.MSFT, 0.5m);

        //    //Need to sell to 50% = 87.5k target from $150k = 62.5 / $50-share = 1250
        //    Assert.AreEqual(-1250, actual);
        //}


        //[Test]
        //public void SetHoldings_LongToShort_PriceRise()
        //{
        //    var algo = GetAlgorithm();
        //    //Set price to $25
        //    Update(msft, 25));
        //    //Half cash spent on 2000 MSFT shares.
        //    algo.Portfolio.SetCash(50000);
        //    algo.Portfolio[Symbols.MSFT].SetHoldings(25, 2000);

        //    //Price rises to $50.
        //    Update(msft, 50));

        //    //Now: 2000 * 50 = $100k Holdings, $50k Cash: $150k. MSFT is 66% of holdings.
        //    var actual = algo.CalculateOrderQuantity(Symbols.MSFT, -0.5m);

        //    // Need to hold -75k from $100k = delta: $175k / $50-share = -3500 shares.
        //    Assert.AreEqual(-3500, actual);
        //}

        //[Test]
        //public void SetHoldings_ShortToShorter_PriceRise()
        //{
        //    var algo = GetAlgorithm();
        //    //Set price to $25
        //    Update(msft, 25));
        //    //Half cash spent on -2000 MSFT shares.
        //    algo.Portfolio.SetCash(50000);
        //    algo.Portfolio[Symbols.MSFT].SetHoldings(25, -2000);

        //    //Price rises to $50.
        //    Update(msft, 50));

        //    //Now: 2000 * 50 = $0k Net Holdings, $50k Cash: $50k. MSFT is 0% of holdings.
        //    var actual = algo.CalculateOrderQuantity(Symbols.MSFT, -0.75m);

        //    //Want to hold -75% of MSFT: 50k total, -37.5k / $50-share = -750 TOTAL. 
        //    // Currently -2000, so net order +1250.
        //    Assert.AreEqual(1250, actual);
        //}

        //[Test]
        //public void SetHoldings_ShortToLong_PriceRise()
        //{
        //    var algo = GetAlgorithm();
        //    //Set price to $25
        //    Update(msft, 25));
        //    //Half cash spent on -2000 MSFT shares.
        //    algo.Portfolio.SetCash(50000);
        //    algo.Portfolio[Symbols.MSFT].SetHoldings(25, -2000);

        //    //Price rises to $50.
        //    Update(msft, 50));

        //    //Now: 2000 * 50 = $0k Net Holdings, $50k Cash: $50k. MSFT is 0% of holdings.
        //    var actual = algo.CalculateOrderQuantity(Symbols.MSFT, 0.5m);

        //    //We want to be 50% long, this is currently +2000 holdings + 50% 50k = $25k/ $50-share=500
        //    Assert.AreEqual(2500, actual);
        //}


        private QCAlgorithm GetAlgorithm(out Security msft, decimal leverage, decimal fee)
        {
            //Initialize algorithm
            var algo = new QCAlgorithm();
            algo.AddSecurity(SecurityType.Equity, "MSFT");
            algo.SetCash(100000);
            algo.Securities[Symbols.MSFT].TransactionModel = new ConstantFeeTransactionModel(fee);
            msft = algo.Securities[Symbols.MSFT];
            msft.SetLeverage(leverage);
            return algo;
        }
Exemplo n.º 17
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UniverseDefinitions"/> class
 /// </summary>
 /// <param name="algorithm">The algorithm instance, used for obtaining the default <see cref="UniverseSettings"/></param>
 public UniverseDefinitions(QCAlgorithm algorithm)
 {
     DollarVolume = new DollarVolumeUniverseDefinitions(algorithm);
 }
Exemplo n.º 18
0
 public void SetHoldings_Long_ToZero_RoundOff()
 {
     var algo = new QCAlgorithm();
     algo.AddSecurity(SecurityType.Forex, "EURUSD");
     algo.SetCash(10000);
     algo.SetBrokerageModel(BrokerageName.FxcmBrokerage);
     algo.Securities[Symbols.EURUSD].TransactionModel = new ConstantFeeTransactionModel(0);
     Security eurusd = algo.Securities[Symbols.EURUSD];
     // Set Price to $25
     Update(eurusd, 25);
     // So 10000/25 = 400, After Rounding off becomes 0
     var actual = algo.CalculateOrderQuantity("EURUSD", 1m);
     Assert.AreEqual(0m, actual);
 }
Exemplo n.º 19
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UniverseDefinitions"/> class
 /// </summary>
 /// <param name="algorithm">The algorithm instance, used for obtaining the default <see cref="UniverseSettings"/></param>
 public UniverseDefinitions(QCAlgorithm algorithm)
 {
     _algorithm   = algorithm;
     DollarVolume = new DollarVolumeUniverseDefinitions(algorithm);
 }
Exemplo n.º 20
0
 /// <summary>
 /// Initializes a new instance of the <see cref="IndexUniverseDefinitions"/> class
 /// </summary>
 /// <param name="algorithm">The algorithm instance, used for obtaining the default <see cref="UniverseSettings"/></param>
 public IndexUniverseDefinitions(QCAlgorithm algorithm)
 {
     _algorithm = algorithm;
 }
Exemplo n.º 21
0
 /// <summary>
 /// Parameter constructor to inject the algorithm to report from
 /// </summary>
 /// <param name="algorithm">the algorithm running</param>
 public TradeBarReporter(QCAlgorithm algorithm)
 {
     _algorithm = algorithm;
     _logHandler = Composer.Instance.GetExportedValueByTypeName<ILogHandler>("CustomFileLogHandler");
     HasPrintedHeading = false;
 }
Exemplo n.º 22
0
 //[Test]
 //public void SetHoldings_LongToLonger_PriceRise()
 //{
 //    var algo = GetAlgorithm();
 //    //Set price to $25
 //    Update(msft, 25));
 //    //Half cash spent on 2000 MSFT shares.
 //    algo.Portfolio.SetCash(50000);
 //    algo.Portfolio["MSFT"].SetHoldings(25, 2000);
 //    //Price rises to $50.
 //    Update(msft, 50));
 //    //Now: 2000 * 50 = $100k Holdings, $50k Cash: $150k. MSFT is already 66% of holdings.
 //    //Calculate the order for 75% MSFT:
 //    var actual = algo.CalculateOrderQuantity("MSFT", 0.75m);
 //    //Need to buy to make position $112.5k == $12.5k / 50 = 250 shares
 //    Assert.AreEqual(250, actual);
 //}
 //[Test]
 //public void SetHoldings_LongerToLong_PriceRise()
 //{
 //    var algo = GetAlgorithm();
 //    //Set price to $25
 //    Update(msft, 25));
 //    //75% cash spent on 3000 MSFT shares.
 //    algo.Portfolio.SetCash(25000);
 //    algo.Portfolio["MSFT"].SetHoldings(25, 3000);
 //    //Price rises to $50.
 //    Update(msft, 50));
 //    //Now: 3000 * 50 = $150k Holdings, $25k Cash: $175k. MSFT is 86% of holdings.
 //    //Calculate the order for 50% MSFT:
 //    var actual = algo.CalculateOrderQuantity("MSFT", 0.5m);
 //    //Need to sell to 50% = 87.5k target from $150k = 62.5 / $50-share = 1250
 //    Assert.AreEqual(-1250, actual);
 //}
 //[Test]
 //public void SetHoldings_LongToShort_PriceRise()
 //{
 //    var algo = GetAlgorithm();
 //    //Set price to $25
 //    Update(msft, 25));
 //    //Half cash spent on 2000 MSFT shares.
 //    algo.Portfolio.SetCash(50000);
 //    algo.Portfolio["MSFT"].SetHoldings(25, 2000);
 //    //Price rises to $50.
 //    Update(msft, 50));
 //    //Now: 2000 * 50 = $100k Holdings, $50k Cash: $150k. MSFT is 66% of holdings.
 //    var actual = algo.CalculateOrderQuantity("MSFT", -0.5m);
 //    // Need to hold -75k from $100k = delta: $175k / $50-share = -3500 shares.
 //    Assert.AreEqual(-3500, actual);
 //}
 //[Test]
 //public void SetHoldings_ShortToShorter_PriceRise()
 //{
 //    var algo = GetAlgorithm();
 //    //Set price to $25
 //    Update(msft, 25));
 //    //Half cash spent on -2000 MSFT shares.
 //    algo.Portfolio.SetCash(50000);
 //    algo.Portfolio["MSFT"].SetHoldings(25, -2000);
 //    //Price rises to $50.
 //    Update(msft, 50));
 //    //Now: 2000 * 50 = $0k Net Holdings, $50k Cash: $50k. MSFT is 0% of holdings.
 //    var actual = algo.CalculateOrderQuantity("MSFT", -0.75m);
 //    //Want to hold -75% of MSFT: 50k total, -37.5k / $50-share = -750 TOTAL.
 //    // Currently -2000, so net order +1250.
 //    Assert.AreEqual(1250, actual);
 //}
 //[Test]
 //public void SetHoldings_ShortToLong_PriceRise()
 //{
 //    var algo = GetAlgorithm();
 //    //Set price to $25
 //    Update(msft, 25));
 //    //Half cash spent on -2000 MSFT shares.
 //    algo.Portfolio.SetCash(50000);
 //    algo.Portfolio["MSFT"].SetHoldings(25, -2000);
 //    //Price rises to $50.
 //    Update(msft, 50));
 //    //Now: 2000 * 50 = $0k Net Holdings, $50k Cash: $50k. MSFT is 0% of holdings.
 //    var actual = algo.CalculateOrderQuantity("MSFT", 0.5m);
 //    //We want to be 50% long, this is currently +2000 holdings + 50% 50k = $25k/ $50-share=500
 //    Assert.AreEqual(2500, actual);
 //}
 private QCAlgorithm GetAlgorithm(out Security msft, decimal fee = 0)
 {
     //Initialize algorithm
     var algo = new QCAlgorithm();
     algo.AddSecurity(SecurityType.Equity, "MSFT");
     algo.SetCash(100000);
     algo.Securities["MSFT"].TransactionModel = new ConstantFeeTransactionModel(fee);
     msft = algo.Securities["MSFT"];
     return algo;
 }
Exemplo n.º 23
0
 /// <summary>
 /// Parameter constructor to inject the algorithm to report from
 /// </summary>
 /// <param name="algorithm">the algorithm running</param>
 public CustomDataBarReporter(QCAlgorithm algorithm)
 {
     _algorithm = algorithm;
     _logHandler = Composer.Instance.GetExportedValueByTypeName<ILogHandler>("DailyFileLogHandler");
 }