交易策略介绍[基础篇]

策略是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

你可能感兴趣的:(交易策略介绍[基础篇])