Welcome, Guest |
You have to register before you can post on our site.
|
Forum Statistics |
» Members: 32,831
» Latest member: bet88bike
» Forum threads: 1,541
» Forum posts: 8,187
Full Statistics
|
Online Users |
There are currently 139 online users. » 0 Member(s) | 139 Guest(s)
|
Latest Threads |
Gekko development status ...
Forum: Announcements
Last Post: kontho
03-09-2025, 04:27 AM
» Replies: 1,072
» Views: 1,153,987
|
New Gekko UI in the works
Forum: Announcements
Last Post: jenson
02-27-2025, 04:33 PM
» Replies: 189
» Views: 267,577
|
Gekko with malware spotte...
Forum: Announcements
Last Post: 2048cupcakes
02-10-2025, 05:00 AM
» Replies: 220
» Views: 211,053
|
An official Gekko service...
Forum: Announcements
Last Post: anikasaxena
02-06-2025, 09:56 AM
» Replies: 108
» Views: 211,218
|
Gekko 0.6 released
Forum: Announcements
Last Post: jimmymario
12-24-2024, 07:58 AM
» Replies: 128
» Views: 294,296
|
How to Soft Reset or Hard...
Forum: General Discussion
Last Post: lucifar
10-07-2021, 07:18 PM
» Replies: 22
» Views: 58,409
|
How to add Binance Future...
Forum: Technical Support
Last Post: Xavier32
10-07-2021, 02:20 PM
» Replies: 47
» Views: 118,842
|
Bittrex Configuration hel...
Forum: Bittrex
Last Post: yirzolusto
10-07-2021, 07:39 AM
» Replies: 6
» Views: 20,538
|
[Question] Why does gekko...
Forum: General Discussion
Last Post: cryptocurrency0
10-06-2021, 01:16 PM
» Replies: 16
» Views: 50,655
|
a couple of technical Que...
Forum: Technical Support
Last Post: mtom78632
10-06-2021, 11:08 AM
» Replies: 25
» Views: 63,120
|
|
|
Running gekko in the background with PM2 |
Posted by: SirTificate - 02-13-2018, 04:30 PM - Forum: Guides
- Replies (20)
|
 |
Hello,
I noticed that quite a lot of users run gekko in a screen process to keep it running while they are logged off. But there's a better way, use PM2!
The installation is quite simple:
Ubuntu/Debian users might want to run it with: sudo
Now that you have pm2 installed, there's just one more step to start gekko:
For CLI bots use:
Code: pm2 start gekko.js -n "yourNameHere" -- -c my_config.js
To run the UI use:
Code: pm2 start gekko.js -n "ui" -- --ui
Everything after the doubledash is passed as an argument to the gekko.js process. The parameter -n names your process. You have to give every instance a name, otherwise pm2 will refuse to start more than one instance of gekko.
To list all running processes use:
To stop a process use:
Code: pm2 stop [id|name]
for instance:
pm2 stop 0
or
pm2 stop ui
Once a process is stopped you can remove it from the list using:
Code: pm2 delete [id|name]
for instance:
pm2 delete 0
or
pm2 delete ui
PM2 stores the output of each process in your users homedir in ~/.pm2/logs. You can watch the logs with:
Code: pm2 logs
or
pm2 logs [id|name]
to watch a specific process
I hope this helps anyone who's stuck in a hell of running a bunch of screen processes in parallel.
Tips are welcome:
ETH 0x40ddba96695bc040ccbe34b4cfa3a7ae8f225583
|
|
|
Faster imports via shared CDN service |
Posted by: tommiehansen - 02-13-2018, 10:28 AM - Forum: Feature Requests
- Replies (8)
|
 |
The current way of doing imports is less ideal. For very small datasets it isn't a problem, but 1+ years worth of data
quickly becomes somewhat of a problem.
So...
1. Route all 'imports' via a cache (a cdn or other server/service such as github)
2. If server has data available for date X get that period from the cache (else get from exchange api)
3. Have option to upload the data on completion (thus making the data available for others)
--
4. Don't store the data as pure db's but rather store it as e.g. csv files so that these can get gzipped.
5. After import convert the gzipped files to db's.
So the problem...
Most exchanges got a TOS that prevent data from being shared or make it easily available.
Thus the data would need to be obfuscated so that it only works (easily) via Gekko.
|
|
|
SQLITE_CORRUPT error |
Posted by: chad.mercer - 02-12-2018, 08:40 PM - Forum: Technical Support
- Replies (3)
|
 |
