大作业写完了,直接把俺的大作业搬过来吧……

基于幽灵选股者交易策略的综合分析

By S.

一、背景知识概述

幽灵选股者从“幽灵选股者”的名字可以看出,该策略的核心在于“幽灵”。在交易之中,真实下单之前,会模拟出一个交易,如果这个虚拟的交易是亏损的,那么下一次才可以启动真实的交易。

策略简介该策略思路来源于交易者观察——他们从自己的交易记录之中发现,若上一次交易盈利,则下一次交易亏损的可能性会比较大。因此在设计策略时,人为控制这些可能会亏损的交易。比起真正的数理基础支持的策略,这种策略更像是一种经验与数据的结合产物;

在具体的策略之中,我们将引入虚拟交易和与之对应的真实下单模块。也就是说虚拟交易一直在进行,直到虚拟交易中上一笔交易是亏损的,并且达到指定的交易条件的情况下,真实下单模块的交易才会被执行;

除去幽灵系统这一开创不同外,其余本质是条件较为复杂的趋势跟随策略。

二、原理与算法

本策略之中涉及到的系统要素为两条指数平均线:指短期均线和长期均线;

RSI指标:即Relative Strength Index;

相对强弱指标RSI是根据一定时期内上涨点数和下跌点数之和的比率制作出的一种技术曲线。能够反映出市场在一定时期内的景气程度。由威尔斯.威尔德(Welles Wilder)最早应用于期货买卖,后来人们发现在众多的图表技术分析中,强弱指标的理论和实践极其适合于股票市场的短线投资,于是被用于股票升跌的测量和分析中。该分析指标的设计是以三条线来反映价格走势的强弱,这种图形可以为投资者提供操作依据,非常适合做短线差价操作;

强弱指标理论认为,任何市价的大涨或大跌,均在0-100之间变动,根据常态分配,认为RSI值多在30-70之间变动,通常80甚至90时被认为市场已到达超买状态,至此市场价格自然会回落调整。当价格低跌至30以下即被认为是超卖状态,市价将出现反弹回升;

该指标的计算方法为: $$RSI = \frac {100\cdot\sum(Max(Close-PreClose,0))}{\sum|Close-PreClose|}$$

唐奇安通道:该指标是由Richard Donchian发明的,用三条不同颜色的曲线组成的。该指标用周期(一般都是20)内的最高价和最低价来显示市场价格的波动性,当其通道窄时表示市场波动较小,反之通道宽则表示市场波动比较大;

当价格冲冲破上轨是就是可能的买的信号;反之,冲破下轨时就是可能的卖的信号;

该指标的计算方法为:$$ 上线=Max(最高价,n) $$

$$ 下线=Min(最低价,n)$$

$$ 中线=\frac{上线+下线}{2}$$

ATR:ATR又称 Average true range,即平均真实波动幅度,表示过去20天真实波幅的均值,简称ATR指标,是由J.Welles Wilder 发明的;

ATR指标主要是用来衡量市场波动的强烈度,即为了显示市场变化率的指标,这一技术指标并不能直接反映价格走向及其趋势稳定性,而只是表明价格波动的程度。该指标对于长期持续边幅移动的时段是非常典型的,这一情况通常发生在市场的顶部,或者是在价格巩固期间。根据这个指标来进行预测的原则可以表达为:该指标价值越高,趋势改变的可能性就越高;该指标的价值越低,趋势的移动性就越弱。

真实波幅是以下三个值中的最大值当前交易日最高价和最低价的波幅 $$gap_1 = curr high - curr low$$

前一交易日的收盘价与当前交易日最高价的波幅 $$gap_2 = pre close -curr high $$

前一交易日的收盘价与当前交易日最低价的波幅 $$gap_3 = pre close - curr low$$

当前交易日的真实波动幅度$(current trading day fluctuation)$的定义为: $$curr fluc = max(gap_1, |gap_2|, |gap_3|)$$

交易量:

不同的购买方风险承受能力不同,可以将风险承受系数设定为$ShR$,即愿意用$ShR$的资金去承担一个ATR的风险;

若确定买入,则价格每上涨1个ATR,追加$ShR$的资金,如需卖出,直接清仓。最大投资近比例为50%;

