以新的方式有人家网友让我帮他写人家器辨析基金回撤局面,几天前,当签订协议很忙的时分,它没有开端过。,今夜有空吗,看一眼它。

让咱们分享眼前的研究成果:

  利率期货精炼辨析,率先,咱们应该有基金的净值变化唱片。。优秀的唱片就必然是只优秀的天田基金,究竟,他们是专业规划。

我找到了人家我团体热爱的基金,易丰达中小型磁盘混合器 (110011),在天天基金网站上容易地找到它的历史净值阅读:

  

  由于我垄断曾经查到了日常基金的净值唱片,觉悟它的阅读唱片躲藏在j中,阅读图书报刊者作客PAG后,担当管理人JS从服役静态检索并显示阅读。

  觉悟它是哪个JS本子,有很多办法。。我运用谷歌阅读图书报刊者助的的开发者应用程式器,列举如下图:

  同时翻开开发者应用程式的利率期货阅读,您可以留心此阅读作客的领地资源网站。唱片喧骚嘈杂的集会,但我只理睬力JS,因而按典型排序。。不过不少于您所留心的,有很多JS作客,眼前还浊度有先行词JS收录我几何平均的唱片。

  由于默许局面下只显示第编标注页码唱片,因而我然而随机点击等等阅读的净值,资源作客列表正中鹄的更改,容易地找到几何平均的JS地址,如图

  经过回调副本这些JS网站,列举如下:

  争辩命令决定因素猜想fund code为资产编码,pageindex是把编排到广播网联播page numbe,等等决定因素临时工徒然。

  率先尝试在阅读图书报刊者作客中运用此网站检查局面:

  

  你可以留心网站把持着执意这样JS导致,不准用户作客阅读图书报刊者Directl。不熟习HTTP包装,在这种局面下怎么办还浊度,不喜欢创作阅读图书报刊者来获取JS唱片。

因而我问了人家熟习拾掇废物的同行。充当顾问最后将于近未来议论。,这与以下想要参与。