Installed gekko on Bash for Windows per the instructions. UI is working fine. (Still can't get tulind to install, but that's not the purpose of this post.)
I'm doing a number of imports, and I keep getting errors like this in between "Child process has died." popups:
Quote:{ Error: SQLITE_CORRUPT: database disk image is malformed errno: 11, code: 'SQLITE_CORRUPT' }
The import process seems just a bit flaky.
Any thoughts?
|
|
|
Telegram timeout |
Posted by: gibba - 02-12-2018, 01:22 PM - Forum: Technical Support
- Replies (4)
|
 |
Hello
i'm using commandline with Telegram alerts setup in the config.js, after some hours i received this error:
Code: Unhandled rejection TimeoutError: operation timed out
at afterTimeout (~/bin/gekko/node_modules/node-telegram-bot-api/node_modules/request-promise/node_modules/bluebird/js/main/timers.js:16:15)
at Timeout.timeoutTimeout [as _onTimeout] (~/bin/gekko/node_modules/node-telegram-bot-api/node_modules/request-promise/node_modules/bluebird/js/main/timers.js:59:9)
at ontimeout (timers.js:458:11)
at tryOnTimeout (timers.js:296:5)
at Timer.listOnTimeout (timers.js:259:5)
Unhandled rejection Error: 502 <html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.12.2</center>
</body>
</html>
at ~/bin/gekko/node_modules/node-telegram-bot-api/lib/telegramPolling.js:133:17
at tryCatcher (~/bin/gekko/node_modules/node-telegram-bot-api/node_modules/request-promise/node_modules/bluebird/js/main/util.js:26:23)
at Promise._settlePromiseFromHandler (~/bin/gekko/node_modules/node-telegram-bot-api/node_modules/request-promise/node_modules/bluebird/js/main/promise.js:510:31)
at Promise._settlePromiseAt (~/bin/gekko/node_modules/node-telegram-bot-api/node_modules/request-promise/node_modules/bluebird/js/main/promise.js:584:18)
at Promise._settlePromises (~/bin/gekko/node_modules/node-telegram-bot-api/node_modules/request-promise/node_modules/bluebird/js/main/promise.js:700:14)
at Async._drainQueue (~/bin/gekko/node_modules/node-telegram-bot-api/node_modules/request-promise/node_modules/bluebird/js/main/async.js:123:16)
at Async._drainQueues (~/bin/gekko/node_modules/node-telegram-bot-api/node_modules/request-promise/node_modules/bluebird/js/main/async.js:133:10)
at Immediate.Async.drainQueues [as _onImmediate] (~/bin/gekko/node_modules/node-telegram-bot-api/node_modules/request-promise/node_modules/bluebird/js/main/async.js:15:14)
at runCallback (timers.js:756:18)
at tryOnImmediate (timers.js:717:5)
at processImmediate [as _immediateCallback] (timers.js:697:5)
Unhandled rejection Error: 502 <html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.12.2</center>
</body>
</html>
Now Telegram alerts stopped to work.
Searching on the web it seems that the timeout limit need to be increased. I don't know if in the plugin library or in the node-telegram-bot-api.
I hope this can help devs solving the problem
|
|
|
Cannot install Tulip Indicators |
Posted by: Sylvesta - 02-12-2018, 01:14 PM - Forum: Technical Discussion
- Replies (4)
|
 |