即每次买卖股票的数量为:$$unit = \frac{capitalShR}{ATRprice}$$

在股票交易中,一手至少买卖100股,因此在代码中做了100倍数的四舍五入的处理

原理与算法入场条件:

模拟交易产生一次亏损,短期均线在长期均线之上、RSI低于超买值、创新高,则开多单

模拟交易产生一次亏损,短期均线在长期均线之下、RSI高于超卖值、创新低,则开空单

出场条件:

持有多单时小于唐奇安通道下轨,平多单

持有空单时大于唐奇安通道上轨,平空单

加仓或减仓:

有持仓,且价格相对上次买入价上涨超过0.5ATR,加仓

有持仓,且价格相对上次买入价下跌超过1ATR,减仓

幽灵交易系统(虚拟系统)除去模拟交易产生一次亏损外,其余和原算法相同

本质策略本文中涉及到的主要技术大类包括趋势跟踪(唐奇安通道)、仓位控制:趋势交易是期货交易中比较常用的策略,早期比较有名的是唐奇安通道突破策略,几乎以此为起点,相继出现了很多趋势交易策略,不同策略都曾风靡一时。

在投资市场中,趋势形态可简单分为三种:上升趋势、下降趋势和震荡趋势。趋势跟随是一种基于价量分析的投资方式,其基本策略是在趋势开始形成时选择趋势方向买入,等待趋势结束后卖出。趋势跟随通常用作中长线策略或者周期较长的短线策略(三五天左右),很少应用在交易频率较高的日内交易中。鉴于趋势跟随赚取的是市场大涨或大跌状态下的钱,在长期盘整的震荡趋势中,不适合配置趋势跟随策略。趋势跟随策略历史久远,有很多著名的趋势跟随系统为聪明的投资者带来了巨大的财富,如海龟交易法则、Dual Thrust交易法则、各类突破交易法则等。

期货交易中,若不能很好地控制仓位,则容易出现爆仓,导致出现巨额亏损,直接出局。而要在市场上实现盈利,生存则是第一要务,因而进行有效的仓位控制,是必不可少的。

说明:幽灵选股者交易策略一般用于期货交易,但由于本质是趋势跟随,也能进行股票交易的使用。本文将其应用于股票交易市场,并进行参数的选取和比较。

三、单只股票策略实现趋势交易在控盘度较高的期货品种上具有较好表现,所以,我们也选用近期买入、卖出量较大的的龙虎榜单中的股票,先作为例子进行代码开发。后期再将代码组成完整函数并随机选取100支股票进行模拟比较和分析。

选取的股票为 东风汽车,代码‘600006’。

说明由于我们只关心绝对收益水平,因而没有和大盘指数进行比较,也没有比较夏普比率之类的指标。

因为如果资金量不多的话,进行这样的比较没有实际意义——从个人投资者的角度来看,资金安全和绝对收益的意义显然更为重要!

第一步 导入相关库

import numpy as np

import pandas as pd

import tushare as ts

import talib as ta

import matplotlib.pyplot as plt

import seaborn as sns

import random

sns.set(style='darkgrid') #设置个人绘图

注意:其中talib不能直接通过pip install方式下载,具体下载方式可参考以下链接,并注意下载文件与python版本对应https://blog.csdn.net/zhang_referee/article/details/105328313

第二步 获取股票相关数据

导入数据,绘制2010年至2020年间,股票走势图

stk_code = '600006'

stk = ts.get_k_data(stk_code,start='2010-01-01', end = '2020-01-01')

stk.index = stk['date']

plt.figure()

stk['close'].plot(color = 'b',grid = True,title=str(stk_code),rot=45,figsize=(12,4),fontsize=10)

plt.show()

本接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/document/2

第三步 设置初始账户状态,并定义工具函数

# 设置参数,后期参数均可以调整,以达到最优策略

capital_base = 100000 # 初始可用资金

total_value = 10000 # 初始总资产(=可用资本金+股票价值)

fastlength = 9 # 短期指数平均线周期

slowlength = 19 # 长期指数平均线周期

length = 9 # RSI参数

oversold = 30 # 超卖

overbought = 70 # 超买

ShR = 0.1 #风险承受能力

Win=20 #窗口期

# 初始化期货账户,一般用于设置计数器,回测辅助变量等

class Account:

