策略介绍
该策略非原创,来自github: https://github.com/Saichovsky, 本文不构成任何投资建议,仅供参考。
这是一个基于MA(移动平均线)来自动改变RSI参数的短线交易策略,自动判断牛熊。
我把测试结果放在前面,希望大家看到后如果觉得收益不是很满意,就不需要配置该策略文件了,帮大家节省时间。 该策略更适合USDT/BTC交易对。
该策略回测结果
- noop为不做交易的情况下的收益率。系统默认策略中,我选择了RSI, 是因为在以往测试中发现该策略收益更理想一些,而且本文介绍的策略是基于RSI优化的。在调整过程中,Candle Size 10minute也是测试的最佳时间间隔。
测试结果
参数:
- Candle Size: 10 minute
- 回测时间段: 2018.01.03-2018.03.03
- 数据来源: 币安
- RSI_BULL_BEAR 策略参数
*BEAR_RSI = 15
*BEAR_RSI_high = 50
*BEAR_RSI_low = 25
收益率统计
交易對 \策略 | noop | RSI | RSI_BULL_BEAR |
---|---|---|---|
USDT/BTC | -17.87931% | -25.47593% | 10.72157% |
USDT/ETH | 10.72157% | -21.74737% | -5.33235% |
BTC/ADA | - | -43.44617% | -37.35651% |
- USDT/BTC
统计结果:在该时间段 完成 41次 买入/卖出操作,使用RSI_BULL_BEAR 该策略收益大概20%左右。
- USDT/ETH
统计结果:在该时间段 完成 42次 买入/卖出操作,使用RSI_BULL_BEAR 该策略收益大概-15%左右。
- BTC/ADA
统计结果:在该时间段 完成 42次 买入/卖出操作,使用RSI_BULL_BEAR 该策略收益大概-37%左右。
策略配置
- 将如下代码文件保存在 RSI_BULL_BEAR.js 文件中,放置在路径gekko/config/strategies 下。
/*
RSI Bull and Bear
Use different RSI-strategies depending on a longer trend
(CC-BY-SA 4.0) Tommie Hansen
https://creativecommons.org/licenses/by-sa/4.0/
*/
var _ = require ('lodash');
var log = require ('../core/log.js');
// Configuration
var config = require ('../core/util.js').getConfig();
var async = require ('async');
// Let's create our own method
var method = {};
// Prepare everything our method needs
method.init = function () {
this.name = 'RSI Bull and Bear';
// Keep state about stuff
this.trend = {
direction: 'none',
duration: 0,
persisted: false,
adviced: false
};
// How many candles do we need as a base before start giving advice
this.requiredHistory = config.tradingAdvisor.historySize;
// add indicators
this.addTulipIndicator('maSlow', 'sma', { optInTimePeriod: this.settings.SMA_long });
this.addTulipIndicator('maFast', 'sma', { optInTimePeriod: this.settings.SMA_short });
this.addTulipIndicator('BULL_RSI', 'rsi', { optInTimePeriod: this.settings.BULL_RSI });
this.addTulipIndicator('BEAR_RSI', 'rsi', { optInTimePeriod: this.settings.BEAR_RSI });
}
// What happens on every new candle?
method.update = function(candle) {} // do nothing
method.log = function() {} // do nothing
method.check = function (candle)
{
if( candle.close.length < this.requiredHistory ) { return; } // TODO: still needed?!
// get all indicators
let ind = this.tulipIndicators;
let maSlow = ind.maSlow.result.result,
maFast = ind.maFast.result.result,
rsi;
// define rules
let goLong = false,
goShort = false;
// BEAR TREND
if( maFast < maSlow )
{
log.debug('BEAR Trend');
rsi = ind.BEAR_RSI.result.result;
if( rsi > this.settings.BEAR_RSI_high ) goShort = true;
if( rsi < this.settings.BEAR_RSI_low ) goLong = true;
}
// BULL TREND
else
{
log.debug('BULL Trend');
rsi = ind.BULL_RSI.result.result;
if( rsi > this.settings.BULL_RSI_high ) goShort = true;
if( rsi < this.settings.BULL_RSI_low ) goLong = true;
}
// LONG
if( goLong )
{
// new trend? (only act on new trends)
if (this.trend.direction !== 'up')
{
// reset the state for the new trend
this.trend = {
duration: 0,
persisted: false,
direction: 'up',
adviced: false
};
if( !this.trend.adviced )
{
this.trend.adviced = true;
this.advice('long');
}
else {
this.advice();
}
}
this.trend.duration ++;
log.debug ('Positive since ', this.trend.duration, 'candle (s)');
}
// SHORT
else if( goShort )
{
// new trend? (else do things)
if( this.trend.direction !== 'down' )
{
// reset state
this.trend = {
duration: 0,
persisted: false,
direction: 'down',
adviced: false
};
if( !this.trend.adviced )
{
this.trend.adviced = true;
this.advice ('short');
}
else {
this.advice();
}
}
this.trend.duration ++;
log.debug ('Negative since ', this.trend.duration, 'candle (s)');
}
// default
else
{
//log.debug('No trend');
this.advice();
}
} // method.check()
module.exports = method;
- 将如下代码文件保存为 RSI_BULL_BEAR.toml 文件,放在 gekko/config/strategies路径下
# BEAR
BEAR_RSI = 15
BEAR_RSI_high = 50
BEAR_RSI_low = 25
# BULL/BEAR is defined by the longer SMA trends
# if SHORT over LONG = BULL
# if SHORT under LONG = BEAR
- 保存完成后,在gekko路径下执行如下命令(docker方式启动)
docker-compose build
HOST=deamon.com PORT=3000 docker-compose up -d # HOST 需要修改
欢迎大家加入gekko 知识星球, 在这里你可以得到,关于gekko环境搭建问题的解答/查看群主分享的交易机器人策略/加入gekko策略交流群组,以及获取更多的关于gekko使用方面的信息。
没有任何基础的小白也可以搭建自己的交易机器人。