结构化参数RBBV3S1RGB01_optStruct

2年测试201708_201908(20191010)

STEP1,参数分步测试(误操作,一次全测了)

结构化参数RBBV3S102B01T07_optStruct

半年测试(20190201-20190801)

STEP1,structFilter

vnpy_strategy102Dch

第一版

1
2
3
4
5
6
startDateStr = '20190127'
SP888

setting.paramDict['barCircle'] = [10, 30, 60] # 10结果最差,去掉,避免脏信息导致偏差
setting.paramDict['fastWindow'] = [10, 20, 30]
setting.paramDict['slMultiplier'] = [2.0, 3.0, 4.0]

vnpy_strategy102Sma

第一版

vnpy_strategy202KkMa

1
2
3
买入:rsi>70,开多,rsi<30,开空
卖出:
止损:最高价回撤止损

基础版本:git05_u02格式优化
主版本:git05_u02格式优化

vnpy_strategy203DualThrust

简介

这里使用的是自修改版本

vnpy_strategy4020coBreak

1
2
3
4
5
1,寻找指标可以反映出“即将突变“的信号
2,信号发出后下单oco,只预测波动,不预测方向
大体上时带状区间+oco订单
代码:strategyOcoBreak.py
基础版本:基础版本fromKKStrategy

基础版本:git20_U01
主版本:git20_U01

vnpy_strategy402DchB02

简介

1
2
3
4
5
6
7
8
9
10
11
基于分钟线

空仓:
开oco限价单:价格self.donchianUp,价格self.donchianDown
持多仓
平多限价单:价格self.longStop(atr止损价)
持空仓
平空限价单,价格self.shortStop(atr止损价)

1,cancelAll修改仅仅cancel止损单,保留订单
2,止损采用最大持有期间回撤止损,0.8默认的

vnpy_strategy402Kk

简介

这里使用的是自修改版本

vnpy_strategy402TDmaB02

简介

1
2
3
4
5
6
7
8
9
10
11
12
13
14
相对版本1有2个改动点(OCO开单)
1,开单条件,快正转负数or负转正,oco订单,oco上下界为3倍ATR
2,订单刷新机制修改,之前默认机制,bar来全撤,这个版本bar来仅仅撤销止损单。
只有当前空仓且没有待执行oco开单时才新开oco,否则等待。
所以这个版本有止损单消失风险(拐点下止损,一个bar就没了,但不会再重新下止损)

不同于原版本v2,原版本v2,持仓为空时,判断有等待单则直接return,感觉是逻辑漏洞

# 上阶段波动差大于 > self.min_atr_ratio * self.atrValue
if self.fast_diff1 < 0 < self.fast_diff0 or self.fast_diff1 > 0 > self.fast_diff0:
if len(self.buyStopOrders) > 0:
self.cancelList(self.buyStopOrders)
self.kkUp, self.kkDown = am.keltner(self.fastWindow, self.kkDev)
self.sendOcoOrder(self.kkUp, self.kkDown, 1)

vnpy_strategy402TDmaB05

M10_TDoubleMaV5B4S0T2Strategy:git10_branch02,oco订单,有条件止损漏洞,maxmin覆盖形式下单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if bar.high >= max(am.high[-self.fastWindow:]):
# 是否已有订单
if len(self.buyStopOrders) > 0:
if self.oco_reason == 1:
# 上次下单原因时最高价,但这次比上次高,则撤销重新下
self.cancelList(self.buyStopOrders)
else:
#上次下单最低价原因,不操作
return
self.kkUp, self.kkDown = am.keltner(self.kkLength, self.kkDev)
self.sendOcoOrder(self.kkUp, self.kkDown, 1)
self.oco_reason = 1
elif bar.low <= min(am.low[-self.fastWindow:]):
# 是否已有订单
if len(self.buyStopOrders) > 0:
if self.oco_reason == 2:
# 上次下单原因时低价,但这次比上次低,则撤销重新下
self.cancelList(self.buyStopOrders)
else:
# 上次下单最高价原因,不操作
return
self.kkUp, self.kkDown = am.keltner(self.kkLength, self.kkDev)
self.sendOcoOrder(self.kkUp, self.kkDown, 1)
self.oco_reason = 2

vnpy_strategy402TDmaB07

TDoubleMaV7B4S0T2Strategy:git10_branch02
上上一个极致点相对位置开oco单,有漏洞止损(本来是写残的一个策略,保险期间,拯救一下)
特征代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if bar.high >= max(am.high[int(-self.fastWindow / 2):]):
if self.this_type == 2:
self.last_price = self.this_price
self.last_type = self.this_type
self.trans_type_auto = 2

self.this_price = bar.high
self.this_type = 1

elif bar.low <= min(am.low[int(-self.fastWindow / 2):]):
if self.this_type == 1:
self.last_price = self.this_price
self.last_type = self.this_type
self.trans_type_auto = 1

self.this_price = bar.low
self.this_type = 2

vnpy_strategy402TDmaB09

vnpy_strategy102RsiAtr

简介

这里使用的是自修改版本

vnpy_strategy102TrixKdj

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
开仓:
一层滤网,mid_diff小于mindiff则不开仓,mindiff和fastwindow正比
二层滤网,mid>快>慢 且bar.low>max(high(-slowwindow,-fastwindow)) 且 快方向正 且 慢方向正 且 风方向正
止损:最高价回撤mindiff止损

添加了kdj辅助信息
开多
min_diff = self.min_diff_radio * bar.close
if mid_diff < min_diff:
return
if mid > self.fastMa0 > self.slowMa0 \
and bar.low > np.max(am.high[-self.slowWindow:-self.fastWindow]) \
and self.fastMa0 >= self.fastMa1 and self.slowMa0 >= self.slowMa1 and self.trixMa0 >= self.trixMa1:
self.buy(bar.close, self.fixedSize)
止损:
min_diff = self.min_diff_radio * bar.close
self.longStop = self.intraTradeHigh - min_diff * self.slMultiplier
self.sell(self.longStop, abs(self.pos), True)

基础版本:git10_U01,结构调整清晰化
主版本:git10_U01,结构调整清晰化

vnpy_strategy110Dma

简介

这里使用的是自修改版本

vnpy_strategy110MomSelf

简介

这里使用的是自修改版本

vnpy_strategy111Dma

简介

1
2
3
4
5
6
添加吊灯止损  
if self.fastMa0 < self.slowMa0:
self.sell(bar.low, abs(self.pos))
else:
self.stopPrice = self.intraTradeHigh - self.atrValue * self.slMultiplier
self.sell(self.stopPrice, abs(self.pos), True)

vnpy_strategy202BollCci

简介

这里使用的是自修改版本

vnpy_strategy202DchCci

简介

1
2
3
4
5
6
7
8
9
10
11
12
基于分钟线

空仓:
if self.cciValue > 0:
开多头限价单:价格self.donchianUp
elif self.cciValue < 0:
开多头限价单:价格self.donchianDown
持多仓
平多限价单:价格self.longStop(atr止损价)

持空仓
平空限价单,价格self.shortStop(atr止损价)

vnpy_strategy102TDma

TDma102B01Strategy
大均线控制方向,小均线拐点开仓
3ATR吊灯止损

TDma102B02Strategy
大均线控制方向,小均线拐点开仓
条件止盈(ATR止盈)止损(3ATR止损)

vnpyM10_TDoubleMAstrategy_V2

新版原因:第一点,第一个文件过大,打开稍慢
第二点,启用更为精细的策略可视化

版本9XZ(git09),maxmin拐点的上极点开oco单

vnpyM10_TDoubleMAstrategy

版本1,短均线导数0开点,3倍长决定方法,卖出时超手续费平否则吊灯止损(频繁窄波动)