def __init__(self):

self.capital = capital_base #初始资金

self.total_value =total_value #总量

self.position=0

self.unit=0

self.last_buy_price=0 #上次购入价

self.stk_amt=0 #持有量

self.stk_value=0 #持有价值

self.ROC=0 #总收益

sec_acc = Account() #设置真实账户

gho_acc = Account() #设置幽灵账户

# 计算双均线

def Calc_MaF(data): #计算长期均线

close = np.array(data['close'])

Mafast=ta.MA(close,fastlength)[-1]

return Mafast

def Calc_MaS(data): #计算短期均线

close = np.array(data['close'])

Maslow=ta.MA(close,slowlength)[-1]

return Maslow

# 计算ATR

def Calc_ATR(data):

TR_List = []

for i in range(Win):

fluc1 = data['high'].iloc[i]-data['low'].iloc[i]

fluc2 = abs(data['high'].iloc[i]-data['close'].iloc[i-1])

fluc3 = abs(data['close'].iloc[i-1]-data['low'].iloc[i])

TR = max(fluc1,fluc2,fluc3)

TR_List.append(TR)

ATR = np.array(TR_List[:]).mean()

return ATR

#据此计算交易量

def calc_trading_unit(ATR,price,total_value = sec_acc.total_value):

unit =int((total_value*ShR)/(ATR*price*100))*100 #其中ShR可调整

return unit

# 判断加仓或者离场

def Add_OR_Stop(price,lastprice,ATR):# 加仓或止损

if price >= lastprice + 0.5*ATR : # 有持仓,买入次数小于5次,并且价格相对上次买入价上涨超过1ATR

return 1

elif price <= lastprice - ATR : # 有持仓,并且价格相对上次买入价下跌超过1ATR

return -1

else:

return 0

#设置列用以记录回测过程的参数

stk['breakup']=0.0 #入场

stk['addup']=0.0 #加仓

stk['out']=0.0 #离场

stk['position']=0 #仓位(加仓次数)

stk['acc_return']=0. #累计收益率

stk['max_retreat']=0. #最大回撤

stk['cash_amt'] = 100000 #账户的现金数量

stk['total_asset'] = 100000 #账户总资产

stk.head()dateopenclosehighlowvolumecodebreakupaddupoutpositionacc_returnmax_retreatcash_amttotal_asset

date

#开多单对资金账户的作用(代码省略)

def OpenAccount(gho_acc,stkg,curr_price):

#加仓对资金账户的作用(代码省略)

def AddAccount(gho_acc,stkg,curr_price):

#清仓对资金账户的作用(代码省略)

def DeletAccount(gho_acc,stkg,curr_price):

第四步 幽灵账户和真实账户的建立

建立幽灵账户

import warnings

warnings.filterwarnings("ignore")

gho_acc = Account() #设置幽灵账户

stkg=stk.copy() #用以记录幽灵账户的虚拟交易股票

#幽灵账户系统(虚拟系统模拟)(代码省略)

for day in range(len(stkg['date'])-Win):

建立真实账户

sec_acc = Account() #构建真实交易账户

for day in range(len(stk['date'])-Win): #代码省略

第五步 策略结果图表化展示

累计收益率

plt.figure()

stk['acc_return'].plot(color = 'b',grid = True,title='Account_return',rot=45,figsize=(16,3),fontsize=9,label='RealAccont')

stkg['acc_return'].plot(color = 'r',grid = True,title='Account_return',rot=45,figsize=(16,3),fontsize=9,label='GhostAccont')

plt.legend(loc='best')

plt.show()

可以看出,真实账户的累计收益率要略高于用来做判断的幽灵账户。这是因为真实账户判断更有经验加成的谨慎性。

同时,累计收益率非常可观。十年最高累计收益率达到了600%的回报。在策略初始前两年,也能有较为不错的涨幅。

入场、加仓和离场的时机

plt.figure()

stk['close'].plot(color = 'y',grid = True,title='The time for Actions',rot=45,figsize=(12,4),fontsize=9,label='Stock')

stk['breakup'].plot(color = 'r',marker = 'p',grid = True,rot=45,figsize=(16,5),fontsize=9,linewidth = 0,markersize = 3,label='Breakup')

