本周加密货币经历了暴跌,残像横出,市场哀鸿遍野,30%的跌幅只是挠痒,70%的跌幅随处可见。逃过暴跌的喜气洋洋,没有逃过的看着自己手头的市值,虽然心情低落,到让坚信未来更好。

就本次暴跌我仍然坚持以下观点:

1.现在是96-98年的互联网阶段,目前别说泡沫,泡沫还早至少还要等1-2年才会破灭。

2.市场的泡沫破灭之后,大概将有98%的ICO市值都将归零。

3.坚持价值投资,持有比特币与以太坊等的价值币。

参考股市和互联网的规律,后市的做法有以下几点:

第一,少量资金参与ICO,做短线。

第二,大量持有价值币,做长线。

第三,做交易计划,给出足够的买卖理由并记录,用来后续复盘使用。

先说下我目前持有的资产:

股票:中国人寿 | 做多中国 | 保险业持续发展

期货:白银 | 白银七年一周期 | 美股区块链对冲

外汇:欧元 | 做空美元 |看好欧洲复苏

虚拟币:ico | 牛市里找概念炒新股 | 看空美股

说来惭愧,投资几年,半推半就,15年股市里由于13年布局且一直持有到16年急需资金卖出,所以资产只是过山车,增长不多。

其他的投资也都是小打小闹,区块链是最近关注,已经非常晚了,牛市中期了,所以策略是打新股,小资金搞ico。

综上,我总结了这几年投资的心得,买入资产前需要注意这五点,仅供参考。

1.坚持价值投资,并持有三到五年。

2.暴跌(熊市)时候买入,暴涨(牛市买出)

3.不懂的东西不要碰,不懂就要多学习,学习完后参考第一条。

4.分批进场,一个月建仓完毕,甚至更长时间,防止大跌没有子弹入场。

5.制定交易计划,严禁短线买卖。

抛砖引玉,欢迎补充。

10℃以上

下身:七分裤。
上身:长袖衣衫,或者穿短袖衣衫配上手臂护套。
配件:一件轻便的棒球帽风格帽子。

1-10℃

下身:七分裤或者四分之三长的紧身裤。可选长紧身裤或者普通裤。
上身:套上两层长袖衣衫,或者穿一层,外加一件防风上衣。
配件:一个无檐小便帽,薄手套。

零下1-6℃

下身:拉过绒的紧身衣或裤子,盖住任何裸露在外面的肌肤。
上身:穿两层长袖,或者穿一个长袖外加薄层和薄夹克。再或者,除按上述的厚一些的版本。
配件:无檐小便帽,厚手套。太阳镜保护寒冷阵风中的眼睛(在阴天的时候考虑一下清晰的镜片)

零下18-零下6℃

下身:防水材料的,拉过绒的绝缘抗风紧身衣或裤子,长袜子。
上身:塞到裤子里的长袖,或一个中间层来保暖你的脖子,外加一个绝缘体夹克。
配件:一条围巾围住你的脖子,甚至围住你的脸颊和嘴。一个暖和的无檐小便帽可以盖住你的耳朵,一个大小合适的厚手套和太阳镜。

零下18℃以下

伙计,那你不是在开玩笑?还是去跑步机上练习吧!

一、起因

一到年底,各大网站又开始组织评选各种最佳XX,比如新浪组织的2015十大跑团投票。昨日在跑步群里,组织的领袖人物号召大家去投票,于是好多人都投了,后来又过了一会,领袖又出来无奈的说,大家每人投1000票吧,瞬间集体崩溃,原来投票还可以这么玩!

于是仔细研究了下这个网站投票,抓包发现,其所为的投票就是一个普通的HTTP GET 请求,没有缓存,没有认证,没有限制,我真无语了,这还是新浪网站做的网页呢,这尼玛是实习生做的吧?最基本的验证、防刷票都没有。
而前面几名小跑团竟然都跟我XX大跑团差距几十万的投票量了,这些明显都是在刷票!而且是软件自动刷的!太气愤了。

二、行动

于是决定做个投票器,刷!刷!刷!帮助XX大跑团刷!帮助XX大跑团刷!帮助XX大跑团刷!

首先下载libcurl,编译生成静态库。

其次在网上找了个基于libcurl的HttpClient源码,如下

define HTTP_CURL_H

include

class CHttpClient
{
public:

CHttpClient(void);
~CHttpClient(void);

public:

int Post(const std::string & strUrl, const std::string & strPost, std::string & strResponse);
int Get(const std::string & strUrl, std::string & strResponse);
int Posts(const std::string & strUrl, const std::string & strPost, std::string & strResponse, const char * pCaPath = NULL);
int Gets(const std::string & strUrl, std::string & strResponse, const char * pCaPath = NULL);

public:

void SetDebug(bool bDebug);

private:

bool m_bDebug;

};

endif

include

include "stdafx.h"

include "HttpClient.h"

include "curl/curl.h"