Hi All, hoping someone can help me here.
So trying to stall the tulip indicator using:
I get the following error and not too sure what it means besides it cant get the download from the server:
> tulind@0.8.9 install /home/Sylvesta/gekko/node_modules/tulind
> node-pre-gyp install --fallback-to-build
node-pre-gyp ERR! Tried to download(404): https://tulipnode.s3.amazonaws.com/tulin...x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for tulind@0.8.9 and node@8.9.4 (node-v57 ABI, glibc) (falling back to source compile with node-gyp)
make: Entering directory '/home/Sylvesta/gekko/node_modules/tulind/build'
CXX(target) Release/obj.target/tulind/tulind.o
../tulind.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE startbyindex(Nan::NAN_METHOD_ARGS_TYPE)’:
../tulind.cpp:72:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (ind->options != options->Length()) {
^
../tulind.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE callbyindex(Nan::NAN_METHOD_ARGS_TYPE)’:
../tulind.cpp:127:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (ind->inputs != inputs->Length()) {
^
../tulind.cpp:134:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (ind->options != options->Length()) {
^
CC(target) Release/obj.target/tulind/external/tiamalgamation.o
SOLINK_MODULE(target) /home/Sylvesta/gekko/node_modules/tulind/lib/binding/Release/node-v57-linux-x64/tulind.node
COPY Release/tulind.node
make: Leaving directory '/home/Sylvesta/gekko/node_modules/tulind/build'
+ tulind@0.8.9
updated 1 package in 10.175s
Anyone have an idea or a workaround for me please?
Cheers!
|
|
|
Add Kucoin support |
Posted by: Wekende - 02-12-2018, 02:04 AM - Forum: Feature Requests
- Replies (1)
|
 |
Hello everyone,
I really would love to test out this bot on the exchange i'm normally trading on, Kucoin. If somebody would take the time and effort to write it i would greatly appreciate it. As far as i know there is already an API for this exchange for node/javascript so only a few adjustments would have to be made i think.
|
|
|
Accuracy of tulip indicators? |
Posted by: tommiehansen - 02-11-2018, 10:48 PM - Forum: Technical Discussion
- No Replies
|
 |
I know the accuracy of the indicators (all indicators) has come into question before, but when i ran a really long backtest now it just seems the return performance is too good?
Dataset
Pair: USDT-ETH
Exchange: poloniex
From: 2015-08-08 06:15
To: 2017-11-07 14:37
Duration: 2 years, 3 months, 12 hours, 52 minutes
Params
Candle Size: 15 minutes
Warmup period: 10
Paper trader
All on default
Strategy params
None, since they are defined within the js (see source @ tinit())
Strategy
RSI_BULL_BEAR_ADX
Results (screen)
https://i.imgur.com/L2iPfHV.png
Over 4.4 million percent (!) vs market @ 17 950%
Note: Output chart is cut since i resized the window after completion (it doesn't auto-resize)
Results 2 (screen); 5 minute candles instead of 15
+83 573 824% (yes, over 83 million percent return) which seems implausible
Screen: https://i.imgur.com/bB33jX4.jpg
Other
Running Gekko stable branch
Strategy source
Code: /*
RSI Bull and Bear + ADX modifier
1. Use different RSI-strategies depending on a longer trend
2. But modify this slighly if shorter BULL/BEAR is detected
-
8 feb 2017
-
(CC-BY-SA 4.0) Tommie Hansen
https://creativecommons.org/licenses/by-sa/4.0/
*/
// req's
var log = require ('../core/log.js');
var config = require ('../core/util.js').getConfig();
// strategy
var strat = {
/* INIT */
init: function()
{
this.name = 'RSI Bull and Bear + ADX';
this.requiredHistory = config.tradingAdvisor.historySize;
this.resetTrend();
// debug? set to flase to disable all logging/messages/stats (improves performance)
this.debug = false;
// performance
config.backtest.batchSize = 1000; // increase performance
config.silent = true;
config.debug = false;
/* TEMP: set params */
this.settings.SMA_long = 1000; // default 1000
this.settings.SMA_short = 50; // default 50
this.settings.BULL_RSI = 10; // timeperiod
this.settings.BULL_RSI_high = 80; // default 80
this.settings.BULL_RSI_low = 60; // default 60
this.settings.BEAR_RSI = 15; // timeperiod
this.settings.BEAR_RSI_high = 50; // default 50
this.settings.BEAR_RSI_low = 20; // default 20
this.settings.ADX = 3; // timeperiod
this.settings.ADX_high = 70;
this.settings.ADX_low = 50;
// SMA
this.addTulipIndicator('maSlow', 'sma', { optInTimePeriod: this.settings.SMA_long });
this.addTulipIndicator('maFast', 'sma', { optInTimePeriod: this.settings.SMA_short });
// RSI
this.addTulipIndicator('BULL_RSI', 'rsi', { optInTimePeriod: this.settings.BULL_RSI });
this.addTulipIndicator('BEAR_RSI', 'rsi', { optInTimePeriod: this.settings.BEAR_RSI });
// ADX
this.addTulipIndicator('ADX', 'adx', { optInTimePeriod: this.settings.ADX })
this.adx = { max: 0, min: 0 };
// debug stuff
this.startTime = new Date();
this.stat = {
bear: { min: 100, max: 0 },
bull: { min: 100, max: 0 }
};
}, // init()
/* RESET TREND */
resetTrend: function()
{
var trend = {
duration: 0,
direction: 'none',
longPos: false,
};
this.trend = trend;
},
/* get low/high for backtest-period */
lowHigh: function( rsi, type )
{
let cur;
if( type == 'bear' ) {
cur = this.stat.bear;
if( rsi < cur.min ) this.stat.bear.min = rsi; // set new
if( rsi > cur.max ) this.stat.bear.max = rsi;
}
else {
cur = this.stat.bull;
if( rsi < cur.min ) this.stat.bull.min = rsi; // set new
if( rsi > cur.max ) this.stat.bull.max = rsi;
}
},
/* CHECK */
check: function()
{
// get all indicators
let ind = this.tulipIndicators,
maSlow = ind.maSlow.result.result,
maFast = ind.maFast.result.result,
rsi,
adx = ind.ADX.result.result;
if( this.debug ){
if( adx < this.adx.min ) this.adx.min = adx;
else if( adx > this.adx.max ) this.adx.max = adx;
}
// BEAR TREND
if( maFast < maSlow )
{
rsi = ind.BEAR_RSI.result.result;
let rsi_hi = this.settings.BEAR_RSI_high,
rsi_low = this.settings.BEAR_RSI_low;
// ADX trend strength?
if( adx > this.settings.ADX_high ) rsi_hi = rsi_hi + 15;
else if( adx < this.settings.ADX_low ) rsi_low = rsi_low -5;
if( rsi > rsi_hi ) this.short();
else if( rsi < rsi_low ) this.long();
if(this.debug) this.lowHigh( rsi, 'bear' );
//log.debug('BEAR-trend');
}
// BULL TREND
else
{
rsi = ind.BULL_RSI.result.result;
let rsi_hi = this.settings.BULL_RSI_high,
rsi_low = this.settings.BULL_RSI_low;
// ADX trend strength?
if( adx > this.settings.ADX_high ) rsi_hi = rsi_hi + 5;
else if( adx < this.settings.ADX_low ) rsi_low = rsi_low -5;
if( rsi > rsi_hi ) this.short();
else if( rsi < rsi_low ) this.long();
if(this.debug) this.lowHigh( rsi, 'bull' );
//log.debug('BULL-trend');
}
}, // check()
/* LONG */
long: function()
{
if( this.trend.direction !== 'up' ) // new trend? (only act on new trends)
{
this.resetTrend();
this.trend.direction = 'up';
this.advice('long');
if( this.debug ) log.info('Going long');
}
if( this.debug )
{
this.trend.duration++;
log.info('Long since', this.trend.duration, 'candle(s)');
}
},
/* SHORT */
short: function()
{
// new trend? (else do things)
if( this.trend.direction !== 'down' )
{
this.resetTrend();
this.trend.direction = 'down';
this.advice('short');
if( this.debug ) log.info('Going short');
}
if( this.debug )
{
this.trend.duration++;
log.info('Short since', this.trend.duration, 'candle(s)');
}
},
/* END backtest */
end: function()
{
let seconds = ((new Date()- this.startTime)/1000),
minutes = seconds/60,
str;
minutes < 1 ? str = seconds + ' seconds' : str = minutes + ' minutes';
log.info('====================================');
log.info('Finished in ' + str);
log.info('====================================');
// print stats and messages if debug
if(this.debug)
{
let stat = this.stat;
log.info('BEAR RSI low/high: ' + stat.bear.min + ' / ' + stat.bear.max);
log.info('BULL RSI low/high: ' + stat.bull.min + ' / ' + stat.bull.max);
log.info('ADX min/max: ' + this.adx.min + ' / ' + this.adx.max);
}
}
};
module.exports = strat;
...so what's the status on how good the indicators work?
|
|
|
|