stk['addup'].plot(color = 'g',marker = 'p',grid = True,rot=45,figsize=(16,5),fontsize=9,linewidth = 0,markersize = 3,label='Addup')

stk['out'].plot(color = 'k',marker = 'p',grid = True,rot=45,figsize=(16,5),fontsize=9,linewidth = 0,markersize = 3,label='Out')

plt.legend(loc='best')

plt.show()

最大回撤走势

plt.figure()

stk['max_retreat'].plot(color = 'b',grid = True,title=str(stk_code),rot=45,figsize=(12,3),fontsize=9)

plt.show()

最大回撤用来描述买入产品后可能出现的最糟糕的情况,是一个重要的风险指标。对于对冲基金和数量化策略交易,该指标比波动率还重要——可以用来描述任一投资者可能面临的最大亏损。

能够看出该股票该策略的最大回测度不算小,但相比于高额的累计收益率。可以接受。

对比前期,收益率在200%范围之内的时候,最大回撤非常稳定,而且数值很低。在不算小的收益率取得如此稳定的结果,说明幽灵交易者交易策略的确有可取之处。

总结 能够看出幽灵交易者策略是有优势的,特别是相对于幽灵账户而言,真实的交易账户更具有谨慎性,即使这种谨慎性是通过交易员们的经验(前一次交易亏损后一次交易很有可能盈利)得来的。

同时,幽灵交易者策略的收益率十分可观,而且相对而言,最大回撤也不算高,比较稳定。这些都在东风汽车"600006"这支股票上得以验证。

四、函数整合与多支股票的策略实现

将函数整合成可以通过调整参数、股票代码进行处理的函数

#封装函数,可调整参数为“股票代码”“窗口期”“风险承受能力”“短期指数均线周期”和“长期指数均线周期”

def testback(stock,Windows,SherrydenR,fast,slow):#(函数省略)

对股票市场进行测试

由于趋势判断的股票需要有一定的活跃性和交易度,因此采用今日股票交易的股票资金池,再随机选取其中100支股票。

df = ts.get_today_all() #采用今日交易资金池(运行需要一定时间请耐心等待)

[Getting data:]############################################

codeall=df['code']

codelist=list(codeall)

codechoice = random.sample(codelist, 100) #随机选取代码

进行作图和分析

注意:由于接口提示问题(100条提示语),图像会在模块最下方遮盖部分。烦请阅读者往下拉以观看图像

returnmean=[] #一个列表用来存储回报率均值

returnvar=[] #一个列表用来存储回报率方差

returnstd=[] #一个列表用来存储回报率标准差

listdata=[] #存储所有生成datafram

plt.figure()

for i in range(100): #运行需要一定时间请耐心等待

returnback=testback(codechoice[i],20,0.1,9,19)

returnmean.append(returnback['acc_return'].mean())

returnvar.append(returnback['acc_return'].var())

returnstd.append(returnback['acc_return'].std())

listdata.append(returnback)

returnback['acc_return'].plot(grid = True,title='Account_return',rot=45,figsize=(16,3),fontsize=9,label='RealAccont')

plt.show()

由图像可以看出,100支股票的收益率各有区别。有非常优秀的股票(比如达到500%的收益率),也有负收益率。但总的来说,收益率在(0,50%)和(100%,200%)两个部分较为密集。

分析100支股票收益率和收益波动

print("100支股票的平均收益率的均值为:",end='')

print(np.mean(np.nan_to_num(returnmean)))

print("100支股票的平均收益率方差为:",end='')

print(np.mean(np.nan_to_num(returnvar)))

print("100支股票的平均收益率的波动率为:",end='')

print(np.mean(np.nan_to_num(returnstd)))

100支股票的平均收益率的均值为:0.21859028343128512

100支股票的平均收益率方差为:0.2705442322014859

100支股票的平均收益率的波动率为:0.2369179919253362

可以看出,常规来说,该策略的平均收益率能够高达21%(第一次实验时随机选取的数据同样高达20%,第二次实验也有15%!),并且比较稳定,平均收益的波动率均值相较平均收益率的均值来说,也不高。幽灵交易者策略不仅具有普遍高额收益、一般性、对某些特定股票收益十分可观(数倍),同时,也具有稳健性和一定的抗风险能力(收益不至于亏得太狠)。