GET /f10/lsjz?callback=jQuery183018519977574130597_1558194911277&fundCode=110011&pageIndex=4&pageSize=20&startDate=&endDate=&_=1558195568400 HTTP/1.1
Host: api.fund.
Connection: keep-alive
User-Agent: Mozilla/ (窗口 NT 10.0; Win64; x64年) AppleWebKit/ (KHTML, like 壁虎) Chrome/69.0.3497.100 Safari/
Accept: */*
Referer: 
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

   ———————————————–

  继续是你就是这样说的嘛!开动,这是用于作客利率期货pag的HTTP索取头。理睬外面的援用者。百度百科全书执意就是这样说的:HTTP 审阅是头部的偏爱地,当阅读图书报刊者向Web服役发送索取时,通常你会带人家法官来,通知服役我从哪个阅读关联,服役可以获取非常要旨中止处置。

  这时的每日基金网站运用审阅来使无效人家窃取cha。我当前的在阅读中输出JS地址,发送到服役的索取正中鹄的援用为空,不过免得你点击阅读,援用者是网页的网站。

  为了实验利率期货唱片条件可以非常作客,我用cur做了人家实验:

curl "" --referer "" --user-agent "Mozilla/ (窗口 NT 10.0; Win64; x64年) AppleWebKit/ (KHTML, like 壁虎) Chrome/69.0.3497.100 Safari/" -o tmp.txt

  实验成,通常净值为obtaine。

  ———————————————–

  找到了成功资产的办法,接下来,看一眼JSWebSit:

  简略的猜想,在这种局面下,funcode是基金COD,pageIndex是标注页码,pageSize是每页的净编页码,开端日期和完毕日期是净值日期间距,免得你想获得岁的净麦芽汁,可以运用

  pageIndex = 1,pageSize = 300, startDate = 2019-01-01,endDate = 2019-12-31,卷发再來一遍,猜想是对的。。

  接下来是主要的教育活动,创作另人家顺序迂回地以成功年度净麦芽汁,那时的就可以辨析了。。

  ———————————————–

看我辨析110011 易方达基金中小盘的最后

 

由此可见,一体大中小去市场买东西发现于年。,到眼前为止,总进项为370%。,也执意10年前把一万入伙该基金而且设置了分赃再投资额,如今作品市值为37000。

买基金,最坏了的是2015年8月19日。,从那天起,基金一向在下跌,直到2015年8月25日,衰退才开端中止。,这一工夫的总减幅几乎15%。。

侥幸的是,投资额者在201年7月8日买了基金。,因为他们买下基金较晚地,它一向在下跌。,直到20%的增长,回调才开端。。

  一体达往年的履行列举如下:

辨析起止日期:【2019-01-02】,2019-06-06]
填空处停药/升丹鼠辈 [2019-01-02, 2019-06-06] [, 4.7011]
———————
最大继续停药鼠辈 [2019-04-30, 2019-05-06] [403, ]
围手术期最大放弃率 [2019-04-10, 2019-05-09] [, ]
计算开端工夫的最大精炼率 [2019-01-02, 2019-01-03] [, ]
最大延续停药天数鼠辈 4 [2019-03-04, 2019-03-08] [, 0]
———————
最大延续攀登率 [2019-01-30, 2019-02-14] [, ]
围限制最大升压速度 [2019-01-03, 2019-04-10] [, ]
从开端工夫开端计算最大升压速度 [2019-01-02, 2019-04-10] [, ]
最大延续扩大天数鼠辈 6 [2019-01-30, 2019-02-14] [, ]

  往年的基金一直。,几乎30%,最赚钱的工夫是20190 41,事先,该基金的进项为41%。

————————————————————-

  感兴趣的先生可以在这时下载我的器。:

关联: 精炼码: zg97 副本此质地并翻开百度磁盘搬迁AP,用手操作起来较比方便的

————————————————————-

相互关系眼镜(写得坏事,由于据我看来写有些人,较晚地有工夫思索优化组合

#pragma once

#include ""
#include 
#include 
typedef struct __tagNetValueInfo{
    string strNetValueDate;
    double dAccumulatedNet;

    __tagNetValueInfo()
    {
        dAccumulatedNet = 0;
    }

    __tagNetValueInfo(conststring& v1, double v2)
    {
        strNetValueDate = v1;
        dAccumulatedNet = v2;
    }
}NetValueInfo;

typedef struct __StatisticalNetValueInfo{
    string strValue;
    string strNode;
    string strBegDate;
    double dBegNetValue;
    string strEndDate;
    double dEndNetValue;

    __StatisticalNetValueInfo()
    {
        dBegNetValue = dEndNetValue = 0;
        strBegDate = strEndDate = "-";
    }

    string getString()
    {
        string strRet;
        char buf[1024];
        size_t nStrNodeLen = () + 1;
        string strPad = "";
        for (size_t i = nStrNodeLen / 8; i < 3; ++i)
        {
            strPad += "\t";
        }
        _snprintf(buf, sizeof(基本单位), "%s:%s%s\t",
            (), (), ());
        strRet += buf;

        _snprintf(buf, sizeof(基本单位), "[%s,%s]\t",
            (), ());
        strRet += buf;

        _snprintf(buf, sizeof(基本单位), "[%04f,%04f]\n",
            dBegNetValue, dEndNetValue);
        strRet += buf;

        return strRet;
    }

    void print()
    {
        size_t nStrNodeLen = () + 1;
        string strPad = "";
        for (size_t i = nStrNodeLen / 8; i < 3; ++i)
        {
            strPad += "\t";
        }
        cout << strNode << ":" << strPad << strValue << "\t";// << endl;
        cout << "[" << strBegDate << ", " << strEndDate << "]\t";// << endl;
        (''0'');
        cout << "[" << fixed << setprecision(4) << dBegNetValue 
            << ", "  << fixed << setprecision(4) << dEndNetValue 
            << "]" << endl;
    }
}StatisticalNetValueInfo;

typedef struct __tagResultInfo{
    //最大延续精炼率/攀登率要旨    StatisticalNetValueInfo resMaxContinRetraceInfo;
    StatisticalNetValueInfo resMaxContinRiseInfo;

    //最大延续提款天数/攀登天数要旨    StatisticalNetValueInfo resMaxContinRetraceDaysInfo;
    StatisticalNetValueInfo resMaxContinRiseDaysInfo;

    //最大精炼率/攀登率要旨    StatisticalNetValueInfo resMaxRetraceInfo;
    StatisticalNetValueInfo resMaxRiseInfo;

    //从幼芽工夫算最大精炼率/攀登率要旨    StatisticalNetValueInfo resMaxRetraceFromBeginInfo;
    StatisticalNetValueInfo resMaxRiseFromBeginInfo;


    //从开端工夫开端计算精炼/攀登率要旨    StatisticalNetValueInfo resRetraceRiseFromBeginInfo;

    __tagResultInfo()
    {
        resMaxContinRetraceInfo.strNode = "最大继续停药鼠辈";
        resMaxContinRetraceDaysInfo.strNode = "最大延续停药天数鼠辈";
        resMaxRetraceInfo.strNode = "围手术期最大放弃率";
        resMaxRetraceFromBeginInfo.strNode = "计算开端工夫的最大精炼率";
        resMaxContinRiseInfo.strNode = "最大延续攀登率";
        resMaxContinRiseDaysInfo.strNode = "最大延续扩大天数鼠辈";
        resMaxRiseInfo.strNode = "围限制最大升压速度";
        resMaxRiseFromBeginInfo.strNode = "从开端工夫开端计算最大升压速度";

        resRetraceRiseFromBeginInfo.strNode = "填空处停药/升丹鼠辈";
    }

    string getString()
    {
        string strRet;
        strRet += ();
        strRet += "---------------------\n";
        strRet += ();
        strRet += ();
        strRet += ();
        strRet += ();
        strRet += "---------------------\n";
        strRet += ();
        strRet += ();
        strRet += ();
        strRet += ();

        return strRet;
    }

    void print()
    {
        ();
        cout << "---------------------" << endl;
        ();
        ();
        ();
        ();
        cout << "---------------------" << endl;
        ();
        ();
        ();
        ();
    }
}ResultInfo;

int getRectracement(const vector &vecNetValueInfo, size_t nBegPos, size_t nEndPos,
    OUT ResultInfo& resultInfo);

void testGetRectracement();
//  : 规范零碎收录纵列,
// 或常常运用但常常变化
// 签订协议指定的收录纵列
//
#pragma once


#define WIN32_LEAN_AND_MEAN        // 从 Windows 干掉HEA中罕见运用的要旨
#include 
#include 



// TODO: 对顺序HER所需的等等头纵列的援用
#include 
#include <string>
#include 
#include 
usingnamespace std;
#include 
#include 

#define itoa _itoa


conststring& stringReplace(string& str, conststring& strToReplace, conststring& strReplaceTo);
char *stringReplace(char *str, constchar *strToReplace, constchar *strReplaceTo);

// UTF8编码替换为GBK编码int UTF8ToGBK(constchar *lpUTF8Str, char *lpGBKStr,int nGBKStrLen);
//将gbk编码替换为utf8 CODint GBKToUTF8(constchar *lpGBKStr, char *lpUTF8Str, int nUTF8StrLen);


enum URL_TYPE{unkowurl, eastmoney, howbuy, fund123, jjmmw, qq};

getFundNetValue.cpp

// getFundNetValue.cpp : 构成释义把持台应用顺序的使狂喜点。
//

#include
""
#include

#include
<string>
#include


#include

#include

#include
""usingnamespace std;

URL_TYPE getUrlType(conststring& 网址)
{
string urlLower = url;
transform((), (), (), 托洛威尔)
if (("") != string::npos || url.find("") != string::npos )
{
return eastmoney;
}
elseif (("") != string非营利规划)
{
return howbuy;
}
elseif (("") != string非营利规划)
{
return fund123;
}
elseif (("") != string非营利规划)
{
return jjmmw;
}
elseif (("") != string非营利规划)
{
return qq;
}
else
{
return unkowurl;
}
}

size_t splitToVector(constchar *src, constchar *separator, vector<string>& vecOut)
{
constchar *pFound, *pBegin = src;
const size_t nSeparatorLen = strlen(区分符)

();

while ( NULL != (pFound = strstr(pBegin, 区分符) )
{
(
string(pBegin, pFound));
pBegin
= pFound + nSeparatorLen;
}

if (*pBegin != ''\0'')
{
(pBegin);
}

return vecOut.size();
}

void removeCharHeadTail(string& str, constchar trimChr)
{
size_t begPos
= 0;
size_t endPos
= string::npos;
size_t nStrLen
= ();

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注