美文网首页
网格变种策略(一)

网格变种策略(一)

作者: 拳战攻城师 | 来源:发表于2020-09-17 08:49 被阅读0次

一、网格策略

网格策略,总结为四个字就是:高抛低吸。
例如:首次买入10万元,价格每下跌10,买入1万元,价格每上涨20,卖出5000元。
其最大的好处就是:行情越是震荡,获利空间越大。(反脆弱性)

二、生成模拟交易数据

随机生成交易数据的代码如下:

function generateSimulateData(base,num,lowest,maxDelta){
    var ret = [base];
    var price = base;
    var deltas = [];
    var total = base;
    var min = base;
    var max = base
    for(var i=1; i<num; ++i){
        var sign = Math.floor(Math.random()*10%2)>0.5?1:-1;
        var delta = Math.floor(Math.random()*maxDelta)*sign;
        price += delta;
        if( price <= lowest){
            price = lowest;
        }
        deltas.push(delta);
        ret.push(price);

        if( price > max){
            max = price;
        }
        if( price < min){
            min = price;
        }

        total += price;
    }
    var open = base;
    var close = ret[num-1];
    var avg = total/num;
    var situation = (close/open-1)*100;
    //console.log(`open=${open}, close=${close}, avg=${avg}, max=${max}, min=${min} situation=${situation.toFixed(2)}%`);
    return {s:situation.toFixed(2),prices:ret};
}

假设我们要生成100个具有如下特征的数据:开盘价为1000,价格之间的波动幅度为0-4之间,最多跌到200(会不会跌到200,不一定)可以这样调用该函数:

let simulateData = generateSimulateData(1000,100,200,5);
console.log("{s:<涨跌幅>,prices:<具体数据>}")

三、网格变种策略 v1.0

前提:

  • 资金无穷大
  • 交易以当前价格瞬间完成,不影响后续市场价格

策略做法:

  • 每秒交易一次。
  • 当前价格与上次成功交易价格相同时,不交易。
  • 当前价格大于持仓价格时,买入1。
  • 当前价格小于持仓价格时,买入2。
  • 不进行卖出操作,

策略目标:策略的涨幅大于BTC每日涨幅,跌幅小于每日跌幅。

那么策略核心代码如下:

for (let i=1; i<simulatePrices.length; ++i ){
  let curPrice = simulatePrices[i];
  if( myLastPrice==curPrice ){
    continue;
  }
  if( curPrice>=myAvgPrice ){
    myTotal += curPrice;
    myBuyTimes += 1;
  }
  else {
    myTotal += curPrice*2;
    myBuyTimes += 2;
  }
  myAvgPrice = myTotal/myBuyTimes;
}

模拟数据下收益情况

generateSimulateData(1000,86400,200,5);构造365次数据,最终的平均涨跌幅如下:
originAvg,模拟数据的一天平均涨跌幅。
myAvg,使用本策略后一天的平均收益率。

originalSituation:-17.50%, mySituation:56.31%
originalSituation:42.40%, mySituation:-13.41%
originalSituation:4.60%, mySituation:-14.07%
originalSituation:-64.30%, mySituation:88.32%
originalSituation:-3.20%, mySituation:11.48%
originalSituation:-0.40%, mySituation:-2.58%
originalSituation:11.30%, mySituation:-10.25%
originalSituation:56.80%, mySituation:-23.02%
originalSituation:-52.50%, mySituation:31.71%
originalSituation:-37.50%, mySituation:50.15%
originalSituation:26.20%, mySituation:-26.08%
originalSituation:-55.50%, mySituation:143.93%
originalSituation:56.70%, mySituation:-26.36%
....
originAvg:6.55% , myAvg:9.33%

从上述的数据来看,很明显,这个策略并没有达到我们要涨多跌少的目标。
因此,需要对策略做相应优化,那么...
下文再见!

代码

function generateSimulateData(base,num,lowest,maxDelta){
    let ret = [base];
    let price = base;
    let deltas = [];
    let total = base;
    let min = base;
    let max = base
    for(let i=1; i<num; ++i){
        let sign = Math.floor(Math.random()*10%2)>0.5?1:-1;
        let delta = Math.floor(Math.random()*maxDelta)*sign;
        price += delta;
        if( price <= lowest){
            price = lowest;
        }
        deltas.push(delta);
        ret.push(price);

        if( price > max){
            max = price;
        }
        if( price < min){
            min = price;
        }

        total += price;
    }
    let open = base;
    let close = ret[num-1];
    let avg = total/num;
    let situation = (close/open-1)*100;
    //console.log(`open=${open}, close=${close}, avg=${avg}, max=${max}, min=${min} situation=${situation.toFixed(2)}%`);
    return {s:situation.toFixed(2),prices:ret};
}