即其具有高额回报、较低风险的性质。

分析该策略适用于何种股票

直观分析

我们已经得到100支股票的原始数据和收益数据,都储存在列表listdata之中。不妨从中任意抽取前10支股票(本就有任意性)的数据来绘制两组图像,直观分析股票和其该策略下的收益率关系。

plt.figure()

for i in range(10):

listdata[i]['acc_return'].plot(grid = True,title='Account_return',rot=45,figsize=(16,3),fontsize=9,label='RealAccont')

plt.show()

plt.figure()

for i in range(10):

listdata[i]['close'].plot(grid = True,title='Close',rot=45,figsize=(16,3),fontsize=9,label='RealAccont')

plt.show()

从直观分析来看,可以得出幽灵交易者策略更适合波动幅度较大,且综合来看具有上升趋势的股票。

定性分析

#得到股票的波动

stockstd=[]

for i in range(100):

a=listdata[i]['close'].std()

b=listdata[i]['close'].mean()

stockstd.append(a/b) #需要进行类中心化,统一单位

plt.figure()

plt.scatter(stockstd,returnmean)

plt.title('The relation between return and Stock Volatility')

plt.show()

从定性分析来看,股票的波动越高,越有可能获得更高的回报。

五、参数的调整与分析

有调整意义的参数包股票代码、窗口期、风险承受能力、短期指数均线周期和长期指数均线周期,都已写入函数包装之内。接下来,我们通过分别分析窗口期、风险承受能力、短期指数均线周期和长期指数均线周期的控制变量分析,来分析各个指数对于模型契合度和优化程度;

对上述从资金池之中选取的100支随机股票,在利用控制变量法改变参数之后,再分别运行。

对于窗口期的调整

#将窗口期调整为30

returnmean1=[]

returnvar1=[]

returnstd1=[]

for i in range(100):

returnback=testback(codechoice[i],30,0.1,9,19)

returnmean1.append(returnback['acc_return'].mean())

returnvar1.append(returnback['acc_return'].var())

returnstd1.append(returnback['acc_return'].std())

listdata.append(returnback)

returnback['acc_return'].plot(grid = True,title='Account_return',rot=45,figsize=(16,3),fontsize=9,label='RealAccont')

plt.show()

print("窗口期调整为30之后,收益率情况如下:")

print("100支股票的平均收益率的均值为:",end='')

print(np.mean(np.nan_to_num(returnmean1)))

print("100支股票的平均收益率方差为:",end='')

print(np.mean(np.nan_to_num(returnvar1)))

print("100支股票的平均收益率的波动率为:",end='')

print(np.mean(np.nan_to_num(returnstd1)))

窗口期调整为30之后,收益率情况如下:

100支股票的平均收益率的均值为:0.10147970994483999

100支股票的平均收益率方差为:0.08184953388871907

100支股票的平均收益率的波动率为:0.14009450194057554

可以看出,收益率降低而波动幅度反而上升。这说明以20为窗口是一个不错的选择(至少比30要好)。同时,20也是一个不大不小的窗口值,过小的话,均线分析的数据无法使用;过大的话,则调仓的周期又太大,导致不能紧跟趋势。

对于风险承受能力的调整

#将风险承受能力调整为0.2

returnmean2=[]

returnvar2=[]

returnstd2=[]

for i in range(100):

returnback=testback(codechoice[i],20,0.2,9,19)

returnmean2.append(returnback['acc_return'].mean())

returnvar2.append(returnback['acc_return'].var())

returnstd2.append(returnback['acc_return'].std())

listdata.append(returnback)

returnback['acc_return'].plot(grid = True,title='Account_return',rot=45,figsize=(16,3),fontsize=9,label='RealAccont')

plt.show()

print("风险承受能力调整为0.2之后,收益率情况如下:")

print("100支股票的平均收益率的均值为:",end='')

print(np.mean(np.nan_to_num(returnmean2)))

print("100支股票的平均收益率方差为:",end='')

print(np.mean(np.nan_to_num(returnvar2)))

print("100支股票的平均收益率的波动率为:",end='')

print(np.mean(np.nan_to_num(returnstd2)))

风险承受能力调整为0.2之后,收益率情况如下:

100支股票的平均收益率的均值为:0.32675972550305216

100支股票的平均收益率方差为:0.7641589739527268

100支股票的平均收益率的波动率为:0.36051934641784095

当投资者的风险承受能力ShR稍微变大时,均值收益率反而有所增加。说明投资者的均值收益率在ShR=0.2时,比在ShR=0.1时要表现更优秀。意味着个人投资者在实现幽灵投资者策略时,可以稍微秉持开放态度,更加相信算法策略的可靠性,提高风险承受能力。

对长短期均线周期的调整

均线周期一般长线为短线的两倍左右,效果会比较突出。因此,我们使用5和10分别作为短、长周期的调整,再次进行试验。

#将长周期调整为10,短周期调整为5

returnmean3=[]

returnvar3=[]

returnstd3=[]

for i in range(100):

returnback=testback(codechoice[i],20,0.1,5,10)

returnmean3.append(returnback['acc_return'].mean())

returnvar3.append(returnback['acc_return'].var())

returnstd3.append(returnback['acc_return'].std())

listdata.append(returnback)

returnback['acc_return'].plot(grid = True,title='Account_return',rot=45,figsize=(16,3),fontsize=9,label='RealAccont')

plt.show()

print("长均线周期调整为10,短均线周期调整为5之后,收益率情况如下:")

print("100支股票的平均收益率的均值为:",end='')

print(np.mean(np.nan_to_num(returnmean3)))

print("100支股票的平均收益率方差为:",end='')

print(np.mean(np.nan_to_num(returnvar3)))

print("100支股票的平均收益率的波动率为:",end='')

print(np.mean(np.nan_to_num(returnstd3)))

长均线周期调整为10,短均线周期调整为5之后,收益率情况如下:

100支股票的平均收益率的均值为:0.177391274509107

100支股票的平均收益率方差为:0.17463993508744083

100支股票的平均收益率的波动率为:0.20393775085548768

同样能够看出进行周期调整之后,效果没有以前那么好。

因此:本来选定的参数20,0.1,9和19是具有一定代表性的,至少在给定的参数调整之中,都是最优的。

六、总结与反思

总结结论

利用幽灵交易者的交易策略,通过趋势跟踪的大类方法,能够有效地在股票市场获取收益,并且相对来说较为稳定;

幽灵交易者策略之中,相较幽灵账户而言,真实账户因为更为谨慎,往往能获得更大的回报;

策略亮点该策略中的亮点是虚拟交易与实盘交易完全隔离,当虚拟交易亏损后,实盘交易才入场;

将均线与 RSI 相结合,这是区别以往策略的又一亮点,即当行情进入超卖区不做空,当行情进入超买区不做多;

从策略的稳定性来说,策略绩效分布较为稳定,主流品种适应性强;

工作量

本次课程汇报有少量地方参考《海龟交易策略》(设置账户、绘图模式);

未参考任何策略,自己拟定了风险承受能力参数ShR,后续若有能力,还可以进一步研究ShR的最佳值;

引入了双均线、RSI等策略概念;

幽灵账户的设置、如何判断盈利与否、窗口期的设置调整,以及对于代码模型化,都用心进行了打磨;

在可视化方面,图表也都尽量美观,尽力增加可读性;

模块化代码之中,直接能调整参数(设置了窗口期、风险承受能力、长短周期四个变量)是一大亮点,使编码更程序规范化,可读性也增强。

后续可以改进点

改变出场方式本策略是通过唐奇安通道上下轨进行止损出场的,也可以采用最大浮动亏损百分比进行止损。

改变入场方式本策略每次真实入场前是基于前一次的虚拟盈亏,也可以考虑设置多次虚拟盈亏结果决定是否入场。

反思时间安排大作业实验周期较长,未提早进行,因此最后debug时有多处错误以及实验结果不甚理想情况;

之后应该尽量提早完成任务,留下充裕时间解决各种突发问题;

动手实验理论化的课程知识在实践之中会出现各种错误;

应该尽可能多实践多动手,将理论与实践结合,才能更快学习成长。

