跑策略不要跑平台币... 实盘
其他币都是一家交易所对标其他几个交易所所形成的价格
平台币不同... 他一家说的算
这就是下场:
1-12日 圣杯策略实盘结果 实盘
第一个圣杯跑了44天了,最高盈利62%,目前又来到了最大回撤点:
第二个圣杯策略,目前实盘了七天:
整体框架经过了无数次修改没什么大问题
现在一直在解决订单完全成交导致滑点的问题
这几天折腾第二个圣杯策略去了,没更新博客,回测万2%手续费可以达到日化15%
先是框架搭建、修bug、修完bug来了个大额订单无法完全成交,头疼。
如果0手续费... 笔记
在高频领域,如果你有0手续费,那么随意一个指标,有50%胜率,就可以致富
哦不对,还有一个前提,你能保证交易没有滑点,也就是你的开仓平仓都能保证是指定价格交易
否则,结果就会变成这样:
12-29日 实盘策略 实盘
1. 前言
最近5天,一直在忙着让第二个圣杯策略实盘
前前后后改了应该有几十个bug了
因为这个策略需要高频超短线做市,之前的框架不能满足
框架太复杂,又熬了不少夜肝了不少代码
又把我的作息和生活节奏打乱了
Ps:安利一下这个免费的思维导图《GitMind》软件
2. 实盘收益
前一期的实盘策略目前保留了Bounce和RsiMa
Fib Vwap虽然赚了30%个点,但是我还是把他剔除了,因为无法用回测数据支撑,跑着不放心
RsiMa属于趋势策略,Bounce为震荡策略,实盘中我与Bounce结合相跑
距离前一期一个月了,实盘也跑了一个月
期间最大回撤达到了20%多,虽然属于设计之内,但亏钱还是挺难受的,好在后面跑回去了
这个月整体盈利50%左右
3.实盘策略
1. Bounce 反弹 [圣杯]
该策略为震荡策略,
顺大势逆小势,大势为多,那么每当在底部就开多,到高处平多。做空反之
亏损的原因为大势逆转
12-19日 BTCUSDT 更换为BounceV2版本,回撤从-26.57%降低到-23.51%%
地址:https://sumubai.cc/post/49
开跑:11-29 18:22:36
2. Rsi Ma
Rsi追踪趋势,Rsi值进行Ma平滑处理防止震荡重复入场
地址: https://sumubai.cc/post/60
开跑:11-29 18:22:36
3. Sb [圣杯2]
圣杯的首字母sb 23333
待跑
4. 往期实盘
- 11-14日 实盘策略 https://sumubai.cc/post/28
- 11-29日 实盘策略 https://sumubai.cc/post/52
第二个圣杯策略 记录一下 策略
1. 策略原理
原理和Bounce反弹策略很像,区别在于一个逆势 一个顺势
暂时取名叫Sb策略,哈哈
有个坏处是它属于高频超短线策略,需要Maker手续费
Bounce反弹策略就不一样了,手续费再高也能盈利
半年了,每日每夜的研究,走过不少弯路
还好前一个月走回来了策略这条路
金融,Good Bye
2. 回测结果
万2手续费Eth近四个月:
万1手续费Eth近四个月:
万0手续费Eth近四个月:
Eth Eth_Sell Dot Dot_Sell
两个交易对多空双开回测:
万2手续费近2个月:
万0手续费近2个月:
万2手续费近1年:
万0手续费近1年:
统计:
3. 总结
以上仅仅是两个交易对的效果,如果10个交易对呢,2333
然后加上配合市商账号相信日化可以达到5%
一如既往最大回撤控制在30%
Dca策略 类马丁 策略
1.策略原理
Dca:Dollar cost averaging 美元平均成本
使用均线确定趋势
均线金叉后 买入初始 N% 量
然后确定十条网格线 (网格之间间距越来越大)
每个网格线买入点的量倍投
止盈:持仓成本固定 1.5%
止损:第十条网格价格线的 N%
于普通马丁和网格不同,带有止损不会被套和爆仓
网格线和加仓量计算代码:
seting = {
'base_size': 5, #初始下单量 %
'safety_size': 2, #马丁初始下单 %
'max_trades': 9, #最大交易数
'wangge_price': 0.4 * 0.01, #网格间距
'wangge_price_scale': 1.19, #网格乘数
'wangge_volume_scale': 1.8, #马丁乘数
}
class DcaClass():
def __init__(self, seting):
self.close = 0 #初始开仓价格
self.seting = seting
self.i = 1
#参数i为第几条网格线
def step(self, i):
pd = self.seting['wangge_price']
ss = self.seting['wangge_price_scale']
if i == 1:
return pd
if i == 2:
return pd + pd * ss
if i == 3:
return pd + (pd + pd * ss) * ss
if i == 4:
return pd + (pd + (pd + pd * ss) * ss) * ss
if i == 5:
return pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss
if i == 6:
return pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss
if i == 7:
return pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss
if i == 8:
return pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss
if i == 9:
return pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss
if i == 10:
return pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss
return pd
"""网格价格计算"""
def long_line(self, i, side):
return self.close - self.close * self.step(i) if side == 'BUY' else self.close + self.close * self.step(i)
"""倍投数量计算"""
def safety_order_size(self, yuer, i, side):
ok = yuer * self.seting['safety_size'] / 100 * math.pow(self.seting['wangge_volume_scale'], i-1) #次方根
return ok if side == 'BUY' else -ok
总结:Ma交叉后使用类似马丁的方法加仓,提高胜率
2.回测结果
Python实现TradingView中的PivotHigh和PivotLow 指标
直接上代码:
"""枢轴点 最高价"""
def PivotHigh(df, left, right=0):
right = right if right else left
df['pivot'] = 0.0
for i in range(len(df)):
if i >= left+right:
rolling = df['High'][i-right-left:i+1].values
m = max(rolling)
#print(GetTime(df['Time'][i], "%m-%d %H:%M"), df['High'][i-right], m, rolling)
if df['High'][i-right] == m:
df['pivot'].values[i] = m
return df['pivot']
"""枢轴点 最低价"""
def PivotLow(df, left, right=0):
right = right if right else left
df['rollingLow'] = df['Low'].rolling(left+right).min()
df['pivot'] = 0.0
for i in range(len(df)):
if i >= left+right:
rolling = df['Low'][i-right-left:i+1].values
m = min(rolling)
if df['Low'][i-right] == m:
df['pivot'].values[i] = m
return df['pivot']
使用:
import pandas as pd
df = pd.DataFrame(r) #r为K线数据
df['PivotHigh'] = PivotHigh(df.copy(), 10, 10)
df['PivotLow'] = PivotLow(df.copy(), 10, 10)
BOLL布林带定向策略 策略
1. 策略原理
当收盘价上穿下轨,做多
当收盘价下穿上轨,做空
代码:
seting = {'name': 'BBv3', 'symbol': 'BTCUSDT', 'kTime': '15m', 'bb_len': 7, 'buy_len': 44, 'buy_mult': 2.664, 'sell_len': 20, 'sell_mult': 2.54, 'buy': 1, 'buyZhiying': 12.704, 'buyZhisun': 7.525, 'sell': 1, 'sellZhiying': 6.112, 'sellZhisun': 1.52}
"""
布林带升级版定向策略
"""
def BBv3(r, df, seting):
df['ma'] = SMA(r, seting['bb_len'], 'Close')
df['upper'] = df['ma'] + seting['sell_mult'] * talib.STDDEV(df['Close'], timeperiod=seting['sell_len'])
df['lower'] = df['ma'] - seting['buy_mult'] * talib.STDDEV(df['Close'], timeperiod=seting['buy_len'])
c = len(df)
for i in range(c):
if i > seting['sell_len'] and i+1 < c:
if df['Close'][i] > df['lower'][i] and df['Close'][i-1] < df['lower'][i-1]: # and df['Close'][i] > df['ma2'][i]
df['side'].values[i] = 'BUY'
if df['Close'][i] < df['upper'][i] and df['Close'][i-1] > df['upper'][i-1]: # and df['Close'][i] < df['ma2'][i]
df['side'].values[i] = 'SELL'
return df
2.回测结果
BTCUSDT 15m:
Rsi MA平滑策略 策略
1.策略原理
计算Rsi值,再计算Rsi的Ma值,进行相减:Rsi-Ma(Rsi)
再把相减的值进行Ma平滑:Ma(Rsi-Ma(Rsi))
最后的结果 上穿0,开多,下穿0,开空
2. 回测结果
三个交易对组合投资,1hK线:
Boll布林带波动率策略 策略
1.策略原理
开仓条件:Boll开口扩大,中轨往上走,Rsi没有超买,Atr大于前值
平仓条件:Boll开口缩小,中轨往下走
2.回测结果
15mK线,只做多:
Boll布林带突破策略 策略
1.策略原理
一个很简单的策略
突破上轨,且Rsi没有超卖时做多,价格回归中轨时平仓
代码:
seting = {'name': 'BB', 'symbol': 'ETHUSDT', 'kTime': '15m', 'bb_len': 129, 'bb_mult': 2.259, 'rsi_len': 22, 'rsi_long_min': 15, 'rsi_long_max': 76, 'rsi_short_min': 12, 'rsi_short_max': 74, 'buy': 1, 'buyZhiying': 13.037, 'buyZhisun': 8.014, 'sell': 1, 'sellZhiying': 5.084, 'sellZhisun': 13.086}
"""
布林带策略
"""
def BB(r, df, seting):
df['ma'] = SMA(r, seting['bb_len'], 'Close')
df['mult'] = seting['bb_mult'] * talib.STDDEV(df['Close'].values, timeperiod=seting['bb_len'])
df['upper'] = df['ma'] + df['mult']
df['lower'] = df['ma'] - df['mult']
df['rsi'] = talib.RSI(df['Close'].values, timeperiod=14)
c = len(df)
for i in range(c):
if i > seting['bb_len'] and i+1 < c:
if df['Close'][i] > df['upper'][i] and df['Close'][i-1] < df['upper'][i-1] and\
df['rsi'][i] >= seting['rsi_long_min'] and df['rsi'][i] <= seting['rsi_long_max']:
df['side'].values[i] = 'BUY'
if df['Close'][i] < df['ma'][i] and df['Close'][i-1] > df['ma'][i-1]:
df['close'].values[i] = 'BUY'
if df['Close'][i] < df['lower'][i] and df['Close'][i-1] > df['lower'][i-1] and\
df['rsi'][i] >= seting['rsi_short_min'] and df['rsi'][i] <= seting['rsi_short_max']:
df['side'].values[i] = 'SELL'
if df['Close'][i] > df['ma'][i] and df['Close'][i-1] < df['ma'][i-1]:
df['close'].values[i] = 'SELL'
return df
2.回测结果
DMI策略 策略
1.策略原理
很简单的一个策略,只用了DMI一个指标
获得DMI两条线后相减,再把值做平滑处理
值 > 0 且大于上一个值 就做多
DMI指标的计算可以看我发过的ADX指标里面有
代码:
"""
DMI指标策略
"""
def DMI(r, df, seting):
a, b = DI(r, seting['dmi_len'])
df['dmi'] = a-b
if seting['ma_type'] == 'sma':
df['dmi'] = SMA(df['dmi'].values, seting['ma_len'])
if seting['ma_type'] == 'ema':
df['dmi'] = talib.EMA(df['dmi'].values, seting['ma_len'])
if seting['ma_type'] == 'rma':
df['dmi'] = RMA(df['dmi'].values, seting['ma_len'])
c = len(df)
for i in range(c):
if i > seting['ma_len'] and i+1 < c:
if df['dmi'][i] > 0 and df['dmi'][i] > df['dmi'][i-1]:
df['side'].values[i] = 'BUY'
if df['dmi'][i] < 0 and df['dmi'][i] < df['dmi'][i-1]:
df['side'].values[i] = 'SELL'
return df
2.回测结果
15mk线 2021年: