程序员的量化交易之路(33)--QuantConnect之案例1

简介:

转载需注明:http://blog.csdn.net/minimicall ,http://cloudtrade.top/

分析Cointrader有一定层度了,发现它毕竟不是一个产品,没有得到验证。在架构、编码等方面都非常的不规范。

想编写一个云交易平台,任道而重远。我们需要参照一些成熟的架构。

Quantopian的zipline不行,因为我就是看到它不行,所以才去分析Cointrader的。

现在这两个,一个压根就不是云平台,一个是不成熟,所以我只能去分析剩下的一个QuantConnect了。它的引擎是lean。

学习lean从学习使用开始,然后学习其架构、源码。然后设计我们的架构、平台。

我们首先来看一个例子。官方的最基本的案例。

代码如下:

namespace QuantConnect 
{   
    /*
    *   QuantConnect University: Full Basic Template:
    *
    *   The underlying QCAlgorithm class is full of helper methods which enable you to use QuantConnect.
    *   We have explained some of these here, but the full algorithm can be found at:
    *   https://github.com/QuantConnect/QCAlgorithm/blob/master/QuantConnect.Algorithm/QCAlgorithm.cs
    */
    public class BasicTemplateAlgorithm : QCAlgorithm
    {
        //Initialize the data and resolution you require for your strategy
        public override void Initialize()
        {
			
            //Start and End Date range for the backtest:
            SetStartDate(2013, 1, 1);         
            SetEndDate(DateTime.Now.Date.AddDays(-1)); 
            
            //Cash allocation
            SetCash(25000);
            
            //Add as many securities as you like. All the data will be passed into the event handler:
            AddSecurity(SecurityType.Equity, "SPY", Resolution.Minute);
        }

        //Data Event Handler: New data arrives here. "TradeBars" type is a dictionary of strings so you can access it by symbol.
        public void OnData(TradeBars data) 
        {   
            // "TradeBars" object holds many "TradeBar" objects: it is a dictionary indexed by the symbol:
            // 
            //  e.g.  data["MSFT"] data["GOOG"]
            
            if (!Portfolio.HoldStock) 
            {
                int quantity = (int)Math.Floor(Portfolio.Cash / data["SPY"].Close);
                
                //Order function places trades: enter the string symbol and the quantity you want:
                Order("SPY",  quantity);
                
                //Debug sends messages to the user console: "Time" is the algorithm time keeper object 
                Debug("Purchased SPY on " + Time.ToShortDateString());
                
                //You can also use log to send longer messages to a file. You are capped to 10kb
                //Log("This is a longer message send to log.");
            }
        }
    }
}


相关文章
|
13天前
|
前端开发 Java 关系型数据库
探索后端开发:从基础到高级的旅程
【10月更文挑战第20天】本文将带你走进后端开发的世界,通过通俗易懂的语言和实际代码示例,让你从零基础开始,逐步了解并掌握后端开发的核心技术。无论你是初学者还是有一定基础的开发者,都能在这篇文章中找到适合自己的学习路径和方法。让我们一起开启这场技术之旅吧!
31 5
|
8天前
|
存储 缓存 前端开发
前端技术探索:从基础到进阶的旅程
【10月更文挑战第23天】前端技术探索:从基础到进阶的旅程
5 0
|
1月前
|
机器学习/深度学习 人工智能 Kubernetes
技术探索之旅:从基础到进阶的心得体会
本文记录了作者在技术领域的学习和实践过程中积累的经验与感悟。文章涵盖了从基础知识的学习、项目实践,到新技术的探索与应用,最终总结出几点对未来技术发展的思考。希望这些分享能够启发更多的技术爱好者,共同进步。
|
2月前
|
关系型数据库 MySQL PHP
PHP编程:从基础到高级的旅程
PHP,一种流行的服务器端脚本语言,因其在Web开发中的广泛应用而受到许多开发者的青睐。本文将从PHP的基本概念和语法入手,逐步深入到面向对象编程、数据库操作以及框架使用等高级主题。无论你是PHP新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考和学习路径。
38 2
|
3月前
|
前端开发 API 数据库
探索后端开发之巅:从基础到高级实践
【8月更文挑战第29天】在技术的世界里,后端开发是一块基石,它支撑着无数应用的运行和数据的处理。本文将带你从零基础开始,逐步深入到后端开发的高级实践,包括语言选择、框架搭建、数据库设计、API开发以及性能优化等方面。我们将通过浅显易懂的语言和实际代码示例,帮助你构建起坚实的后端开发知识体系,让你能够自信地应对各种后端挑战。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的学习资源和实践指导。
|
4月前
|
开发框架 程序员
「随笔」编程中的技术难题与挑战
编程中的挑战如bug、性能优化和跨平台兼容性,常考验程序员的智慧和经验。空指针异常需仔细检查代码,内存泄漏需使用分析工具并理解内存管理,而跨平台兼容性涉及不同设备接口和协议。程序员通过创新方法,如内存管理和跨平台框架,解决问题,展现创造力和技能。这些难题既是障碍,也是成长的契机。
36 0
|
6月前
|
设计模式 算法 程序员
源码阅读:拓展技能的必经之路
作为程序员,想必大家经常会遇到这样的情景:我们在日常开发中遇到的问题,有时候甚至会卡住一整天,即耗时又显得我们很“菜”。其实有时候,我们遇到的问题都是可以通过查看对应的官方文档或者程序源码就能快速解决的,我们从迈进程序开发这道门之后,有多少人能够在忙碌的日常去研究程序的源码呢?其实阅读源码非常的重要,阅读源码不仅可以帮助我们熟悉所使用的框架和库,还能快速定位问题并加速项目的进展,而且深入理解源码的原理和代码风格,对于我们的编码、设计和架构能力都有着巨大的提升,尤其是刚入行不久的开发者阅读源码非常重要。那么本文就来分享一下通过阅读源码突破自己技术瓶颈的经历,并分享一些有效的源码阅读方法和建议,个
68 2
源码阅读:拓展技能的必经之路
|
编译器 C语言 C++
C++入门编程 ---- 助你更好理解C++的奥妙(一)
C++入门编程 ---- 助你更好理解C++的奥妙(一)
76 0
|
编译器 C语言 C++
C++入门编程 ---- 助你更好理解C++的奥妙(三)
C++入门编程 ---- 助你更好理解C++的奥妙(三)
79 0
|
编译器 C语言 C++
C++入门编程 ---- 助你更好理解C++的奥妙(二)
C++入门编程 ---- 助你更好理解C++的奥妙(二)
54 0