交易策略介绍[基础篇]

作者: 哈哈098833 | 来源:发表于2018-02-26 17:51 被阅读97次

    策略是Gekko自动化交易的核心。他们关注市场并根据技术分析指标决定做什么。

    默认策略介绍

    1. DEMA
      这个方法使用(EMA)Exponential Moving Average crossovers来预测当前市场的走向。所谓的EMA可以参考wikipedia,总的来说,可以把它理解成一个K线图的加权平均,所以自带一个参数α,数值介乎0至1。α也可用天数N来代表,这个时候(α=1/(N+1))。在gekko这个框架里面,涉及用到EMA的策略,我们通常可以看到short和long这两个参数。分别代表短期N和长期的N。
      DEMA中,使用短期平均和长期平均曲线的交错点来判断市场走向。下面的down和up阈值就分别代表了其上下的幅度

    2. MACD
      基本和DEMA相同,不同点是引入了一个叫signal的参数,这个时候会有第三条EMA曲线,是用short和long EMA的查生成的。signal是其期间长度。

    3. PRO
      基本和MACD相同,具体区别参考这里

    4. RSI
      Relative Strength Index。主要考察过卖,过买点来分析市场走向。low 和 high两个参数代表RSI数值的上值和下值,超过上值就有可能发生超买,低于下值就有可能发生超卖。

    5. CCI
      Commodity Channel Index。计算当前价和均价的相关性。也是判断超买和超卖的指标,前提是假设这些走向具有周期性。

    创建策略

    1. 策略所在代码路径 gekko/strategies/
    2. 策略模板
    //创建自己的策略
    var strat = {};
    
    // 初始化参数
    strat.init = function() {
      // your code!
    }
    
    // 针对每个柱形图要做什么操作
    strat.update = function(candle) {
      // your code!
    }
    
    // 策略运行中,debug信息
    strat.log = function() {
      // your code!
    }
    
    // 基于最新的数据计算,判断是否应该更新
    strat.check = function(candle) {
      // your code!
    }
    
    // 可选的执行代码
    // 这部分模块只会在backtest时执行,在live时,是不会执行的。
    strat.end = function() {
      // your code!
    }
    
    module.exports = strat;
    

    上述样板包含四个必须完成的功能。这些函数的执行方式如下所示:

    在启动时:运行init。
    在每个新蜡烛上:运行更新。
    如果需要创建历史记录(请参阅check()下面的功能):运行日志,运行检查。

    初始化函数

    当交易策略开始时执行。在此处初始化交易参数。

    更新功能

    该功能在每个新蜡烛上执行。刷新交易参数。

    日志功能

    日志功能在debug标志配置打开时执行(在config中设置)。随着时间的推移initupdate功能的执行,记录用于跟踪参数值。

    检查功能

    在交易策略开始之前,大多数策略需要的历史数量最少。例如,策略可能是计算前3个蜡烛的移动平均值,所以它必须至少有3个蜡烛才能启动。检查功能在所需历史时间结束后执行。默认的所需历史记录为0.您可以在init函数中像这样设置它:

    this.requiredHistory = 5; // require 5 candles before giving advice
    
    

    如果您在检查功能中发现您想向交易者提供新建议,则可以使用建议功能:

    this.advice('short');
    // or
    this.advice('long');
    
    

    蜡烛变量

    编写策略时可以使用以下蜡烛变量列表:

    • candle.close:柱形图的收盘价
    • candle.high:柱形图最高价格
    • candle.low:柱形图的最低价格
    • candle.volume:该柱形图的交易量
    • candle.trades:该柱形图的交易数量

    请记住,根据构建柱形图的时间窗口设置(1分钟,15分钟,1小时等),这些变量会给出不同的结果。

    基本策略示例

    这是一个基本的策略示例,它在达到特定价格时买入和卖出BTC / USDT。

    var strat = {};
    
    // Prepare everything our strat needs
    strat.init = function() {
      // setting buy price
      this.buyPrice = 2000;
    
      // setting sell price
      this.sellPrice = 2500;
    }
    
    // What happens on every new candle?
    strat.update = function(candle) {
      // your code!
    }
    
    // For debugging purposes.
    strat.log = function() {
      // your code!
    }
    
    // Based on the newly calculated
    // information, check if we should
    // update or not.
    strat.check = function(candle) {
        // buy when it hits buy price
        if(candle.close <= this.buyPrice) {
            this.advice("long");
            // do some output
            console.log("buying BTC @", candle.close);
            return;
        }
    
        // sell when it hits sell price
        if(candle.close >= this.sellPrice) {
            this.advice("short");
            // do some output
            console.log("selling BTC @", candle.close);
            console.log("Profit:", (candle.close-this.buyPrice));
            return;
        }
    }
    
    module.exports = strat;
    

    策略规则

    • 您可以通过在加载的配置中设置config.tradingAdvisor.strategycustom(或者您在里面命名的文件gekko/strategies)来激活自己的策略。
    • Gekko将执行update每个新蜡烛的功能。蜡烛是config.tradingAdvisor.candleSize在加载的配置中以分钟为单位配置的大小。
    • 建议将历史记录设置config.tradingAdvisor.historySize为所需的历史记录,因为Gekko将使用此属性创建一批初始蜡烛。
    • 从不依赖系统时间,因为每种方法都可以在实时市场以及回溯测试中运行。你可以看看蜡烛开始时间的candle.start属性moment
      31519641146_.pic.jpg

    相关文章

      网友评论

        本文标题:交易策略介绍[基础篇]

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