精华内容
下载资源
问答
  • 写在前面话 文字并不具备精确传递信息能力。除了程序员和律师等少数群体,很少人能保证自己说东西能在一句话中被清晰传递。所以,带着思考阅读从而帮助完善你知识体系,改变你行为,这才是您耗费时间...

     

    • 写在前面的话

      文字并不具备精确传递信息的能力。除了程序员和律师等少数群体,很少人能保证自己说的东西能在一句话中被清晰传递的。所以,带着思考阅读从而帮助完善你的知识体系,改变你的行为,这才是您耗费时间,阅读本篇文章的意义。

      因此,在阅读本篇文章之前,我希望您能放下心里已有的成见,否则就算您通篇读完,留下的也只是带有您个人偏见的理解。您获得的多少并不取决于读了多少,而取决于您以空杯的心态,思考了多少、多深。

    • 什么是Bar数据

      在讲之前,先讲一下Bar数据。所谓的Bar数据,泛指普通的 K 线。在单独的每个Bar上面包含开盘价、收盘 价、最高价、最低价、成交量及时间。所有的Bar按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar数据。

      如果交易策略是基于Bar数据回测。按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进行计算,如果公式中出现了调用Bar数据函数的,则取出当前Bar的相应值,进行运算。如下图箭头所示,公式执行从上至下,Bar从左到右执行。

      Bar数据应用于非即时发单策略,是没有问题的。比如:当前条件成立,那么就在下根Bar发单。由于Bar数据量往往不是很大,在上百种上千组合回测或优化时,速度非常快。

    • bar数据回测的弊端

      大多数量化软件中,调用那个级别的数据,就是哪个级别的Bar。5分钟周期级别的Bar就是5分钟时间序列的开高低收等。一般最小级别是1分钟,也就是回测时只能使用1分钟级别粒度的数据。

      那么问题来了,1分钟以下的数据变动是无法得知的。这种数据与当时的实际市况有所差别,一个个小的差异积累起来就造成了与真实结果的巨大差异。

      就拿上图中,箭头所指的Bar来说:这是根带上下影线的阴线,图表级别为60分钟,你认为在60分钟里,价格怎么运动,才最终形成这根Bar。

      答案是:有非常非常多种可能。它有可能开盘就先上涨,创造出一个上影线。然后转头向下,创造出一个下影线。然后再转头向上收盘;它也可能开盘就砸盘,直接创造出一个下影线。然后转头向上,创造出一个上影线。然后再转头向下收盘。总之,在这根Bar最终形成之前的60分钟内,价格的波动有很多种可能。

      如果即时策略用Bar数据回测,回测引擎只是根据Bar的开高低收等,做计算。因为回测引擎并不知道价格是如何跳动才形成最终的Bar。在Bar中,价格即有可能先上后下,也有可能先下后上。

      还有一个更为重要的弊端。在Bar回测中,并没有参考盘口数据,比如:买一价和卖一价。在Bar数据回测中,只要触发开平仓的价格在最高价与最低价之内,都能成交。但此时此刻如果恰好没有对手盘的话,那么Bar回测引擎在撮合的时候是检测不出来的。一次两次影响不大,但只要Bar的数据足够多,就足以产生以假乱真的虚假绩效报告。

    • 举个栗子

      我举一个很简单的例子做范例说明。策略描述:当均线往上时往上触碰现在K线高点时作多、当均线往下时往下触碰现在K线低点时放空,另外加上移动出场─当获利大于等于10点后,折返获利1%就出场。

      代码如下:

      回测如下:

      如果你在开发交易策略的时候看到这个现象就很兴奋的以为自己发现圣杯的话... 那么你就想错了。

      钱有这么好赚就好了啦=_=。这样的回测报表一整个就是垃圾!因为那些出场点位几乎可以说都是做不到的!!

      上面这图,空心三角形就是出场位置的标示,看看那个出场标示在哪边?没错,就是K线的最高点,请想一想这有没有问题?我们定下的出场除了多空翻单外,就是移动出场,既然移动出场要有折返才会出场,那出场点在K线的最高点有可能吗?

      如果使用99%精度的Tick数据,回测如下:

      这篇简单的范例不是想指出用很灵敏的移动出场是不可行的,而是说这种的即时策略,在真实运作时会是怎样的状况?至于,造成这个垃圾回测报表的原因,我就不多叙述了。直接告诉你如何呈现实况:使用99%精度的Tick数据。

    • 什么是Tick数据

      Tick数据就是交易所中最详尽的交易数据结构。包括:开盘价、最高价、最低价、最新价、成交量、成交额。如果把交易数据比喻成河流,Tick数据就是这个河流在某个横截面的数据。

      如上图所示,国外交易所每个动作都会实时推送到市场上来。而国内交易所,每秒两次进行检查,如果该时间段内有动作,则生成一次快照并且推送出来。相比较而言,数据的推送充其量只能算做 OnTime,而不能叫做OnTick。

    • BotVS的Tick数据

      尽管国内Tick数据并不是真正意义上的 Tick,但是使用这种数据进行回测,至少可以无限接近和还原了现实。每个Tick中显示着当时这个商品在市场中的主要参数,并且在实盘中我们的代码,就是跟着理论每秒 2 次的Tick在进行计算。

      不仅如此,在 BotVS 中即使加载的是1小时周期的数据,依然可以调整数据粒度,比如将数据粒度调整为 1 分钟。此时此刻的1小时K线就是用1分钟数据组成的。当然,粒度越小,精度越高。

      更为强大的是,如果将数据切换为实盘级Tick,就可以无缝还原真实的实盘环境。即1秒2次Tick交易所的真实数据。

    • 总结

      你不可能拿着玩具枪就上战场,不是吗?在开始实盘之前,我们都会慎之又慎。客观的压力检验,能帮你省下许多真金白银,而这些损失通常都是不必要的。

      那么历史数据的准确性就成了你的交易策略检验结果的关键因素之一,假如你的数据是不准确的,那么在这种数据下的优化和回测必然也是无法在市场中进行的。

      否则在Bar模式下看着很爽的模型,到最后变成一个很爽的陷阱......回测,就是要对自己狠一点......

    展开全文
  • C++高精度模板

    千次阅读 2018-08-29 17:16:03
    太强了,必须爆!! #include<iostream> #include<sstream> #include<algorithm> #include<cstring> #include<iomanip> #include&...

    以下转自高精度算法——百度百科

    真的太强了,必须吹爆!!

    #include<iostream>
    #include<sstream>
    #include<algorithm>
    #include<cstring>
    #include<iomanip>
    #include<vector>
    #include<cmath>
    #include<ctime>
    #include<stack>
    using namespace std;
    struct Wint:vector<int>//用标准库vector做基类,完美解决位数问题,同时更易于实现
    {
        //将低精度转高精度的初始化,可以自动被编译器调用
        //因此无需单独写高精度数和低精度数的运算函数,十分方便
        Wint(int n=0)//默认初始化为0,但0的保存形式为空
        {
            push_back(n);
            check();
        }
        Wint& check()//在各类运算中经常用到的进位小函数,不妨内置
        {
            while(!empty()&&!back())pop_back();//去除最高位可能存在的0
            if(empty())return *this;
            for(int i=1; i<size(); ++i)//处理进位 
            {
                (*this)[i]+=(*this)[i-1]/10;
                (*this)[i-1]%=10;
            }
            while(back()>=10)
            {
                push_back(back()/10);
                (*this)[size()-2]%=10;
            }
            return *this;//为使用方便,将进位后的自身返回引用
        }
    };
    //输入输出
    istream& operator>>(istream &is,Wint &n)
    {
        string s;
        is>>s;
        n.clear();
        for(int i=s.size()-1; i>=0; --i)n.push_back(s[i]-'0');
        return is;
    }
    ostream& operator<<(ostream &os,const Wint &n)
    {
        if(n.empty())os<<0;
        for(int i=n.size()-1; i>=0; --i)os<<n[i];
        return os;
    }
    //比较,只需要写两个,其他的直接代入即可
    //常量引用当参数,避免拷贝更高效
    bool operator!=(const Wint &a,const Wint &b)
    {
        if(a.size()!=b.size())return 1;
        for(int i=a.size()-1; i>=0; --i)
            if(a[i]!=b[i])return 1;
        return 0;
    }
    bool operator==(const Wint &a,const Wint &b)
    {
        return !(a!=b);
    }
    bool operator<(const Wint &a,const Wint &b)
    {
        if(a.size()!=b.size())return a.size()<b.size();
        for(int i=a.size()-1; i>=0; --i)
            if(a[i]!=b[i])return a[i]<b[i];
        return 0;
    }
    bool operator>(const Wint &a,const Wint &b)
    {
        return b<a;
    }
    bool operator<=(const Wint &a,const Wint &b)
    {
        return !(a>b);
    }
    bool operator>=(const Wint &a,const Wint &b)
    {
        return !(a<b);
    }
    //加法,先实现+=,这样更简洁高效
    Wint& operator+=(Wint &a,const Wint &b)
    {
        if(a.size()<b.size())a.resize(b.size());
        for(int i=0; i!=b.size(); ++i)a[i]+=b[i];
        return a.check();
    }
    Wint operator+(Wint a,const Wint &b)
    {
        return a+=b;
    }
    //减法,返回差的绝对值,由于后面有交换,故参数不用引用
    Wint& operator-=(Wint &a,Wint b)
    {
        if(a<b)swap(a,b);
        for(int i=0; i!=b.size(); a[i]-=b[i],++i)
            if(a[i]<b[i])//需要借位
            {
                int j=i+1;
                while(!a[j])++j;
                while(j>i)
                {
                    --a[j];
                    a[--j]+=10;
                }
            }
        return a.check();
    }
    Wint operator-(Wint a,const Wint &b)
    {
        return a-=b;
    }
    //乘法不能先实现*=,原因自己想
    Wint operator*(const Wint &a,const Wint &b)
    {
        Wint n;
        n.assign(a.size()+b.size()-1,0);
        for(int i=0; i!=a.size(); ++i)
            for(int j=0; j!=b.size(); ++j)
                n[i+j]+=a[i]*b[j];
        return n.check();
    }
    Wint& operator*=(Wint &a,const Wint &b)
    {
        return a=a*b;
    }
    //除法和取模先实现一个带余除法函数
    Wint divmod(Wint &a,const Wint &b)
    {
        Wint ans;
        for(int t=a.size()-b.size(); a>=b; --t)
        {
            Wint d;
            d.assign(t+1,0);
            d.back()=1;
            Wint c=b*d;
            while(a>=c)
            {
                a-=c;
                ans+=d;
            }
        }
        return ans;
    }
    Wint operator/(Wint a,const Wint &b)
    {
        return divmod(a,b);
    }
    Wint& operator/=(Wint &a,const Wint &b)
    {
        return a=a/b;
    }
    Wint& operator%=(Wint &a,const Wint &b)
    {
        divmod(a,b);
        return a;
    }
    Wint operator%(Wint a,const Wint &b)
    {
        return a%=b;
    }
    //顺手实现一个快速幂,可以看到和普通快速幂几乎无异
    Wint pow(const Wint &n,const Wint &k)
    {
        if(k.empty())return 1;
        if(k==2)return n*n;
        if(k.back()%2)return n*pow(n,k-1);
        return pow(pow(n,k/2),2);
    }
    int main()
    {
    	
    }

     

    展开全文
  • 铜转炉炼终点预报是转炉生产的一个重要环节,直接影响转炉的生产效益。其炼工艺相当复杂,影响生产因素众多且因素之间相互...仿真结果表明,建立的预报模型具有较高的自学习及泛化能力,预报结果具有较高的精度
  • 开始本题是直接想到拆成n-2个...如果没有凹多边形,是这样,但是这样精度很低。 #include&lt;stdio.h&gt; #include&lt;math.h&gt; float triangle(int a, int b, int c, int d, int e, int f)...

    开始本题是直接想到拆成n-2个三角形,利用海伦公式三角形相加即可,但是,WA猝不及防

    Discuss打开一看,是它,我们的小英雄凹多边形

    如果没有凹多边形,是这样的,但是这样精度很低。

    #include<stdio.h>
    #include<math.h>
    float triangle(int a, int b, int c, int d, int e, int f){
    	float g = sqrt((d-b)*(d-b) + (c-a)*(c-a));
    	float h = sqrt((e-a)*(e-a) + (f-b)*(f-b));
    	float m = sqrt((e-c)*(e-c) + (f-d)*(f-d));
    	float p = (g+h+m) / 2.0;
    	
    	float s = sqrt(p*(p-g)*(p-h)*(p-m));
    	return s;
    }
    int main()
    {
    	int n;
    	while(scanf("%d", &n) != EOF && n){
    		int a[100][2];
    		float sum = 0;
    		int i, j;
    		for(i = 0; i < n; i++)
    			for(j = 0; j < 2; j++)
    				scanf("%d", &a[i][j]);
    		for(i = 1; i < n-1; i++)
    			sum = sum + triangle(a[0][0], a[0][1], a[i][0], a[i][1], a[i+1][0], a[i+1][1]);
    		printf("%.1f\n", sum);
    	}
    	return 0;
    }

    于是四处搜索,尝试继续海伦公式可以解决,却发现了叉乘这个奇妙的点

    不同于点乘,叉乘中两向量相乘后还是向量。

    https://blog.csdn.net/u010235142/article/details/78847890

    这是某位大佬对于叉乘的介绍。其中提到了利用其得到的值k来进行计算,直接使用就完了。

    那个k值叫做:叉积,即向量积。

    https://blog.csdn.net/u013445530/article/details/41451247这是另一位大佬的完整介绍

     

    但是,这位大佬针这道题来了一个叉乘对于凹多边形和凸多边形的具体计算

    https://blog.csdn.net/u013445530/article/details/41451247

     

    贴下我的代码

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct point{
    	int x, y;
    }point;
    
    point a[100];
    double area(point q, point p){
    	return p.x * q.y - q.x * p.y;
    }
    int main()
    {
    	int n;
    	while(scanf("%d", &n) != EOF && n){
    		double sum = 0;
    		int i;
    		for(i = 0; i < n; i++)
    			scanf("%d%d", &a[i].x, &a[i].y);
    		for(i = 0; i < n-1; i++)
    			sum = sum + area(a[i], a[i+1]);
    		sum = sum + area(a[n-1], a[0]);
    		if(sum < 0)
    			sum = -sum;
    		printf("%.1lf\n", sum * 0.5);
    	}
    	return 0;	
    }

    19.2.24还未完全明白内涵= =待更新.

    展开全文
  • 酒精检测仪核心部件为酒精传感器,当被测试人员通过测试口向酒精检测仪吹气时候,酒精检测仪通过酒精传感器对呼出气体产生一定反应,因此酒精传感器质量影响着酒精检测仪测试精度
  • 目前已有的控制方法难以满足大飞机研制对风洞流场的精度要求.鉴于此,采用多变量模型预测控制方法设计流场控制器.为提高抵抗攻角扰动的能力,使用攻角变化量动态补偿静压的预测值.考虑风洞实验工况较多,采用多控制器...
  • 日本神视(SUNX)推出了通过流量变化来检测压力变动传感器“数字流量传感器FM-100”系列产品。...可用于无论正压或负压的吹洗气体管理以及吸附管理。  适用流体方面,除了符合JIS B 8392-1.1.2~5.6.2标
  •  激光加工主要是利用CO:激光束聚焦在材料表 面使材料熔化,同时用与激光束同轴压缩气体 走被熔化材料,来完成所需轨迹图形切割或者 相应工艺品表面雕刻。激光加工属于非接触加工, 具有加工方法多、适应...
  •  激光加工主要是利用CO:激光束聚焦在材料表 面使材料熔化,同时用与激光束同轴压缩气体 走被熔化材料,来完成所需轨迹图形切割或者 相应工艺品表面雕刻。激光加工属于非接触加工, 具有加工方法多、适应...
  • 日本神视(SUNX)于2006年9月1日上市通过流量变化来检测压力变动传感器“数字流量传感器FM-100”系列产品。...可用于无论正压或负压的吹洗气体管理以及吸附管理。 适用流体方面,除了符合JIS B 8392-1
  • 日本神视(SUNX)推出了通过流量变化来检测压力变动传感器“数字流量传感器FM-100”系列产品。...可用于无论正压或负压的吹洗气体管理以及吸附管理。  适用流体方面,除了符合JIS B 8392-1.1.2~5.6.2标
  • 遥想当年我入坑时候,人工智能还是一片蓝海,只要稍微会部署个模型就不愁工作,更不要说什么模型调优,提高精度的高技术技能了。 但是人工智能都了3年了,现在就业情况还像3年前那般乐观吗? 我只能说,旱...

    遥想当年我入坑的时候,人工智能还是一片蓝海,只要稍微会部署个模型就不愁工作,更不要说什么模型调优,提高精度的高技术技能了。

    人工智能都沸腾3年了,现在就业情况还乐观吗?

    但是人工智能都吹了3年了,现在的就业情况还像3年前那般乐观吗?

    我只能说,旱的旱死,涝的涝死。

    从整个行业来看的话,人才需求还是存在很大的缺口,但是具体细分到岗位分布的话,大厂内卷就有点严重了,如果要形容一下的话,就是比到西二旗的地铁站还要挤。

    主要还是有一群培训机构在背后鼓吹出来之后就能进大厂,起薪没有40W就是丢脸的奇葩宣传。导致了很大一批想上岸的人都盯着一二线的大厂岗位看齐,面试的人多了内卷就加剧,摩肩接踵去面试自然而然的就提高了招聘需求。

    目前AI领域主流岗位主要是CV、NLP、搜索、推荐这四个,其中当属CV内卷的比较严重。

    因为深度学习早期落地最成熟的就是CV,不论是学校的教学体系,还是中途半路出家的都是学的图像的项目。而且这些人就盯着大厂的那有限的岗位去卷。

    而一些小公司虽然能开出和大厂相差无几的薪资,但是没有大厂光环而默默无闻。我说咱就不能面向薪资工作吗,为啥都要被行业洗脑去大厂修福报,小而美每天6点下班不舒服吗?

    那么现在人才需求比较大的是哪些岗位?

    就目前boos招聘、拉勾网公布的数据来看,CV依旧是市场需求比较大的,就好像Java市场一样,虽然有内卷的情况,但是都是优质岗位的竞争,总体需求缺口还是很大的。其次就是推荐算法和广告搜索这种刚需岗位,最少的就是纯NLP的岗位,基本都是科研岗而且薪资还低,适合专心搞研发的人才去干。

    【编辑推荐】

    1. AI(人工智能)下一个偏门行业赚钱的契机
    2. 人工智能正在误导我们的广告,是时候纠正这些错误了
    3. 什么是人工智能核心?这2个功能上线
    4. 华为机器狗曝光:采用AI技术 可做到动态多目标追踪、追随
    5. 如何采用人工智能创建自动化运营的数据中心
    展开全文
  • 百度地图采集车

    千次阅读 2017-09-13 10:37:41
    2017-08-29 百度·江淮汽车高精地图采集车交车仪式上 向百度交付32台瑞风S3 以助力百度高精度地图的采集 共同推动自动驾驶大时代的进程 ...你看,做大事从来就不需要花钱的。只要吹的够大,就一定有人上钩
  • 日本神视(SUNX)于2006年9月1日上市通过流量变化来检测压力变动传感器“数字流量传感器FM-100”系列产品。...可用于无论正压或负压的吹洗气体管理以及吸附管理。 适用流体方面,除了符合JIS B 8392-1
  • 激光加工主要是利用CO:激光束聚焦在材料表 面使材料熔化,同时用与激光束同轴压缩气体 走被熔化材料,来完成所需轨迹图形切割或者相应工艺品表面雕刻。激光加工属于非接触加工, 具有加工方法多、适应性强...
  • 在微型定位、导航、授时(Micro-PNT)系统中, 芯片原子钟(CSAC)作为微型时钟模块核心, 其发展关乎到Micro-PNT系统定位精度与授时能力。原子气室作为芯片原子钟“心脏”, 其制备工艺直接决定着原子钟体积、稳定...
  • 以炉口辐射信息获取系统为实验平台, 运用光纤谱分复用和颜色空间模型转换技术, 分析发现了光谱与图像信息特征量在炼过程中呈现出中前期类似、末期相反规律。从得到特征规律曲线中选用一些关键特征量, 在改进...
  • 激光加工主要是利用CO:激光束聚焦在材料表 面使材料熔化,同时用与激光束同轴压缩气体 走被熔化材料,来完成所需轨迹图形切割或者相应工艺品表面雕刻。激光加工属于非接触加工, 具有加工方法多、适应性强...
  • &#13; ...我自己啊 [x] 图论总讲(校内知识) [x] 动态规划总结 [x] 高精度模板汇总 [x] 莫队总结 [x] 可持久化并查集总结 [x] 求树直径算法 [x] 模拟退火学习 [x] AC自动机入门...
  • 本联合机共有6个纺丝箱,有36个纺丝位,每个纺丝位配置一台高精度的计量泵。直纺熔体经增压泵增压后由熔体输送管将熔体输送至纺丝箱,经计量泵计量后由喷丝板喷出,通过中心内环装置,受空气冷却固化后进入卷绕机...
  • 由于塑料制品在工农业生产中广泛应用,...上述塑料机械中,象四辊压延机等要求同步精度较高外,其余都是极为普通生产机械。对拖动系统要求基本相同。 1、能在一定范围内平滑调速 主要是便于生产不同品种产品。
  • 塑料薄膜拉成型机械设备有着广泛市场,如薄膜包装,肠衣制造,等等。主要功能是将乙烯颗粒原材料加温融化,经过挤出、中空、定型、拉伸、冷却等几部工艺,使原材料经过流水线成为中空薄膜,用于各种包装材料场合...
  • 渗滤液除氨氮技术

    2021-01-21 16:40:50
    生化,脱都是不合适,折点加氯比较适合低浓度氨氮处理,生化处理水量比较大,占地面积也很大,脱塔投入成本以及运行成本占地面积都是居于偏高位置,而且处理精度都不是很理想。 杜笙T-42
  • 2019.7.30训练总结

    2019-07-30 23:56:38
    因为上午吹风扇吹的身体有点不舒服,所以一上午一个火车进出栈的题没有看完。 通过火车的进出栈这个题我学到了高精度运算和质因数分解。以前稍微了解过质因数分解,但不知道怎么实现也不知道什么时候 用质因数分解。...
  • Paper:https://hangzhang.org/files/resnest.pdfCode:https://github.com/zhanghang1989/ResNeSt/blob/master/resnest/torch/resnest.py这两天被上天...文中讲解了提升精度的技巧,但是开源Pytorch代码里好...
  • 贴片机吸嘴(延伸阅读:贴片机吸嘴型号大全)是贴片机非常重要的配件之一,吸嘴主要用来将飞达上的电子元件料贴装到电路板的焊盘位置上,吸嘴犹如人的嘴,因此吸嘴对于贴片机贴装电子元件的精度和抛料有非常重要的...
  • 激光束照射到工件表面,使工件达到熔点或沸点,同时与光束同轴高压气体将熔化或气化金属走。随着光束与工件相对位置移动,终使材料形成切缝,从而达到切割目的。激光切割加工是用不可见光束代替了传统...
  • 因为需要做单片机课设,题目是智能风扇,试了很多传感器,都感觉风扇不够智能,所以想直接用一个人脸检测或行人检测AI模型进行检测人位置,然后实现风扇对人,如果人不在则自动关闭,实现风扇智能化。...
  • 了一路海风导致晚上七点就昏昏欲睡,跟队长在房里睡到八点,然后我就找大脑袋跟鹤爷出去逛(这俩货出门买了点吃转身就回去炉石了,真是。。),晚上刘老师还给我们说了一下明天注意。以及白天热身赛,不得...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

吹的精度