三倍双均线
长期均线时短期3倍,方向决定开仓方向
短期均线的导数转折点作为开平仓点
需要计算此次转折点的前序间隔,间隔过于小不开仓

vnpy01_dualThrust_V2

第一篇的评估方式并不合理,改用新的评估方式评估

git04版本1,恢复到原始网格,参数削减为一个

vnpyM09_TrixKDJstrategy

思路

使用trix和kdj结合
来源:注意到双均线策略末期失效后一般转为kdj波动策略合适的行情,所以希望将二者结合,得到即适合双均线有适合kdj的融合策略
trix的最大均线方向为整体开仓方向,多头ok空头
trix的双均线和kdj取或条件作为开仓,平仓用or条件作为平仓
吸收kdj对行情敏感的优势

vnpyM03_DonchianChannelStrategy_C02

原始版本关系:原始版本流程和git都不够规范,无法完全复现一些东西
修改:
1,git管理和文档一致
2,各步骤的对应策略流程的要点词
3,步骤规范化
对应代码同基础版本。

1,基本思路

M03_DCChannelV2B4S0T2Strategy

简介

1
2
3
4
5
6
7
8
9
10
11
基于分钟线

空仓:
开oco限价单:价格self.donchianUp,价格self.donchianDown
持多仓
平多限价单:价格self.longStop(atr止损价)
持空仓
平空限价单,价格self.shortStop(atr止损价)

1,cancelAll修改仅仅cancel止损单,保留订单
2,止损采用最大持有期间回撤止损,0.8默认的

vnpyM02_MomSelfStrategy

自动量策略改造
效果不佳,由于分位数表示,可视化后感觉依然不明显。
未想到合适优化方向。暂放着

思路

vnpyM07_OcoBreak

版本1,原信息

核心思路

vnpyM08_PriceRankstrategy

文件:strategyPriceRank_py

版本1,快慢均突破开,不再满足则平

vnpy07_KkStrategy

思路

1
2
3
4
5
6
7
8
9
基于5分钟k线

空仓:
开OCO订单:多头价格,kkUp,空头kkDown
多头:
平多限价单,价格0.92*high
空头:
平空限价单,价格1.08*low
oco订单需要ontrade做特别处理,成交一方则撤销另一方。

vnpy09_TurtleTradingStrategy

思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
变量
self.longEntry = 0#最新多头成交价
self.shortEntry = 0#最新空头成交价
self.longStop = 0#多头止损价格,成交价格-2ATR
self.shortStop = 0#空头止损价格,成交价格+2ATR
self.entryUp, self.entryDown = self.am.donchian(self.entryWindow)
self.exitUp, self.exitDown = self.am.donchian(self.exitWindow)

策略逻辑
未持仓:
self.sendBuyOrders(self.entryUp)
self.sendShortOrders(self.entryDown)
持多头:
self.sendBuyOrders(self.longEntry)
# 止损逻辑
sellPrice = max(self.longStop, self.exitDown)
self.sell(sellPrice, abs(self.pos), True)
持空头:
self.sendShortOrders(self.shortEntry)
# 止损逻辑
coverPrice = min(self.shortStop, self.exitUp)
self.cover(coverPrice, abs(self.pos), True)

函数
def sendBuyOrders(self, price):
"""发出一系列的买入停止单"""
t = self.pos / self.fixedSize
if t < 1:
self.buy(price, self.fixedSize, True)
。。。
if t < 4:
self.buy(price + self.atrVolatility*1.5, self.fixedSize, True)
def sendShortOrders(self, price):
t = self.pos / self.fixedSize

if t > -1:
self.short(price, self.fixedSize, True)
。。。
if t > -4:
self.short(price - self.atrVolatility*1.5, self.fixedSize, True)

vnpy06_DoubleMaStrategy

思路

1
2
3
4
5
if 金叉:
平空,开多

if 死叉:
平多,开空

vnpyM04_ATRStrategy

01基本思路

