Loading ...

大道至简系列2--40行代码实现简单永续网格策略,ETH回测30天收益118.8%

Author: kb, Date: 2022-09-30 11:17:39
Tags:

分享说明

本策略主要为了方便小白们能快速简单地使用网格的策略 策略仅供个人用户使用,请勿用于商业用途 请注意,此策略非圣杯,有一定的风险,建议回测好后再使用

策略功能

1、支持多币种多空双开,可配置首仓金额、补仓间隔、尾仓止盈比例、多空双开或只做多或只做空、回归比例等 2、帐户信息显示,包括起跑时间、初始资金、实时权益、浮盈、昨日收益、今天收益、累计收益、日化、月化、年化等等 3、仓位显示,包括币种信息、持仓价、持仓数量、持仓方向、持仓价值、持仓浮盈、币种累计收益、当前步数(无仓位为0步,首仓为1步,每补一次步数+1)等

策略说明

本策略属于非常简单网格功能,可同时跑多币种,原理如下(按默认配置): 1、没有仓位时,根据回归比例开仓 2、亏损0.5%时,补仓,补仓金额固定为首仓金额 3、尾仓盈利0.75%时,平尾仓 适合比较稳定的币,如BTC、ETH、BNB、EOS、BCH等,不适合波动大的币

回测说明

注意:本次回测是针对7月份暴跌之后的行情,实盘请注意风险!

本次回测币种为ETH,只做多 因为网格属于抗单策略,仓位重时容易出现暴仓情况,建议根据行情不断调整参数

ETH回测结果(2022.7.1~2022.8.1)

爆仓风险

因网格属于抗单策略,所以策略存在一定的暴仓风险,请注意控制风险

策略推荐(免费试用一周)

作者经过两年的精心研发,目前研究出来两款长期较稳定的马丁策略: 1、趋势马丁(合约) 此策略经历近一年半的回测,适合大部分行情,包括暴跌,小牛市等,但不适合阴跌,大牛市,年化约200%,风险中,有较低的暴仓风险(若出现连续多次止损),适合长跑 2、趋势马丁网格(现货) 月化约3%~5%,此策略经历2020年至今的回测(因币安历史数据只有2020年后的),只经历过短期被套(一个月内)。由于是现货,因此无暴仓风险,同时不止损,适合长期看涨的朋友。回测加入LUNA和FTT币,其中LUNA属于连续阴跌,套了一定资金后,策略不再开仓,会有20%左右的亏损。FTT属于极端暴跌,策略并无加仓,因此亏损极少。

联系方式

电报:https://t.me/kb_mbot


/*backtest
start: 2022-07-01 00:00:00
end: 2022-08-01 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":1000}]
args: [["BASE_MONEY",50],["OPEN_SIDE",1]]
*/
$.conf.SHOW_POS = true
const openSide = ['all', 'buy', 'sell'][OPEN_SIDE]
function main() {
    const ex = $.fmz(null, exchanges[0])
    const exModel = $.ExModel.create(ex, '', '', 'm', BASE_MONEY, false, { SHOW_LOG: true }, 'USDT')
    const exCache = exModel.initModel(ex, exchanges.map(e => e.GetCurrency().split('_').join('')), ((ex, bcache, uBalance, mds, uPrices) => {
        for (let md of mds.filter(md => openSide == 'all' || md.position.side == openSide)) {
            if (md.position.positionAmt == 0) {
                const addStep = BACK_PRECENT > 0 ? Math.floor(BACK_PRECENT / OPEN_PRECENT) + 1 : 1
                md.position.toOpen = true
                md.position.openMoney = BASE_MONEY
                md.position.addStep = addStep
                md.position.initFirst = false
            } else {
                if (!md.position.initFirst) {
                    if (!md.position.stepInfo) {
                        continue
                    }
                    md.position.initFirst = true
                    for (let i=1;i<=md.position.step;++i) {
                        md.position.stepInfo['step_' + i].price = md.position.stepInfo['step_1'].price / (1 - (BACK_PRECENT - (i-1) * OPEN_PRECENT) * (md.position.side == 'buy' ? 1 : -1))
                    }
                } else if (getPrePrecent(md.position, md.position.side == 'buy') < -OPEN_PRECENT) {
                    // 达到间隔0.5%时,补仓
                    md.position.toOpen = true
                    md.position.openMoney = BASE_MONEY
                } else if (getPrePrecent(md.position, md.position.side == 'buy') > CLOSE_PRE_PRECENT) {
                    // 尾仓盈利0.75%时,平尾仓
                    md.position.toClose = true
                    md.position.justSub = true
                }
            }
            
        }
    }))
    while (true) {
        LogStatus($.getStatus())
        $.loop()
    }
}

More

阿乐 就是能改成支持okex的版本么