主页 > 下载imtoken被盗 > “普及”哪里可以买到比特币(中国)维基百科

“普及”哪里可以买到比特币(中国)维基百科

下载imtoken被盗 2023-06-02 05:23:05

1个

前言

加密货币的一个非常显着的特征是它们高度线性相关。 价格几乎在一分钟内瞬间上涨和下跌,你可以想象一个隐形人同时在幕后操纵一切。 然而,这一切是从哪里开始的呢? 哪种加密货币是主流货币? 比特币是否在所有加密市场传播新的买入/卖出信号并触发其他比特币的价格上涨或下跌作为回应? 我们认为,出于历史、法律或流动性等多种原因比特币在哪里可以交易,比特币是一种所有市场参与者都在密切关注的货币。

在今天的推文中,我们将设计一个比特币交易的多空模型。 比特币的盘中价格(1 分钟高开低收时间序列)将用于识别突然的价格变化引起的市场影响。 基于此,我们将模拟一个交易子模型,在触发信号后购买比特币,在一分钟内开立新的多头头寸并应用两步验证止损来关闭交易。 无论费用如何,我们都会在每笔交易中投入固定金额的资金。

2个

数据准备

首先导入相关的Python库:

import ccrypto as cc
import numpy as np
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import plotly.graph_objects as go
import pickle
import warnings
warnings.filterwarnings("ignore")
 
blue, orange, red, green = '#1f77b4''#ff7f0e''#d62728''#2ca02c'
grey8 = (.8,.8,.8)

通过使用 Python 的字典类型,我们可以高效地存储很多时间序列,甚至作为 Pandas 对象,下面的代码效果很好:

coins = ['BTC''ETH''XRP''BCH''LTC''EOS''XTZ''LINK'
         'XLM''DASH''ETC''ATOM']
 
database = {}
for coin in coins:
    print(coin + '...', end=" ")
    try:
        database[coin] = cc.getCryptoSeries(coin, freq='m', ohlc=True, exch='Coinbase')
        print('downloaded')
    except:
        print('unsuccessful')
    
with open('timeseries_20200420_20200427.db''wb'as handle:
    pickle.dump(database, handle)

BTC... downloaded
ETH... downloaded
XRP... downloaded
BCH... downloaded
LTC... downloaded
EOS... downloaded
XTZ... downloaded
LINK... downloaded
XLM... downloaded
DASH... downloaded
ETC... downloaded
ATOM... downloaded

在上面的示例中,我们分别下载了比特币、以太坊、XRP、比特币现金、莱特币、EOS、Tezos、Stellar Lumens、Dash、ETC 和 Cosmos。 在本文中,数据将涵盖最近7个交易日,从2020年4月20日到2020年4月27日。对于流动性较低的币种,时间序列可能会有一些数据缺失。 但是在今天的帖子里,数据真的没有问题,后面你就会看到!

如果在国内下载加密数据,Wind可以,而且他们有一个免费的在线平台: ,所有用户都可以注册。

这是获取比特币的代码生成器:

这是获取的数据:

好了,回到主题,我们从文件中导入所有的时间序列,你可以通过运行以下代码来完成:

with open('timeseries_20200420_20200427.db''rb'as handle:
    ts = pickle.load(handle)
    
print(ts.keys())
dict_keys(['BTC''ETH''XRP''BCH''LTC''EOS''XTZ''LINK''XLM''DASH'
           'ETC''ATOM'])


dict_keys(['BTC''ETH''XRP''BCH''LTC''EOS''XTZ''LINK''XLM''DASH'
           'ETC''ATOM'])

或者目视检查数据,例如:

cc.displayS([ts['BTC'].head(), ts['ETH'].head()], ['Bitcoin (start)','Ethereum (start)'])
cc.displayS([ts['BTC'].tail(), ts['ETH'].tail()], ['Bitcoin (end)','Ethereum (end)'])

3个

数据可视化探索

在我们的研究中,我们发现,如果比特币的价格在 1 到 15 分钟内快速上涨,那么大量其他币种的价格也会上涨。

对于看跌 15 分钟柱的技术交易者,屏幕上的垂直线给了他们强烈的买入信号(开多头头寸)。 然而,15 分钟在加密货币算术交易中是一个很长的时间。

让我们通过使用 Python 的 plotly 库比较 BTC 和 ETH 的时间序列来分析数据来说明我们在说什么。 Plotly 提供了一种非常简单的方法来可视化开盘高点和低点收盘时间序列。 代码如下:

whiteP, blackP, redP, greyP = '#FFFFFF''#000000''#FF4136''rgb(150,150,150)'
 
fig = go.Figure(data=go.Candlestick(x     = ts['BTC'].index, 
                                    open  = ts['BTC'].iloc[:,0], 
                                    high  = ts['BTC'].iloc[:,1],
                                    low   = ts['BTC'].iloc[:,2],
                                    close = ts['BTC'].iloc[:,3],)
               )
fig.update(layout_xaxis_rangeslider_visible=False)
fig.update_layout(plot_bgcolor=whiteP, width=500)
fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor=greyP)
fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor=greyP)
fig.update_yaxes(title_text='BTC/USD')
 
cs = fig.data[0]
cs.increasing.fillcolor, cs.increasing.line.color = blackP, blackP
cs.decreasing.fillcolor, cs.decreasing.line.color = redP, redP
 
fig.show()

对于比特币和以太坊,它们的 1 分钟交易模式有很多相似之处,并且有一些显着的强相关性:

那里可以买比特币_中国什么时候可以买比特币_哪里可以买比特币

在这里,您可以轻松地在 16:22(2020 年 4 月 23 日)发现比特币价格峰值,以及相应的 ETH 峰值:

BTC 价格从 7,400 美元的阻力位上涨至 7,700 美元左右,仅 4 分钟就上涨了 4%。 有趣的是,如果您比较烛台图表的 1 分钟柱,您可以看到两种加密货币的交易有多接近。 两者之间的唯一区别是体积及其在价格上的表现。

4个

开仓信号

在我们的研究中,我确定 BTC 收盘价与一分钟前收盘价之间 0.5% 的变化率是下一分钟开启新交易(多头头寸)的良好触发因素。

因为我们的触发器是基于比特币的,所以我们可以在一段时间内使用本地 btc 来确定它们。 代码如下:

btc = ts['BTC']

btc = btc[['BTCUSD_O''BTCUSD_C']]  
 
btc['BTCUSD_C_LAG1'] = btc['BTCUSD_C'].shift(1)
 
def rr(z):
    '''Calculates rate of return [percent].
       Works with two DataFrame's columns as an input.
    '''

    x, y = z[0], z[1]
    return 100*(x/y-1)
 
btc['rate_of_reutrn'] = btc[['BTCUSD_C''BTCUSD_C_LAG1']].apply(rr, axis=1)
 
display(btc)
 
btc = btc.dropna()

假设0.5%为阈值,我们可以找到并说明所有可能的触发点如下:

thr = 0.5
 
tmp = btc[btc.rate_of_reutrn > thr]
 
fig, ax = plt.subplots(1,1,figsize=(15,5))
ax.plot((btc.BTCUSD_C), color=grey8)
ax.plot([tmp.index, tmp.index], [tmp.BTCUSD_O, tmp.BTCUSD_C], color=red)
ax.grid()
ax.legend(['BTCUSD收盘价''触发信号'])
plt.gcf().autofmt_xdate()
myFmt = mdates.DateFormatter('%Y-%m-%d %H:%M')
plt.gca().xaxis.set_major_formatter(myFmt)

给定时间序列跨度,潜在触发因素的数量很少 (16)。 触发信号由以下因素决定:

中国什么时候可以买比特币_哪里可以买比特币_那里可以买比特币

print(tmp.index)

DatetimeIndex(['2020-04-20 20:05:00''2020-04-20 20:06:00',
               '2020-04-21 11:59:00''2020-04-21 13:23:00',
               '2020-04-21 19:50:00''2020-04-21 19:51:00',
               '2020-04-23 15:35:00''2020-04-23 16:05:00',
               '2020-04-23 16:19:00''2020-04-23 16:20:00',
               '2020-04-23 16:21:00''2020-04-23 18:00:00',
               '2020-04-24 13:05:00''2020-04-25 17:50:00',
               '2020-04-26 12:49:00''2020-04-27 02:00:00'],
              dtype='datetime64[ns]', name='date', freq=None)

即根据我们的模拟交易策略,我们将在(时间指数触发新仓)的开盘价开仓:

ind_buy = tmp.index + pd.Timedelta(minutes = 1)
print(ind_buy)

