Dca策略 类马丁

2021-12-22 / 0 评论 / 1142 阅读
温馨提示:
本文最后更新于2021-12-22,已超过半年没有更新,若内容或图片失效,请留言反馈。

1.策略原理

Dca:Dollar cost averaging 美元平均成本

使用均线确定趋势
均线金叉后 买入初始 N% 量
然后确定十条网格线 (网格之间间距越来越大)
每个网格线买入点的量倍投

止盈:持仓成本固定 1.5%
止损:第十条网格价格线的 N%

于普通马丁和网格不同,带有止损不会被套和爆仓

图片alt


网格线和加仓量计算代码:

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.回测结果

图片alt

评论一下?

OωO
取消