ATR一般用来做止损策略,如果在止损领域有效的化,可以认为下面成立
1,做多止损,做多但是价格下跌超过N倍ATR,则平仓
2,做空止损,同上反向
若ATR用来做止损有效,
对于情况1,将“则平仓”修改为“做空”,那么应该有稳定的正收益。其实时截取他人ATR止损所丢弃的利润。
隐患:策略本身如何做止损(以策略收益建立ATR进行止损?)

vnpyM05_RSIStrategy

基本思路

买入:rsi>70,开多,rsi<30,开空
卖出:
止损:最高价回撤止损

vnpyM03_DonchianChannelStrategy_V2

1
2
3
4
5
1,多指标仓位控制(比如macd中金叉死叉控制开仓,difdea都到0上方,且目前已有持仓则进行加仓,等于开仓信号+强化信号)  
2,日期偏移(类似这个boll采用方法,指标大于n日前的xx取值,主要是指标如果敏感或者“快”了,就丧失对历史信息敏感性,如果不敏感或者“慢”了,又感觉迟缓了,而有时我们的确会关注历史信息,这是可能需要进行日期偏移处理,或者其他类似手段,比如快线-慢线等。)
3,添加信号持续时间限制(比如,当前bar低于xxx,当前bar的上一个也低于xx,有过拟合风险)

其实可以按照机器思路,好坏点分2对,分析好点和坏点那个参数取值的分位差异最大,则采用那个参数控制过滤(区分)。这样理论上一定可以取得较好效果,不过可能有过拟合嫌疑。

已有策略的筛选和参数筛选周期筛选

vnpyM03_DonchianChannelStrategy

基础版本git01(改为分钟bar)

01基本思路

vnpy08_MultiSignalStrategy

思路

1
2
3
三个单独信号RSI,CCI,MA,每个信号吃进去bar,计算仓位0,-1,1
策略每bar:
set_target_pos(sum(3信号仓位))

vnpy03_BollChannelStrategy_V2

版本1,原来基础版

基本思路

vnpy05_MultiTimeframeStrategy

基本思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
构造k线:
1,5分钟k线
2,15分钟k线
构造基于15分钟k线的移动平均线ma5和ma20
定义:maTrend 为ma5(15分钟k)大于ma20(15分钟k),真为1,假为-1

空仓:
if maTrend为1 并且RSI大于RSI做多阈值:
开多单
elif maTrend为-1 并且RSI小于RSI做空阈值:
开空单
持有多单:
if maTrend为-1并且RSI小于50:
平多单
持有空单:
if maTrend为1并且RSI大于50:
平空单

vnpy04_AtrRsiStrategy

版本1,原来测试

基本思路

vnpy01_dualThrust

dualThrust介绍

Dual Thrust是一个趋势跟踪系统,由Michael Chalek在20世纪80年代开发,曾被Future Thruth杂志评为最赚钱的策略之一。Dual Thrust系统具有简单易用、适用度广的特点,其思路简单、参数很少,配合不同的参数、止盈止损和仓位管理,可以为投资者带来长期稳定的收益,被投资者广泛应用于股票、货币、贵金属、债券、能源及股指期货市场等。
在Dual Thrust交易系统中,对于震荡区间的定义非常关键,这也是该交易系统的核心和精髓。Dual Thrust系统使用Range = Max(HH-LC,HC-LL)来描述震荡区间的大小。其中HH是N日High的最高价,LC是N日Close的最低价,HC是N日Close的最高价,LL是N日Low的最低价。
具体说:
1、首先计算:
(1)N日High的最高价HH, N日Close的最低价LC;
(2)N日Close的最高价HC,N日Low的最低价LL;
(3)Range = Max(HH-LC,HC-LL)
(4)BuyLine = Open + K1Range
(5)SellLine = Open + K2
Range

vnpy02_BollChannelStrategy

基本思路

使用boll带的上下界进行趋势交易,越过上届做多,越过下届做空.

vnpyM01_GridStrategy

代码:StrategyGrid.py

思路

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×