include "curl/easy.h"

CHttpClient::CHttpClient(void) : m_bDebug(false)
{

}

CHttpClient::~CHttpClient(void)
{

}

static int OnDebug(CURL , curl_infotype itype, char pData, size_t size, void *)
{

if (itype == CURLINFO_TEXT)
{
    //printf("[TEXT]{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\n", pData);
}
else if (itype == CURLINFO_HEADER_IN)
{
    printf("[HEADER_IN]{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\n", pData);
}
else if (itype == CURLINFO_HEADER_OUT)
{
    printf("[HEADER_OUT]{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\n", pData);
}
else if (itype == CURLINFO_DATA_IN)
{
    printf("[DATA_IN]{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\n", pData);
}
else if (itype == CURLINFO_DATA_OUT)
{
    printf("[DATA_OUT]{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\n", pData);
}
return 0;

}

static size_t OnWriteData(void buffer, size_t size, size_t nmemb, void lpVoid)
{

std::string* str = dynamic_cast<std::string*>((std::string *)lpVoid);
if (NULL == str || NULL == buffer)
{
    return -1;
}

char* pData = (char*)buffer;
str->append(pData, size * nmemb);
return nmemb;

}

int CHttpClient::Post(const std::string & strUrl, const std::string & strPost, std::string & strResponse)
{

CURLcode res;
CURL* curl = curl_easy_init();
if (NULL == curl)
{
    return CURLE_FAILED_INIT;
}
if (m_bDebug)
{
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
}
curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, strPost.c_str());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return res;

}

int CHttpClient::Get(const std::string & strUrl, std::string & strResponse)
{

CURLcode res;
CURL* curl = curl_easy_init();
if (NULL == curl)
{
    return CURLE_FAILED_INIT;
}
if (m_bDebug)
{
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
}
curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
/**
* 当多个线程都使用超时处理的时候,同时主线程中有sleep或是wait等操作。
* 如果不设置这个选项,libcurl将会发信号打断这个wait从而导致程序退出。
*/
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return res;

}

int CHttpClient::Posts(const std::string & strUrl, const std::string & strPost, std::string & strResponse, const char * pCaPath)
{

CURLcode res;
CURL* curl = curl_easy_init();
if (curl == NULL)
{
    return -1;
}
if (m_bDebug)
{
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
}
curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, strPost.c_str());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
if (NULL == pCaPath)
{
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
}
else
{
    //缺省情况就是PEM,所以无需设置,另外支持DER
    //curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true);
    curl_easy_setopt(curl, CURLOPT_CAINFO, pCaPath);
}
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return res;

}

int CHttpClient::Gets(const std::string & strUrl, std::string & strResponse, const char * pCaPath)
{

CURLcode res;
CURL* curl = curl_easy_init();
if (NULL == curl)
{
    return CURLE_FAILED_INIT;
}
if (m_bDebug)
{
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
}
curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
if (NULL == pCaPath)
{
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
}
else
{
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true);
    curl_easy_setopt(curl, CURLOPT_CAINFO, pCaPath);
}
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return res;

}

///////////////////////////////////////////////////////////////////////////////////////////////

void CHttpClient::SetDebug(bool bDebug)
{

m_bDebug = bDebug;

}

include "stdafx.h"

include <windows.h>

include "HttpClient.h"

int _tmain(int argc, _TCHAR* argv[])
{

long long int s_count = 0;
while (true)
{
    Sleep(100);
    CHttpClient client;
    std::string url = "http://survey.sina.cn/aj/submit?poll_id=xxxx&q_xxx=xxx";

    std::string respon;
    client.Get(url, respon);
    size_t pos = respon.find("true");
    printf("You are vote to XXXTeam {b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}lld times.result:{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\r\n", ++s_count, (pos == std::string::npos) ? "ERROR" : "OK");
    printf("respon:{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\r\n", respon.c_str());
    printf("\r\n");
}

return 0;

}
三、放大招

OK,再写个小test程序,一秒刷10次。后来测试发现,不管一秒请求多少次,貌似服务器每秒只接收一次,或者是同一个ip只接收一次。

好了,挂了一夜,票数直线上升,将近升了一半。

零、总则
市场只有横盘和单边两种形态,在横盘和单边时候都做波段,吃其中的某一个波段,最长持8*4H=32小时的波段。通过4H看趋势,下降、上升、横盘。理论上只有在趋势转换的时候,才会亏损。

一、入场
在创新高的价格第一次回撤时买入,在价格创新低第一次反弹的时候沽空。4H看趋势,确定趋势后,5M找反弹入场。

二、出场
入场后吃足一个波段(8*4H),创新低或者创新高了则退场,不贪多,不嫌少。

三、止损、止盈
止损在当前点与上一个波的最高点(最低点)中间,止盈是在新高点或者新低点。吃足波段。

四、胜算概率
止损和止盈的点数基本相同,只要提高入场准确率,肯定是会有盈利的。