function myStrategy_1(simulatePrices){
    let myTotal = simulatePrices[0];
    let myLastPrice = simulatePrices[0];
    let myAvgPrice = myTotal;
    let myBuyTimes = 1;

    for (let i=1; i<simulatePrices.length; ++i ){
        let curPrice = simulatePrices[i];

        // console.log(`curPrice:${curPrice}, myCount = ${myBuyTimes}, myTotal = ${myTotal}, myAvgPrice = ${myAvgPrice}`);
        if( myLastPrice==curPrice ){
            continue;
        }

        if( curPrice>=myAvgPrice ){
            myTotal += curPrice;
            myBuyTimes += 1;
        }
        //
        else {
            myTotal += curPrice*2;
            myBuyTimes += 2;
        }

        
        myAvgPrice = myTotal/myBuyTimes;
    }
    // console.log(`myCount = ${myBuyTimes}, myTotal = ${myTotal}, myAvgPrice = ${myAvgPrice}`);

    let s = (simulatePrices[simulatePrices.length-1]/myAvgPrice-1)*100
    //console.log(`myCount = ${myBuyTimes}, myTotal = ${myTotal}, myAvgPrice = ${myAvgPrice}, situation = ${s.toFixed(2)}%`);
    return s.toFixed(2);
}

function main(){
    let originTotal = 0;
    let myTotal = 0;
    for( let i=0; i<365; ++i){
        let simulateData = generateSimulateData(1000,86400,200,5);
        let simulatePrices = simulateData["prices"];
        let originalSituation = Number(simulateData["s"]);
        let mySituation = Number(myStrategy_1(simulatePrices));
        console.log(`originalSituation:${originalSituation.toFixed(2)}%, mySituation:${mySituation.toFixed(2)}%`);
        originTotal += originalSituation;
        myTotal += mySituation;
    }
    originTotal /= 365;
    myTotal /= 365;
    console.log(`originAvg:${originTotal.toFixed(2)}% , myAvg:${myTotal.toFixed(2)}%`);
}
main();

相关文章

  • 网格变种策略(一)

    一、网格策略 网格策略,总结为四个字就是:高抛低吸。例如:首次买入10万元,价格每下跌10,买入1万元,价格每上涨...

  • 网格变种策略(二)

    策略目标:策略的涨幅大于BTC每日涨幅,跌幅小于每日跌幅。 上文中网格策略无法达到策略目标,稍作优化后,便有了下文...

  • 数字货币--网格变形策略之单边网格 (注释版)

    网格变形策略之单边网格 (注释版) 策略介绍 网格可以自定义方向 先买后卖:网格会从首价格开始向下挂买单, 每个...

  • 基金进阶课第十一课:网格策略 2019-12-05

    基金进阶课第十一课:网格策略 为什么要使用网格策略 怎样才能摒弃认为的主管判断,真正做到低买高卖呢? 网格策略波动...

  • 网格策略(含风控)

    在分享了套利程序后,有朋友问我使用的套利策略,其实策略很简单,属于网格策略的变更,分享给大家:网格变异策略: 发起...

  • 网格策略资金管理思路

    网格策略资金管理解决思路 1. 策略交易反思 a. 下单执行的策略与网格策略本身有本质冲突:在7月份我在H...

  • 网格策略

    适应行情,震荡市场,且购买的品种不能死。 标的:指数基金,油气,分级A 力度:在极度低估时每次增加10% 幅度:5...

  • 网格交易真的可以稳赚不赔吗?

    一、什么是网格策略交易 网格策略是指利用行情的波动在网格区间内赚取差价,获取稳定收益的交易法。投资者可通过设定价格...

  • 带底仓的网格策略

    之前写过一篇网格策略,其中提到了网格策略的一个很大缺点是,很容易卖飞。所以,假如我们在做网格时,可以始终保留一些底...

  • 套利系统进度计划

    0525..V1.0.0上线第一个网格策略 0612..V1.1.1上线第一个单边循坏网格策略,生产测试发生BUG...

网友评论

      本文标题:网格变种策略(一)

      本文链接:https://www.haomeiwen.com/subject/ifgkyktx.html