DatetimeIndex(['2020-04-20 20:06:00''2020-04-20 20:07:00',
               '2020-04-21 12:00:00''2020-04-21 13:24:00',
               '2020-04-21 19:51:00''2020-04-21 19:52:00',
               '2020-04-23 15:36:00''2020-04-23 16:06:00',
               '2020-04-23 16:20:00''2020-04-23 16:21:00',
               '2020-04-23 16:22:00''2020-04-23 18:01:00',
               '2020-04-24 13:06:00''2020-04-25 17:51:00',
               '2020-04-26 12:50:00''2020-04-27 02:01:00'],
              dtype='datetime64[ns]', name='date', freq=None)

5个

止损两步验证

我们有数百种平仓方式。 在这里,让我们应用一个简单的止损方法。 它可以在两种情况下激活:

1. 如果一笔交易中滚动的 PnL 低于某个阈值。

2. 如果滚动最大交易计算的PnL与当前交易的PnL的相对差值超过一定水平。

def check_stoploss(z, thr1=-0.15, thr2=-0.15):
    p1, p2 = z
    if p1 < thr1 or p2 < thr2:
        return False
    else:
        return True

以上两个阈值均假定为 15%。 换句话说,如果交易的 PnL 将跌至 -15% 以下(情况 1),我们将以最接近的收盘价平仓。 同样,如果交易的 PnL 将上升到新的最大值 31%,并且由于此时价格将下跌超过 -15%(情况 2),我们将兑现(希望交易的 PnL 为正)价值)。

6个

模拟交易

鉴于每笔交易何时开盘和何时收盘的规则,在下面的盘中算法交易模拟中,假设我们每笔交易投资 1,000 美元(不包括佣金)。 首先,我们可以分析是否只有比特币交易。 我们的代码是对所有 16 个预定触发器的循环。 它的编写方式是收集 PnL 信息以进行滚动交易,达到/新的 PnL 最大值。

backtested_coins = ['BTC']
 
results = {}
 
for coin in backtested_coins:
 
    df = ts[coin]
 
    tradePnLs = list()
 
    for ib in range(len(ind_buy)):
        i = ind_buy[ib]
        try:
            op = df.loc[i][0]
 
            tmp = df[df.index >= i]
            tmp['open_price'] = op  
            tmp['current_price'] = df[coin + 'USD_C']
            tmp['pnl'] = tmp.current_price / op - 1
 
            fi = True
            out1 = list()
            out2 = list()
            for j in range(tmp.shape[0]):
                if fi:
                    maxPnL = tmp.pnl[j]
                    maxClose = tmp.iloc[j, 3]
                    fi = False
                else:
                    if tmp.pnl[j] > maxPnL:
                        maxPnL = tmp.pnl[j]
                        maxClose = tmp.iloc[j, 3]
                out1.append(maxPnL)
                out2.append(maxClose) 
 
            tmp['maxPnL'] = out1
            tmp['maxClose'] = out2
            tmp['drawdown'] = tmp.current_price / tmp.maxClose - 1
            tmp['hold'] = tmp[['pnl''drawdown']].apply(check_stoploss, axis=1)
 
            sell_executed = True
            try:
                sell_df = tmp[tmp.hold == 0]
                sell_time, close_price = sell_df.index[0], sell_df.current_price[0]
                tmpT = tmp[tmp.index <= sell_time]
            except:
                sell_executed = False
 
            plt.figure(figsize=(15,4))
            plt.grid()
            plt.plot(tmp.pnl, color=grey8, label = "Rolling trade's PnL (open trade)")
            if sell_executed:
                plt.plot(tmpT.pnl, color=blue, label = "Rolling trade's PnL (closed)")
                plt.title("Trade's final PnL = %.2f%%" % (100*tmpT.iloc[-1,6]))
                tradePnLs.append(tmpT.iloc[-1,6])
            else:
                plt.title("Current trade's PnL = %.2f%%" % (100*tmp.iloc[-1,6]))
                tradePnLs.append(tmp.iloc[-1,6])
            plt.plot(tmp.maxPnL, color=orange, label = "Rolling maximal trade's PnL")
            plt.plot(tmp.index, np.zeros(len(tmp.index)), '--k')
            plt.suptitle('Trade No. %g opened %s @ %.2f USD' % (ib+1, i, df.loc[i][0]))
            plt.legend()
            locs, labels = plt.xticks()
            plt.xticks(locs, [len(list(labels))*""])
            plt.show()
 
            plt.figure(figsize=(14.85,1.5))
            plt.grid()
            plt.plot(tmp.drawdown, color=red, label = "Rolling trade's drawdown")
            plt.plot(tmp.index, np.zeros(len(tmp.index)), '--k')
            plt.gcf().autofmt_xdate()
            myFmt = mdates.DateFormatter('%Y-%m-%d %H:%M')
            plt.gca().xaxis.set_major_formatter(myFmt)
            plt.legend()
            plt.show()
 
            print("nn")
        except:
            pass