幽灵交易策略_程序化策略里,幽灵交易者策略的虚拟账户应该怎么设置?相关推荐

  1. gpo 软件限制策略_什么是GPO(组策略对象)? 如何在Microsoft Windows中使用,更改GPO?...

    gpo 软件限制策略 Group Policy is a feature provided by Windows operating systems in order to manage the di ...

  2. 数据分布策略_有效数据项目的三种策略

    数据分布策略 Many data science projects do not go into production, why is that? There is no doubt in my mi ...

  3. 如何制定客户留存策略_企业如何制定数字化转型策略?

    在数字化转型发生之前,企业的业务战略一般都是由高管制定的,并且一旦被确定就会像制度典范一样流传下来.那个时候,无处不在的五年计划在大多数情况下都可以很好地发挥作用,这是因为变化的速度较慢,公司更容易发 ...

  4. python股票策略_用Python编写简单股票策略

    尝试用Ruby写股票策略了一段时间,虽然能捉到实时和历史的股票数据,发现根本找不到复杂的函数库可以用,导致无法进行深入的分析.倒是Python有非常丰富的第三方库,由于二者都是面向对象的语言,差别不大 ...

  5. 钉钉产品策略_如何制定成功的产品策略

    钉钉产品策略 How do we know when a product is solving a significant problem in a growing market? Do we nee ...

  6. 八人过河思考策略_在思考云时平衡策略与战略

    八人过河思考策略 这一直是一个问题-那些将IT体系结构视为可以为单个应用程序或小型系统域提供服务的事物. 如今,许多组织无法选择一种云技术来为整个企业IT服务. 他们处理一系列具有一次性云架构的战术应 ...

  7. python 反爬策略_如何应对网站反爬虫策略?如何高效地爬大量数据?

    爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider),这之间的斗争恢宏壮阔... Day 1 小莫想要某站上所有的电影,写了标准的爬虫(基于HttpCl ...

  8. seo策略_调整移动用户的SEO策略

    seo策略 With the introduction of SmartPhones and the ability to access the web using them has gained m ...

  9. python应对反爬虫策略_如何应对网站反爬虫策略?如何高效地爬大量数据?

    看了回答区,基本的反爬虫策略都提到了,下面说几个作为补充. 1.对于处理验证码,爬虫爬久了通常网站的处理策略就是让你输入验证码验证是否机器人,此时有三种解决方法:第一种把验证码down到本地之后,手动 ...

最新文章

  1. mysql存储过程 php_PHP调用MYSQL存储过程实例
  2. 宝德服务器pr2710装系统过程,宝德PR2710R服务器
  3. mynt product model: D1000-IR-120标定相机和IMU外参之二
  4. struct interface_golang 避坑指南(1)interface 之坑多多 | 文末深圳 Meetup
  5. Win10 + CUDA10.1+pytorch手动安装
  6. 百度最全的LINUX和Redhat学习教程下载帖大全
  7. java treemarker_Java TreeMaker類代碼示例
  8. 无法验证的代码未能通过策略检查
  9. 创金合信基金公司:专户模式案例
  10. 高项 案例分析重点知识 风险采购合同
  11. 水晶易表Xcelsius 2008安装指南 支持WIN10 64位 + office2016
  12. symbian 串行通信
  13. 【理科】2020年高考数学(第三章导数)考点与题型全归纳
  14. OpenNi学习笔记
  15. ubuntu中查找文件后高亮_vim的高亮查找操作
  16. 价格为3000元的计算机的机型,2000-3000元左右的笔记本电脑推荐,性价比超高
  17. 32导联 博睿康_赛题详情(Competition Details)-运动想象无训练数据集
  18. 蓝桥杯历届试题-数字游戏
  19. 2012年02月25日的日记
  20. MeanShift- 案例实现(python)

热门文章

  1. 教育子女正确方式(楼天成父母教育孩子)
  2. 51单片机基础之DS1302
  3. 【计算机二级等级考试】公共基础知识-学习笔记
  4. mpf11_3_status_plotly Align dual Yaxis_animation_button_MFI_Williams %Rsi_AO Co_VWAP_MAcd_BollingerB
  5. 上班防摸鱼插件(知乎页面)
  6. WP Smush Pro网站图片优化插件最新版免费下载
  7. 南大庄建军计算机学院讲座,南京大学庄建军来校进行双创教育交流
  8. 七巧板的制作(结合js 数组对象 for循环)
  9. linux命令:nl命令
  10. 基于视频的车辆识别技术