(02-03-2018, 09:48 PM)SettusBlake Wrote: Hello! (First post for me here)
I tried your strategie, but got this error:
Code:
2018-02-03 22:44:49 (INFO): Setting up Gekko in backtest mode
2018-02-03 22:44:49 (INFO):
2018-02-03 22:44:49 (INFO): Setting up:
2018-02-03 22:44:49 (INFO): Trading Advisor
2018-02-03 22:44:49 (INFO): Calculate trading advice
2018-02-03 22:44:49 (INFO): Using the strategy: RSI_BULL_BEAR
2018-02-03 22:44:49 (WARN): TALIB indicators could not be loaded, they will be unavailable.
2018-02-03 22:44:49 (WARN): TULIP indicators could not be loaded, they will be unavailable.
xxx POST /api/backtest 500 252ms -
Error: non-error thrown: Child process has died.
at Object.onerror (/home/unix/gekko/node_modules/koa/lib/context.js:105:40)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
02-04-2018, 03:49 AM (This post was last modified: 02-04-2018, 04:20 AM by Derbeweis.)
hi,
first.. thanks a lot for this interesting strategy..
i am trying to use it, and every file is in the right folder, I also can see the strategy and the settings in the main Gekko page...
but when I click Backtesting it doesn't work...
it just loads and stops..
what am I doing wrong?
should I stop and start Gekko? or where is the problem?
thanks.
(02-04-2018, 03:49 AM)Derbeweis Wrote: hi,
first.. thanks a lot for this interesting strategy..
i am trying to use it, and every file is in the right folder, I also can see the strategy and the settings in the main Gekko page...
but when I click Backtesting it doesn't work...
it just loads and stops..
what am I doing wrong?
should I stop and start Gekko? or where is the problem?
thanks.
i solved it.. I didn't have the indicators Libraries installed yet...
hat to do:
Code:
npm install tulind
npm install talib
now it works... looks very very interesting..
thanks
Yes, should be added to the instructions.. i just assumed everyone had installed the indicators since they are pretty much needed for most custom strategies.
(02-04-2018, 07:18 AM)tommiehansen Wrote: Yes, should be added to the instructions.. i just assumed everyone had installed the indicators since they are pretty much needed for most custom strategies.
@tommiehansen again.. thanks for your effort here it looks very interesting... I am still backtesting it against different combinations with different configuration.... I may even start a real test tomorrow..
but I still have some Qs/Ideas?
1. Stoploss:
could we build a general Stoploss that will end any round that goes to a constant % of loss (for example, don't loose more than 5% or 3% per trade)
2. Exchange/Margin?
will this work with exchanges that only trade what you have without margin? like Binance for example?
for example if you trade BTC/USDT and starting with 100$ you can't short BTC, you just can buy and then sell... so will it work on that kind of trades or not?
1. Already implemented and tested. Did not improve performance but in all tests made the performance worse so it was removed.
Also implemented a 'take profit' but this was also removed since it also didn't do anything except worsen the performance.
What ended up happening was basically this:
a. Buy
b. It was a bad buy (stoploss was met) so SELL
...
c. But RSI is even lower now so BUY again = better performance
--OR--
d. Do nothing and miss the opportunity = worse performance
Often it was the D-condition that happend which is suboptimal since it just ends up resulting in a lot of missed opportunities.
It might differ if one tests with 1-minute candles though, but testing is glacially slow so don't have time to test everything.
I created a generic function for stoploss though:
Code:
/* STOPLOSS */
stoploss: function( maxDiff, cur, old )
{
let diff = ((cur/old)-1) * 100;
diff = diff.toFixed(2),
ret = false;
if( maxDiff >= diff )
{
ret = true;
let str = 'Stoploss hit! Stoploss @ ' + maxDiff + '% Current diff: ' + diff + '%';
log.debug(str);
}
return ret;
},
It just returns TRUE or FALSE if condition is met.
One would have to set a param to save 'old' (what price one bought at) as well etc.
Do also note that the strategy already has a stoploss of sorts due to the switching of trends. If BULL buys @ RSI 50 and BEAR sells at RSI 50 the BEAR-trend will basically act as a stoploss (which is part of the idea). So that thing already works as intended.
2. I do not know, this just go long and short. This is more of a genereal Gekko-question?
(02-04-2018, 03:09 PM)tommiehansen Wrote: 1. Already implemented and tested. Did not improve performance but in all tests made the performance worse so it was removed.
Also implemented a 'take profit' but this was also removed since it also didn't do anything except worsen the performance.
What ended up happening was basically this:
a. Buy
b. It was a bad buy (stoploss was met) so SELL
...
c. But RSI is even lower now so BUY again = better performance
--OR--
d. Do nothing and miss the opportunity = worse performance
Often it was the D-condition that happend which is suboptimal since it just ends up resulting in a lot of missed opportunities.
It might differ if one tests with 1-minute candles though, but testing is glacially slow so don't have time to test everything.
I created a generic function for stoploss though:
Code:
/* STOPLOSS */
stoploss: function( maxDiff, cur, old )
{
let diff = ((cur/old)-1) * 100;
diff = diff.toFixed(2),
ret = false;
if( maxDiff >= diff )
{
ret = true;
let str = 'Stoploss hit! Stoploss @ ' + maxDiff + '% Current diff: ' + diff + '%';
log.debug(str);
}
return ret;
},
It just returns TRUE or FALSE if condition is met.
One would have to set a param to save 'old' (what price one bought at) as well etc.
Do also note that the strategy already has a stoploss of sorts due to the switching of trends. If BULL buys @ RSI 50 and BEAR sells at RSI 50 the BEAR-trend will basically act as a stoploss (which is part of the idea). So that thing already works as intended.
2. I do not know, this just go long and short. This is more of a genereal Gekko-question?
ok looks interesting.. I was just thinking about minimising the Loss trades... so it could never be a loss more than 5%, but I understand what you say...
about the 2. Question... that will be very interesting... any one from Gekko interested to answer?
02-05-2018, 11:38 AM (This post was last modified: 02-05-2018, 12:30 PM by tommiehansen.)
Added backtest for NEO-USDT.
Began working with an alternative that uses MA for RSI in order to smooth out the values.
So far it really hasn't worked out that great or given any increased benefits but further testing would be needed.
A generic SMA function was written which might be useful for someone:
Code:
var strat = {
/* your init... */
init: function() {},
/* simple moving average (for any values) : returns current average for 'name' */
sma: function(name, price, points)
{
// create arr if not exist + generate array
if( !this[name] )
{
let a = 0, b = [];
for (a; a < points; a++) { b[a] = 0; }
this[name] = b;
}
let arr = this[name],
len = arr.length;
arr[len] = price; // add new to last in array
arr.shift(); // remove first (old) from array (keeping max order)
this[name] = arr; // set/save
// calculate current average
let i = 0,
total = 0;
for( i; i < len; i++ ) { total += arr[i]; }
let avg = total / len;
return avg;
},
// your check
check: function() {}
// your end
end: function() {}
}
Just supply it with name, price (candle.close etc) and points (number of points to use).
02-06-2018, 02:03 AM (This post was last modified: 02-06-2018, 03:09 AM by susitronix.)
Hi Tommie
when i was looking at the Indicators at Coinigy, with Usdt/NEO, i recognized:
if after trend reversal, in the Bull-Trend, the Buy-Volume does fall back to more normal.
then the Bull_RSI_high could never be reached.
So i added a second Qualification that only apply in the Bull-Trend by using RateOfChange (ROC) indicator.
(the last version with PPO did not work because of human error).
With Neo the result is pretty good when backtesting January.
Im new to code so please let me know if i should erase this post. Again thanks alot
The ROC indicator behaves not as expected:
ROC-level: Coinigy shows a level of >4 for the Neo Bull Trend but for the strat eny other value else than 0, creates negative Results.
ROC-length works well.
Code:
/*
RSI Bull and Bear
Use different RSI-strategies depending on a longer trend
3 feb 2017
// get all indicators
let ind = this.tulipIndicators,
maSlow = ind.maSlow.result.result,
maFast = ind.maFast.result.result,
rsi,
ROC_val = ind.ROC_val.result.result;