对于我们列表中的第一笔交易,将止损配置保持在案例 1=-0.15 和案例 2=-0.15 的水平,我们得到:

可以简单理解为交易仍然盈利+11.16%(时间序列末尾)。 这次没有触发止损。

但是,如果我们允许设置案例 2=-0.03,那么如果交易的 PnL 值比交易自开市以来达到的最大 PnL 值下降超过 3%,则交易将进入止损过程:

在这种情况下,我们的投资回报率为 +6.72%,即 +67.20 美元。

在本文中,我们提供了一个直观的示例,说明在给定一组可靠的时间序列的情况下设计和测试您自己的交易策略的可能性。

如果我们用下面的代码补充上面的循环,我们将能够准备一个事务日志。 如果交易因止损而终止,您会认为交易的 PnL 已实现,而在所有其他情况下则视为未实现:

c = 1000  
    tradePnLs = np.array(tradePnLs)
    n_trades = len(tradePnLs)
    res = pd.DataFrame(tradePnLs, columns=['Trade_PnL'])
    res['Investment_USD'] = c
    res['Trade_ROI_USD'] = np.round(c * (tradePnLs + 1),2)
    res.index = np.arange(1,n_trades+1)
    res.index.name = 'Trade_No'
    ROI = res.Trade_ROI_USD.sum() - (n_trades * c)
    ROI_pct = 100 * (res.Trade_ROI_USD.sum() / (n_trades * c) - 1)
    tot_pnl = res.Trade_ROI_USD.sum()
    res.loc[res.shape[0]+1] = ['', np.round(n_trades * c,2), '']
    res.rename(index = {res.index[-1] : "Total Investment (USD)"}, inplace=True)
    res.loc[res.shape[0]+1] = ['''', np.round(tot_pnl,2)]
    res.rename(index = {res.index[-1] : "Total PnL (USD)"}, inplace=True)
    res.loc[res.shape[0]+1] = ['''', np.round(ROI,2)]
    res.rename(index = {res.index[-1] : "Total ROI (USD)"}, inplace=True)
    res.loc[res.shape[0]+1] = ['''', np.round(ROI_pct,2)]
    res.rename(index = {res.index[-1] : "Total ROI (%)"}, inplace=True)
    
    results[coin] = res

对于 BTC比特币在哪里可以交易,我们可以得到:

display(results['BTC'])

2.64%%的涨幅似乎很低。 让我们看看在同一时间段内交易其他加密货币时,我们是否可以使用同一组基于比特币的触发器来击败基准。

7

带有基准的 ETH、XTZ、DASH 和 LINK

替换当前代码行:

display(results['BTC'])backtested_coins = ['BTC''ETH''XTZ''DASH''LINK']backtested_coins = ['BTC''ETH''XTZ''DASH''LINK']

然后重新运行整个模拟:

cc.displayS([results['ETH'], results['XTZ']], ['Trading ETH/USD''Trading XTZ/USD'])
cc.displayS([results['DASH'], results['LINK']],['Trading DASH/USD''Trading LINK/USD'])

Tezos (XTZ) 每笔交易的利润最高:25.12%

8个

总结

在今天的帖子中,我们学习了如何处理日内交易数据和设计基于实时事件的算法交易策略。 在短时间内获得巨大收益的潜力是巨大的。 但是你必须想出一个好的交易模式。 加密货币世界的长期盈利与任何其他交易市场一样困难。 希望你能从这篇文章中有所收获!

2020年第88条

量化投资与机器学习微信公众号是业内主流的量化自媒体,垂直于Quant、MFE、Fintech、AI、ML等领域。 公众号拥有18万+粉丝,来自公募、私募、券商、期货、银行、保险资管、海外等众多领域。 每天发布行业前沿研究成果和最新量化资讯。

您的每一次“观看”都是对我们最大的鼓励

挖矿网Ethos中文网拥有简单易用的挖矿系统,为挖矿行业提供教程软件和矿机评测及交易信息,对比计算各种数字货币在挖矿网的挖矿收益,以及介绍矿网挖矿工具,矿场最新动态等。

矿业网络,版权所有丨如未注明,均为原创丨本站采用BY-NC-SA协议授权

转载请注明原文链接:《科普一下》比特币哪里买(中国)维基百科