<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Gekko Forum - Third Party Software]]></title>
		<link>https://forum.gekko.wizb.it/</link>
		<description><![CDATA[Gekko Forum - https://forum.gekko.wizb.it]]></description>
		<pubDate>Mon, 06 Apr 2026 23:06:08 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Sustainability Strategies for Software Application Development Services]]></title>
			<link>https://forum.gekko.wizb.it/thread-58924.html</link>
			<pubDate>Sat, 19 Jun 2021 08:19:56 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-58924.html</guid>
			<description><![CDATA[With the help of renowned <a href="https://www.finesols.com/software-development" target="_blank" rel="noopener" class="mycode_url"><span style="color: #3333ff;" class="mycode_color">software application development services</span></a>, create results-driven solutions for entrepreneurs, startups, and businesses. Large-scale software development businesses were chosen, and the studies looked into topics including efficiency improvement, health and safety, opportunity maximization, productivity enhancement, risk management, value creation, and waste management. The findings are given in this chapter, which combines information about the practical implications that software businesses throughout the globe might apply for improved management of sustainability efforts.]]></description>
			<content:encoded><![CDATA[With the help of renowned <a href="https://www.finesols.com/software-development" target="_blank" rel="noopener" class="mycode_url"><span style="color: #3333ff;" class="mycode_color">software application development services</span></a>, create results-driven solutions for entrepreneurs, startups, and businesses. Large-scale software development businesses were chosen, and the studies looked into topics including efficiency improvement, health and safety, opportunity maximization, productivity enhancement, risk management, value creation, and waste management. The findings are given in this chapter, which combines information about the practical implications that software businesses throughout the globe might apply for improved management of sustainability efforts.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[I Created an App that Helps You Practice Trading — TradingGYM]]></title>
			<link>https://forum.gekko.wizb.it/thread-58218.html</link>
			<pubDate>Mon, 16 Nov 2020 11:08:48 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-58218.html</guid>
			<description><![CDATA[<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">I was looking for an app that helps you practice trading, something that would replay historical candles and let me trade on them at a point in time, kind of like a trading simulator.</span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">But I couldn’t find anything that suited my needs.</span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><a href="https://www.reddit.com/r/Daytrading/comments/jqas56/would_anyone_be_interested_in_an_app_that_help" target="_blank" rel="noopener" class="mycode_url">I asked the trading community for existing solution</a>s, and there were some suggestions:</span></span></span><br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Most of them were some form of paper-trading, which is not at all what I was looking for, because it has a very slow feedback loop (make a trade, wait for hours/days).</span></span><br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Most notable was TD Ameritrade On-Demand feature, and then some smaller apps, but I wanted something that’s super easy/quick to start with and use.</span></span><br />
<br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">I wanted something that combines all the things that I’m looking for:</span></span></span></span></span></span><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Quick start in seconds — no download, install, registration, etc.</span></span></span><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Easy to use UI/UX.</span></span></span><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Minimal lookahead bias — accomplished by using random asset/time without knowing which.</span></span></span><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Make trades and fast forward time for a super quick feedback/learning loop.</span></span></span><br />
<br />
<br />
<span style="color: #ba0000;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><a href="https://tradinggym.app/" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">So, I created TradingGYM</span></a><span style="font-weight: bold;" class="mycode_b">. It’s an early version, but I wanted to get the MVP out ASAP and see if this is useful to other traders as well.</span></span></span></span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">The app is simple, and you can get started in seconds. <span style="font-weight: bold;" class="mycode_b">Just open the app, and you see a chart with a random asset at a random point in time, and you know neither one of them.</span> You can choose to reveal them in the settings if you want.</span></span></span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">The goal is to make a profit (and learn) by making trades and fast-forwarding time to see how it played out, making your feedback/learning loop many times faster. No more waiting hours/days to see how the trade played out.</span></span></span></span></span></span></span></span><br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="color: #292929;" class="mycode_color"><span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><img src="https://i.postimg.cc/zX26XYq8/REAL-2.gif" alt="[Image: REAL-2.gif]" class="mycode_img" /></span></span></span></span></span></span></span></span></div>
<br />
<span style="color: #ba0000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">The mobile version has a minimal UI, so if you are looking for more settings (like candle size), make sure to check out the app on the desktop web.</span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">For now, all the assets included are Crypto, since I already had the data, and that’s the asset class I’m most familiar with.</span></span></span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">Some will argue that you only really learn in live trading with real money, where emotions are included etc. And yes, I agree that the psychological factor is a big part of the game. </span></span></span><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">But multiple components contribute to success in trading. While some can only be trained with real stakes (psychology, emotions), some can be practiced quite well in isolation, like pattern recognition. This app focuses on the latter.</span></span></span></span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: medium;" class="mycode_size"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">Tech stack for the Devs: Node/React (in TypeScript). Postgres DB. Hosted with Vercel (previously Zeit/Now). ECharts for charting.</span></span></span></span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">You are very much welcome to <a href="https://discord.com/invite/aqRFcb2pME" target="_blank" rel="noopener" class="mycode_url">join the TradingGYM Discord Community.</a> We are in the early stages of development, so you have a high chance to impact the way this app goes with some feature requests and feedback.</span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">Super interested to see if this helps anyone improve their performance and skills.</span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: medium;" class="mycode_size"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">Thanks and good luck with your trading!</span></span></span></span></span></span>]]></description>
			<content:encoded><![CDATA[<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">I was looking for an app that helps you practice trading, something that would replay historical candles and let me trade on them at a point in time, kind of like a trading simulator.</span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">But I couldn’t find anything that suited my needs.</span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><a href="https://www.reddit.com/r/Daytrading/comments/jqas56/would_anyone_be_interested_in_an_app_that_help" target="_blank" rel="noopener" class="mycode_url">I asked the trading community for existing solution</a>s, and there were some suggestions:</span></span></span><br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Most of them were some form of paper-trading, which is not at all what I was looking for, because it has a very slow feedback loop (make a trade, wait for hours/days).</span></span><br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Most notable was TD Ameritrade On-Demand feature, and then some smaller apps, but I wanted something that’s super easy/quick to start with and use.</span></span><br />
<br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">I wanted something that combines all the things that I’m looking for:</span></span></span></span></span></span><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Quick start in seconds — no download, install, registration, etc.</span></span></span><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Easy to use UI/UX.</span></span></span><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Minimal lookahead bias — accomplished by using random asset/time without knowing which.</span></span></span><br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size">    -    Make trades and fast forward time for a super quick feedback/learning loop.</span></span></span><br />
<br />
<br />
<span style="color: #ba0000;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><a href="https://tradinggym.app/" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">So, I created TradingGYM</span></a><span style="font-weight: bold;" class="mycode_b">. It’s an early version, but I wanted to get the MVP out ASAP and see if this is useful to other traders as well.</span></span></span></span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">The app is simple, and you can get started in seconds. <span style="font-weight: bold;" class="mycode_b">Just open the app, and you see a chart with a random asset at a random point in time, and you know neither one of them.</span> You can choose to reveal them in the settings if you want.</span></span></span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">The goal is to make a profit (and learn) by making trades and fast-forwarding time to see how it played out, making your feedback/learning loop many times faster. No more waiting hours/days to see how the trade played out.</span></span></span></span></span></span></span></span><br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="color: #292929;" class="mycode_color"><span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><img src="https://i.postimg.cc/zX26XYq8/REAL-2.gif" alt="[Image: REAL-2.gif]" class="mycode_img" /></span></span></span></span></span></span></span></span></div>
<br />
<span style="color: #ba0000;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">The mobile version has a minimal UI, so if you are looking for more settings (like candle size), make sure to check out the app on the desktop web.</span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">For now, all the assets included are Crypto, since I already had the data, and that’s the asset class I’m most familiar with.</span></span></span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">Some will argue that you only really learn in live trading with real money, where emotions are included etc. And yes, I agree that the psychological factor is a big part of the game. </span></span></span><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font"><span style="font-weight: bold;" class="mycode_b">But multiple components contribute to success in trading. While some can only be trained with real stakes (psychology, emotions), some can be practiced quite well in isolation, like pattern recognition. This app focuses on the latter.</span></span></span></span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: medium;" class="mycode_size"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">Tech stack for the Devs: Node/React (in TypeScript). Postgres DB. Hosted with Vercel (previously Zeit/Now). ECharts for charting.</span></span></span></span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">You are very much welcome to <a href="https://discord.com/invite/aqRFcb2pME" target="_blank" rel="noopener" class="mycode_url">join the TradingGYM Discord Community.</a> We are in the early stages of development, so you have a high chance to impact the way this app goes with some feature requests and feedback.</span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">Super interested to see if this helps anyone improve their performance and skills.</span></span></span><br />
<br />
<span style="color: #292929;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-size: medium;" class="mycode_size"><span style="color: #292929;" class="mycode_color"><span style="font-size: large;" class="mycode_size"><span style="font-family: charter, Georgia, Cambria,;" class="mycode_font">Thanks and good luck with your trading!</span></span></span></span></span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Gekko Deployment Tool]]></title>
			<link>https://forum.gekko.wizb.it/thread-58028.html</link>
			<pubDate>Wed, 30 Oct 2019 07:44:06 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-58028.html</guid>
			<description><![CDATA[Hey guys, I am working on a one-click solution to deploy Gekko in the cloud seamlessly.<br />
<br />
Some features:<br />
- One-click deploy<br />
- Run backtests<br />
- Use your own strategies<br />
- Monitor your instances<br />
- Live trading and paper trading optimized machines<br />
<br />
Please let me know what you think!<br />
There will be a trial once it goes live.<br />
<br />
<a href="https://gekkoserver.io" target="_blank" rel="noopener" class="mycode_url">https://gekkoserver.io</a>]]></description>
			<content:encoded><![CDATA[Hey guys, I am working on a one-click solution to deploy Gekko in the cloud seamlessly.<br />
<br />
Some features:<br />
- One-click deploy<br />
- Run backtests<br />
- Use your own strategies<br />
- Monitor your instances<br />
- Live trading and paper trading optimized machines<br />
<br />
Please let me know what you think!<br />
There will be a trial once it goes live.<br />
<br />
<a href="https://gekkoserver.io" target="_blank" rel="noopener" class="mycode_url">https://gekkoserver.io</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[We are hiring a node.js dev who has experience with gekko]]></title>
			<link>https://forum.gekko.wizb.it/thread-58010.html</link>
			<pubDate>Thu, 12 Sep 2019 13:47:50 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-58010.html</guid>
			<description><![CDATA[<span style="color: #666666;" class="mycode_color">Hey guys! We are looking for a backend developer who has experience in:</span><br />
<span style="color: #666666;" class="mycode_color">-gekko </span><br />
<span style="color: #666666;" class="mycode_color">-node.js </span><br />
<span style="color: #666666;" class="mycode_color">-postgreSQL.</span><br />
<span style="color: #666666;" class="mycode_color">I am a product owner in </span><a href="https://fundplatform.io/" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0072bc;" class="mycode_color">Fund Platform</span></a><span style="color: #666666;" class="mycode_color"> - software for crypto fund managers. We have an algotrading feature so that customers can connect their exchanges and write algorithms using gekko.</span><br />
<br />
<br />
<span style="color: #666666;" class="mycode_color">Hope we can find somebody here.  I am really sorry for an off-topic post. </span><br />
<span style="color: #666666;" class="mycode_color"> My telegram is: @ceofundplatform<br />
</span><br />
Horly payments up to &#36;25/hour]]></description>
			<content:encoded><![CDATA[<span style="color: #666666;" class="mycode_color">Hey guys! We are looking for a backend developer who has experience in:</span><br />
<span style="color: #666666;" class="mycode_color">-gekko </span><br />
<span style="color: #666666;" class="mycode_color">-node.js </span><br />
<span style="color: #666666;" class="mycode_color">-postgreSQL.</span><br />
<span style="color: #666666;" class="mycode_color">I am a product owner in </span><a href="https://fundplatform.io/" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0072bc;" class="mycode_color">Fund Platform</span></a><span style="color: #666666;" class="mycode_color"> - software for crypto fund managers. We have an algotrading feature so that customers can connect their exchanges and write algorithms using gekko.</span><br />
<br />
<br />
<span style="color: #666666;" class="mycode_color">Hope we can find somebody here.  I am really sorry for an off-topic post. </span><br />
<span style="color: #666666;" class="mycode_color"> My telegram is: @ceofundplatform<br />
</span><br />
Horly payments up to &#36;25/hour]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[State of the art of the arbitrage bot]]></title>
			<link>https://forum.gekko.wizb.it/thread-57862.html</link>
			<pubDate>Thu, 14 Feb 2019 17:53:50 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57862.html</guid>
			<description><![CDATA[Hi,<br />
<br />
I discovered arbitrage buy Askmike's story about agent Smith. <br />
I'm interested in this specially because you don't need a solid knowledge about trading to be successful but I'm maybe wrong.<br />
<br />
I have few questions :<br />
- Today arbitrage bot is always possible ? I read that some exchange have important fees.<br />
- Did you try this kind of bot and what are the results ?<br />
<br />
Thank you <img src="https://forum.gekko.wizb.it/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" />]]></description>
			<content:encoded><![CDATA[Hi,<br />
<br />
I discovered arbitrage buy Askmike's story about agent Smith. <br />
I'm interested in this specially because you don't need a solid knowledge about trading to be successful but I'm maybe wrong.<br />
<br />
I have few questions :<br />
- Today arbitrage bot is always possible ? I read that some exchange have important fees.<br />
- Did you try this kind of bot and what are the results ?<br />
<br />
Thank you <img src="https://forum.gekko.wizb.it/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[PHP backtesting scripts]]></title>
			<link>https://forum.gekko.wizb.it/thread-57856.html</link>
			<pubDate>Thu, 07 Feb 2019 00:09:18 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57856.html</guid>
			<description><![CDATA[Hello guys<br />
<br />
Am working on PHP scripts for finding the best Parameters of a strat and i've shared the scripts <br />
<a href="https://github.com/deadheadtn/gekkoBacktest" target="_blank" rel="noopener" class="mycode_url">https://github.com/deadheadtn/gekkoBacktest</a><br />
feel free to improve the code i'll approve the commit if it's good <br />
i will be working on improving <br />
<br />
Cheers]]></description>
			<content:encoded><![CDATA[Hello guys<br />
<br />
Am working on PHP scripts for finding the best Parameters of a strat and i've shared the scripts <br />
<a href="https://github.com/deadheadtn/gekkoBacktest" target="_blank" rel="noopener" class="mycode_url">https://github.com/deadheadtn/gekkoBacktest</a><br />
feel free to improve the code i'll approve the commit if it's good <br />
i will be working on improving <br />
<br />
Cheers]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Which backtester to use?]]></title>
			<link>https://forum.gekko.wizb.it/thread-57819.html</link>
			<pubDate>Tue, 08 Jan 2019 12:38:25 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57819.html</guid>
			<description><![CDATA[Hi all,<br />
<br />
I would like to use a (bruteforce/) backtesting tool and I have spend the last few days setting up BacktestTool. I ran into some issues, got most of them resolved but there are still a few things that do not work as expected. Upon trying to get some help on xFFFFF's forum, I noticed the project is basically no longer active.<br />
<br />
The same seems to be the case for GekkoWarez backtesting tool...<br />
<br />
Before I embark on yet another adventure with a backtesting tool which is no longer active: could anyone advice me on which tool is currently the most popular/active/easy/reliable/etc.?<br />
<br />
I see Nickz's project, but not much action there it looks like. <br />
<br />
Tommiehansen's GAB looks quite active, but installation doesn't seem thát straightforward.<br />
<br />
I'm running Gekko v0.6.8 on Ubuntu 18.04 LTS.<br />
<br />
Looking forward to your suggestions, thanks!]]></description>
			<content:encoded><![CDATA[Hi all,<br />
<br />
I would like to use a (bruteforce/) backtesting tool and I have spend the last few days setting up BacktestTool. I ran into some issues, got most of them resolved but there are still a few things that do not work as expected. Upon trying to get some help on xFFFFF's forum, I noticed the project is basically no longer active.<br />
<br />
The same seems to be the case for GekkoWarez backtesting tool...<br />
<br />
Before I embark on yet another adventure with a backtesting tool which is no longer active: could anyone advice me on which tool is currently the most popular/active/easy/reliable/etc.?<br />
<br />
I see Nickz's project, but not much action there it looks like. <br />
<br />
Tommiehansen's GAB looks quite active, but installation doesn't seem thát straightforward.<br />
<br />
I'm running Gekko v0.6.8 on Ubuntu 18.04 LTS.<br />
<br />
Looking forward to your suggestions, thanks!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Backtest tools for Gekko: Batch / BruteForce / Import]]></title>
			<link>https://forum.gekko.wizb.it/thread-57798.html</link>
			<pubDate>Wed, 19 Dec 2018 21:08:50 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57798.html</guid>
			<description><![CDATA[<span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Backtest tools for Gekko</span></span><br />
<br />
CLI tools help to put together testing and optimizing strategies that extend the Gekko's Trading Bot capabilities – and thus you may get the most of it, and see what combinations were the best and the worst backed up by statistics.<br />
<br />
The results appear in a CSV report file. It provides key statistics describing the overall performance of the selected strategies over the chosen historical timing of the simulation.<br />
<br />
For more information, check out git repository: <a href="https://github.com/nicolay-zlobin/gekko-batcher" target="_blank" rel="noopener" class="mycode_url">https://github.com/nicolay-zlobin/gekko-batcher</a><br />
You can find sample file output <a href="https://github.com/nicolay-zlobin/gekko-batcher/blob/master/sample_results.csv" target="_blank" rel="noopener" class="mycode_url">here</a>]]></description>
			<content:encoded><![CDATA[<span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Backtest tools for Gekko</span></span><br />
<br />
CLI tools help to put together testing and optimizing strategies that extend the Gekko's Trading Bot capabilities – and thus you may get the most of it, and see what combinations were the best and the worst backed up by statistics.<br />
<br />
The results appear in a CSV report file. It provides key statistics describing the overall performance of the selected strategies over the chosen historical timing of the simulation.<br />
<br />
For more information, check out git repository: <a href="https://github.com/nicolay-zlobin/gekko-batcher" target="_blank" rel="noopener" class="mycode_url">https://github.com/nicolay-zlobin/gekko-batcher</a><br />
You can find sample file output <a href="https://github.com/nicolay-zlobin/gekko-batcher/blob/master/sample_results.csv" target="_blank" rel="noopener" class="mycode_url">here</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Gekko Dollar Cost Averaging Bot]]></title>
			<link>https://forum.gekko.wizb.it/thread-57782.html</link>
			<pubDate>Fri, 30 Nov 2018 22:22:58 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57782.html</guid>
			<description><![CDATA[All,<br />
<br />
I forked Gekko and modded it from a trading bot into a dollar cost averaging bot. <br />
<br />
<a href="https://github.com/crypto49er/gekko-DCA" target="_blank" rel="noopener" class="mycode_url">https://github.com/crypto49er/gekko-DCA</a><br />
<br />
I also made a video about it if you want to know which files I had to modify. Honestly, it was 3 files (including the config file) and adding a DCA strategy. But if you want to explore modifying your strategies with the ideas I describe below, it's worth a watch.<br />
<br />
<a href="https://youtu.be/h2MEVp9lBqQ" target="_blank" rel="noopener" class="mycode_url">https://youtu.be/h2MEVp9lBqQ</a><br />
<br />
I know dollar cost average might not be something that's interesting to members of this forum. But you can expand upon this in multiple ways (you still need to use Gekko to do the following, not Gekko-DCA):<br />
-Set a limit on how much your bot trades (ex: you have &#36;200 but only want the bot to trade &#36;100)<br />
-Layer your buys and sells (ex: Use 50% of your portfolio to buy at price A, and 50% to buy at price B, Sell 25% when the price hits your 1st target, sell the remaining 75% when it hits your 2nd target)<br />
-Run multiple bots using one exchange API keys by locking each bot to a specific amount (add code in your strat to adjust the amount based on profit/losses so the bot always have a full balance to work with)<br />
<br />
Those are just some of the ideas that I can think of off the top of my head, I'm sure there are plenty others. Love to hear what you guys think.]]></description>
			<content:encoded><![CDATA[All,<br />
<br />
I forked Gekko and modded it from a trading bot into a dollar cost averaging bot. <br />
<br />
<a href="https://github.com/crypto49er/gekko-DCA" target="_blank" rel="noopener" class="mycode_url">https://github.com/crypto49er/gekko-DCA</a><br />
<br />
I also made a video about it if you want to know which files I had to modify. Honestly, it was 3 files (including the config file) and adding a DCA strategy. But if you want to explore modifying your strategies with the ideas I describe below, it's worth a watch.<br />
<br />
<a href="https://youtu.be/h2MEVp9lBqQ" target="_blank" rel="noopener" class="mycode_url">https://youtu.be/h2MEVp9lBqQ</a><br />
<br />
I know dollar cost average might not be something that's interesting to members of this forum. But you can expand upon this in multiple ways (you still need to use Gekko to do the following, not Gekko-DCA):<br />
-Set a limit on how much your bot trades (ex: you have &#36;200 but only want the bot to trade &#36;100)<br />
-Layer your buys and sells (ex: Use 50% of your portfolio to buy at price A, and 50% to buy at price B, Sell 25% when the price hits your 1st target, sell the remaining 75% when it hits your 2nd target)<br />
-Run multiple bots using one exchange API keys by locking each bot to a specific amount (add code in your strat to adjust the amount based on profit/losses so the bot always have a full balance to work with)<br />
<br />
Those are just some of the ideas that I can think of off the top of my head, I'm sure there are plenty others. Love to hear what you guys think.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Gekko Config Generator]]></title>
			<link>https://forum.gekko.wizb.it/thread-57772.html</link>
			<pubDate>Wed, 21 Nov 2018 21:13:50 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57772.html</guid>
			<description><![CDATA[Hey Guys,<br />
<br />
I wrote a small tool to automatically generate the configs for gekko's backtest.<br />
<br />
I describe it in detail in my repo: <a href="https://github.com/danisenpai/gekko-config-generator" target="_blank" rel="noopener" class="mycode_url">https://github.com/danisenpai/gekko-config-generator</a>]]></description>
			<content:encoded><![CDATA[Hey Guys,<br />
<br />
I wrote a small tool to automatically generate the configs for gekko's backtest.<br />
<br />
I describe it in detail in my repo: <a href="https://github.com/danisenpai/gekko-config-generator" target="_blank" rel="noopener" class="mycode_url">https://github.com/danisenpai/gekko-config-generator</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Backtest & CandleSize:WarmupPeriod format]]></title>
			<link>https://forum.gekko.wizb.it/thread-57667.html</link>
			<pubDate>Thu, 20 Sep 2018 16:21:10 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57667.html</guid>
			<description><![CDATA[Hello, <br />
<br />
I have a few questions regarding parameters CandleSize and warmup <br />
<br />
1)  Is it CandleSize defined in minutes?<br />
2) How to calculate WarmupPeriod?   WarmupPeriod = CandleSize*NumbersOfCandels was using for calculating each of iteration? Measurement is minutes? <br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code># BUG - USE ONE CANDLE VALUE TEMPORARY! Put your candle values between brackets in line below. Use CandleSize:WarmupPeriod format. Seperate pair using space or newline.<br />
@warmup = qw(<br />
10:73<br />
);</code></div></div>]]></description>
			<content:encoded><![CDATA[Hello, <br />
<br />
I have a few questions regarding parameters CandleSize and warmup <br />
<br />
1)  Is it CandleSize defined in minutes?<br />
2) How to calculate WarmupPeriod?   WarmupPeriod = CandleSize*NumbersOfCandels was using for calculating each of iteration? Measurement is minutes? <br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code># BUG - USE ONE CANDLE VALUE TEMPORARY! Put your candle values between brackets in line below. Use CandleSize:WarmupPeriod format. Seperate pair using space or newline.<br />
@warmup = qw(<br />
10:73<br />
);</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[GekkoGA Parallel questions]]></title>
			<link>https://forum.gekko.wizb.it/thread-57311.html</link>
			<pubDate>Fri, 06 Jul 2018 19:24:22 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57311.html</guid>
			<description><![CDATA[Hey all,<br />
<br />
I'm attempting to use the run-ga-parallel.js script but after running it for a while I don't get any results. I can see in terminal that its changing the parameters with each run, and the epochs are stacking up, but it always returns "profit 0&#36;" at the top and this at the bottom...<br />
<br />
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>Other metrics of global maximum:<br />
Global maximum so far:<br />
false</blockquote>
<br />
As far as I can tell, no errors are being generated and the same strategy works via CLI, Web UI, and the standard GekkoGA.<br />
<br />
Also (might be related), but can someone explain the "writer" parameters? I assume it writes the results to the specified path, but I can't get this to work either.<br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>  "writer": {<br />
            "enabled": true,<br />
            "logpath": "logs/test"<br />
          },</code></div></div><br />
<br />
Thanks,<br />
<br />
PT]]></description>
			<content:encoded><![CDATA[Hey all,<br />
<br />
I'm attempting to use the run-ga-parallel.js script but after running it for a while I don't get any results. I can see in terminal that its changing the parameters with each run, and the epochs are stacking up, but it always returns "profit 0&#36;" at the top and this at the bottom...<br />
<br />
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>Other metrics of global maximum:<br />
Global maximum so far:<br />
false</blockquote>
<br />
As far as I can tell, no errors are being generated and the same strategy works via CLI, Web UI, and the standard GekkoGA.<br />
<br />
Also (might be related), but can someone explain the "writer" parameters? I assume it writes the results to the specified path, but I can't get this to work either.<br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>  "writer": {<br />
            "enabled": true,<br />
            "logpath": "logs/test"<br />
          },</code></div></div><br />
<br />
Thanks,<br />
<br />
PT]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Generate binance-markets.json]]></title>
			<link>https://forum.gekko.wizb.it/thread-57292.html</link>
			<pubDate>Wed, 27 Jun 2018 21:27:55 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57292.html</guid>
			<description><![CDATA[Hey all,<br />
<br />
  I'm sure someone out there has already done this, or perhaps Gekko will eventually acquire the ability to do this.  For now though I've whipped up this little program that will generate binance-markets.json for you.<br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>/* generate binance-markets.json for Gekko<br />
 * Written by George Shearer --- doc@drow.org<br />
 * Notes: There's not much error checking here, I just threw this together because I got tired of manually updating the file.<br />
 * I hope others can benefit from this.<br />
 *<br />
 * Thank you Mike van Rossum and all other Gekko contributors<br />
 *<br />
 * You can build this on most any modern linux platform:<br />
 *<br />
 * gcc -Wall -s -o genmarkets genmarkets.c -lcurl -ljson-c */<br />
<br />
<br />
#include &lt;stdio.h&gt;<br />
#include &lt;string.h&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &lt;json-c/json.h&gt;<br />
#include &lt;curl/curl.h&gt;<br />
<br />
#define SUCCESS 0<br />
#define FAIL    1<br />
<br />
#define OUTPUT_FILE   "binance-markets.json"<br />
#define BINANCE_URL   "https://api.binance.com/api/v1/exchangeInfo"<br />
<br />
#define MAX_MARKETS 4000<br />
#define MAX_CURRENCIES 50<br />
#define MAX_ASSETS 2000<br />
<br />
struct market<br />
{<br />
  char currency[10];<br />
  char asset[10];<br />
  double min_price;<br />
  double min_qty;<br />
  double stepsize;<br />
  double min_notional;<br />
  int currency_precision;<br />
  int asset_precision;<br />
} markets[MAX_MARKETS];<br />
<br />
struct currency<br />
{<br />
  char currency[10];<br />
} currencies[MAX_CURRENCIES];<br />
<br />
struct asset<br />
{<br />
  char asset[10];<br />
} assets[MAX_ASSETS];<br />
<br />
struct curl_fetch_st {<br />
    char *payload;<br />
    size_t size;<br />
};<br />
<br />
int total_currencies = 0;<br />
int total_assets = 0;<br />
int total_markets = 0;<br />
<br />
/* callback for curl fetch */<br />
size_t curl_callback (void *contents, size_t size, size_t nmemb, void *userp) {<br />
    size_t realsize = size * nmemb;                             /* calculate buffer size */<br />
    struct curl_fetch_st *p = (struct curl_fetch_st *) userp;   /* cast pointer to fetch struct */<br />
<br />
    /* expand buffer */<br />
    p-&gt;payload = (char *) realloc(p-&gt;payload, p-&gt;size + realsize + 1);<br />
<br />
    /* check buffer */<br />
    if (p-&gt;payload == NULL) {<br />
      /* this isn't good */<br />
      fprintf(stderr,"ERROR: Failed to expand buffer in curl_callback");<br />
      /* free buffer */<br />
      free(p-&gt;payload);<br />
      /* return */<br />
      return(-1);<br />
    }<br />
<br />
    /* copy contents to buffer */<br />
    memcpy(&amp;(p-&gt;payload[p-&gt;size]), contents, realsize);<br />
<br />
    /* set new buffer size */<br />
    p-&gt;size += realsize;<br />
<br />
    /* ensure null termination */<br />
    p-&gt;payload[p-&gt;size] = 0;<br />
<br />
    /* return size */<br />
    return(realsize);<br />
}<br />
<br />
/* fetch and return url body via curl */<br />
CURLcode curl_fetch_url(CURL *ch, const char *url, struct curl_fetch_st *fetch) {<br />
    CURLcode rcode;                   /* curl result code */<br />
<br />
    /* init payload */<br />
    fetch-&gt;payload = (char *) calloc(1, sizeof(fetch-&gt;payload));<br />
<br />
    /* check payload */<br />
    if (fetch-&gt;payload == NULL) {<br />
        /* log error */<br />
        fprintf(stderr, "ERROR: Failed to allocate payload in curl_fetch_url");<br />
        /* return error */<br />
        return CURLE_FAILED_INIT;<br />
    }<br />
<br />
    /* init size */<br />
    fetch-&gt;size = 0;<br />
<br />
    /* set url to fetch */<br />
    curl_easy_setopt(ch, CURLOPT_URL, url);<br />
<br />
    /* set calback function */<br />
    curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, curl_callback);<br />
<br />
    /* pass fetch struct pointer */<br />
    curl_easy_setopt(ch, CURLOPT_WRITEDATA, (void *) fetch);<br />
<br />
    /* set default user agent */<br />
    curl_easy_setopt(ch, CURLOPT_USERAGENT, "libcurl-agent/1.0");<br />
<br />
    /* set timeout */<br />
    curl_easy_setopt(ch, CURLOPT_TIMEOUT, 5);<br />
<br />
    /* enable location redirects */<br />
    curl_easy_setopt(ch, CURLOPT_FOLLOWLOCATION, 1);<br />
<br />
    /* set maximum allowed redirects */<br />
    curl_easy_setopt(ch, CURLOPT_MAXREDIRS, 1);<br />
<br />
    /* fetch the url */<br />
    rcode = curl_easy_perform(ch);<br />
<br />
    /* return */<br />
    return rcode;<br />
}<br />
<br />
int<br />
do_curl(const char *url, char **storage)<br />
{<br />
  CURL *curl_handle;<br />
  CURLcode curl_result;<br />
<br />
  struct curl_fetch_st curl_fetch;<br />
  struct curl_fetch_st *cf = &amp;curl_fetch;<br />
<br />
  curl_handle = curl_easy_init();<br />
  curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, 20L);<br />
  curl_result = curl_fetch_url(curl_handle, url, cf);<br />
  curl_easy_cleanup(curl_handle);<br />
<br />
  /* check return code */<br />
  if (curl_result != CURLE_OK || cf-&gt;size &lt; 1)<br />
  {<br />
    fprintf(stderr, "do_curl(): Error grabbing '%s': %s", url, curl_easy_strerror(curl_result));<br />
    return(1);<br />
  }<br />
<br />
  /* check payload */<br />
  if (cf-&gt;payload != NULL) {<br />
    *storage = cf-&gt;payload;<br />
    return(SUCCESS);<br />
  } else {<br />
    fprintf(stderr, "do_curl(): Error storing payload from '%s'&#92;n",url);<br />
    return(FAIL);<br />
  }<br />
}<br />
<br />
void<br />
add_currency(char *currency)<br />
{<br />
  int x = 0;<br />
  for(;x &lt; total_currencies &amp;&amp; x &lt; MAX_CURRENCIES;x++)<br />
    if(!strcmp(currencies[x].currency, currency))<br />
      return;<br />
  total_currencies++;<br />
  strncpy(currencies[x].currency, currency, 10);<br />
}<br />
<br />
void<br />
add_asset(char *asset)<br />
{<br />
  int x = 0;<br />
  for(;x &lt; total_assets &amp;&amp; x &lt; MAX_ASSETS;x++)<br />
    if(!strcmp(assets[x].asset, asset))<br />
      return;<br />
  total_assets++;<br />
  strncpy(assets[x].asset, asset, 10);<br />
}<br />
<br />
int<br />
get_binance_info(void)<br />
{<br />
  char *data;<br />
  json_object *bjson;<br />
  enum json_tokener_error jerr = json_tokener_success;<br />
<br />
  printf("Connecting to %s ... ",BINANCE_URL); fflush(stdout);<br />
<br />
  if(do_curl(BINANCE_URL, &amp;data))<br />
  {<br />
    puts("failed");<br />
    return(FAIL);<br />
  }<br />
  puts("success");<br />
<br />
  bjson = json_tokener_parse_verbose(data, &amp;jerr);<br />
  free(data);<br />
<br />
  if(jerr == json_tokener_success)<br />
  {<br />
    json_object *symbols;<br />
<br />
    if((symbols = json_object_object_get(bjson, "symbols"))!=NULL)<br />
    {<br />
      int x;<br />
      <br />
      total_markets = json_object_array_length(symbols);<br />
<br />
      for(x = 0; x &lt; total_markets &amp;&amp; x &lt; MAX_MARKETS; x++)<br />
      {<br />
        json_object *tmpmkt = json_object_array_get_idx(symbols, x);<br />
        json_object *filters;<br />
<br />
        strncpy(markets[x].currency, json_object_get_string(json_object_object_get(tmpmkt, "quoteAsset")), 10);<br />
        markets[x].currency_precision = atoi(json_object_get_string(json_object_object_get(tmpmkt, "quotePrecision")));<br />
        add_currency(markets[x].currency);<br />
<br />
        strncpy(markets[x].asset, json_object_get_string(json_object_object_get(tmpmkt, "baseAsset")), 10);<br />
        markets[x].asset_precision = atoi(json_object_get_string(json_object_object_get(tmpmkt, "baseAssetPrecision")));<br />
        add_asset(markets[x].asset);<br />
<br />
        if((filters = json_object_object_get(tmpmkt, "filters"))!=NULL)<br />
        {<br />
          int y, numfilters = json_object_array_length(filters);<br />
<br />
          for(y = 0; y &lt; numfilters; y++)<br />
          {<br />
            json_object *tmpfilter = json_object_array_get_idx(filters, y);<br />
            const char *filter_type = json_object_get_string(json_object_object_get(tmpfilter, "filterType"));<br />
<br />
            if(!strcmp(filter_type, "PRICE_FILTER"))<br />
              markets[x].min_price = atof(json_object_get_string(json_object_object_get(tmpfilter, "minPrice")));<br />
            else if(!strcmp(filter_type, "MIN_NOTIONAL"))<br />
              markets[x].min_notional = atof(json_object_get_string(json_object_object_get(tmpfilter, "minNotional")));<br />
            else if(!strcmp(filter_type, "LOT_SIZE"))<br />
            {<br />
              markets[x].min_qty = atof(json_object_get_string(json_object_object_get(tmpfilter, "minQty")));<br />
              markets[x].stepsize = atof(json_object_get_string(json_object_object_get(tmpfilter, "stepSize")));<br />
            }<br />
          }<br />
        }<br />
      }<br />
      printf("Loaded %d markets&#92;n",total_markets);<br />
    }<br />
  }<br />
  json_object_put(bjson);<br />
  return(SUCCESS);<br />
}<br />
<br />
void<br />
gen_gekko_markets(const char *output)<br />
{<br />
  int x = 0;<br />
  FILE *fp = fopen(OUTPUT_FILE, "w");<br />
<br />
  fprintf(fp, "{&#92;n  &#92;"currencies&#92;": [");<br />
  for(; x &lt; total_currencies; x++)<br />
  {<br />
    if(x)<br />
      fprintf(fp, ",");<br />
    fprintf(fp, " &#92;"%s&#92;"", currencies[x].currency);<br />
  }<br />
<br />
  fprintf(fp, " ],&#92;n  &#92;"assets&#92;": [");<br />
  for(x = 0; x &lt; total_assets; x++)<br />
  {<br />
    if(x)<br />
      fprintf(fp, ",");<br />
    fprintf(fp, " &#92;"%s&#92;"", assets[x].asset);<br />
  }<br />
  fprintf(fp, " ],&#92;n  &#92;"markets&#92;": [&#92;n");<br />
<br />
  for(x = 0; x &lt; total_markets; x++)<br />
  {<br />
    char fmt[500], temp[100];<br />
<br />
    if(x)<br />
      fprintf(fp, ",&#92;n");<br />
<br />
    strcpy(fmt, "    {&#92;n      &#92;"pair&#92;": [&#92;n        &#92;"%s&#92;",&#92;n        &#92;"%s&#92;"&#92;n      ],&#92;n      &#92;"minimalOrder&#92;": {&#92;n        &#92;"amount&#92;": %f,&#92;n        &#92;"price&#92;": %");<br />
    sprintf(temp, "0.%df", markets[x].asset_precision);<br />
    strcat(fmt, temp);<br />
    strcat(fmt, ",&#92;n        &#92;"order&#92;": %f&#92;n      }&#92;n    }");<br />
    fprintf(fp, fmt, markets[x].currency, markets[x].asset, markets[x].min_qty, markets[x].min_price, markets[x].min_notional);<br />
  }<br />
<br />
  fprintf(fp, "&#92;n  ]&#92;n}&#92;n");<br />
  fclose(fp);<br />
}<br />
<br />
int<br />
main(int argc, char *argv[])<br />
{<br />
  memset((void *)markets, 0, sizeof(struct market) * MAX_MARKETS);<br />
  memset((void *)currencies, 0, sizeof(struct currency) * MAX_CURRENCIES);<br />
  memset((void *)assets, 0, sizeof(struct asset) * MAX_ASSETS);<br />
<br />
  if(get_binance_info() == SUCCESS)<br />
  {<br />
    printf("Generating gekko file &#92;"%s&#92;" ...", OUTPUT_FILE); fflush(stdout);<br />
    gen_gekko_markets(OUTPUT_FILE);<br />
    puts("done");<br />
    exit(SUCCESS);<br />
  }<br />
  exit(FAIL);<br />
}</code></div></div>]]></description>
			<content:encoded><![CDATA[Hey all,<br />
<br />
  I'm sure someone out there has already done this, or perhaps Gekko will eventually acquire the ability to do this.  For now though I've whipped up this little program that will generate binance-markets.json for you.<br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>/* generate binance-markets.json for Gekko<br />
 * Written by George Shearer --- doc@drow.org<br />
 * Notes: There's not much error checking here, I just threw this together because I got tired of manually updating the file.<br />
 * I hope others can benefit from this.<br />
 *<br />
 * Thank you Mike van Rossum and all other Gekko contributors<br />
 *<br />
 * You can build this on most any modern linux platform:<br />
 *<br />
 * gcc -Wall -s -o genmarkets genmarkets.c -lcurl -ljson-c */<br />
<br />
<br />
#include &lt;stdio.h&gt;<br />
#include &lt;string.h&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &lt;json-c/json.h&gt;<br />
#include &lt;curl/curl.h&gt;<br />
<br />
#define SUCCESS 0<br />
#define FAIL    1<br />
<br />
#define OUTPUT_FILE   "binance-markets.json"<br />
#define BINANCE_URL   "https://api.binance.com/api/v1/exchangeInfo"<br />
<br />
#define MAX_MARKETS 4000<br />
#define MAX_CURRENCIES 50<br />
#define MAX_ASSETS 2000<br />
<br />
struct market<br />
{<br />
  char currency[10];<br />
  char asset[10];<br />
  double min_price;<br />
  double min_qty;<br />
  double stepsize;<br />
  double min_notional;<br />
  int currency_precision;<br />
  int asset_precision;<br />
} markets[MAX_MARKETS];<br />
<br />
struct currency<br />
{<br />
  char currency[10];<br />
} currencies[MAX_CURRENCIES];<br />
<br />
struct asset<br />
{<br />
  char asset[10];<br />
} assets[MAX_ASSETS];<br />
<br />
struct curl_fetch_st {<br />
    char *payload;<br />
    size_t size;<br />
};<br />
<br />
int total_currencies = 0;<br />
int total_assets = 0;<br />
int total_markets = 0;<br />
<br />
/* callback for curl fetch */<br />
size_t curl_callback (void *contents, size_t size, size_t nmemb, void *userp) {<br />
    size_t realsize = size * nmemb;                             /* calculate buffer size */<br />
    struct curl_fetch_st *p = (struct curl_fetch_st *) userp;   /* cast pointer to fetch struct */<br />
<br />
    /* expand buffer */<br />
    p-&gt;payload = (char *) realloc(p-&gt;payload, p-&gt;size + realsize + 1);<br />
<br />
    /* check buffer */<br />
    if (p-&gt;payload == NULL) {<br />
      /* this isn't good */<br />
      fprintf(stderr,"ERROR: Failed to expand buffer in curl_callback");<br />
      /* free buffer */<br />
      free(p-&gt;payload);<br />
      /* return */<br />
      return(-1);<br />
    }<br />
<br />
    /* copy contents to buffer */<br />
    memcpy(&amp;(p-&gt;payload[p-&gt;size]), contents, realsize);<br />
<br />
    /* set new buffer size */<br />
    p-&gt;size += realsize;<br />
<br />
    /* ensure null termination */<br />
    p-&gt;payload[p-&gt;size] = 0;<br />
<br />
    /* return size */<br />
    return(realsize);<br />
}<br />
<br />
/* fetch and return url body via curl */<br />
CURLcode curl_fetch_url(CURL *ch, const char *url, struct curl_fetch_st *fetch) {<br />
    CURLcode rcode;                   /* curl result code */<br />
<br />
    /* init payload */<br />
    fetch-&gt;payload = (char *) calloc(1, sizeof(fetch-&gt;payload));<br />
<br />
    /* check payload */<br />
    if (fetch-&gt;payload == NULL) {<br />
        /* log error */<br />
        fprintf(stderr, "ERROR: Failed to allocate payload in curl_fetch_url");<br />
        /* return error */<br />
        return CURLE_FAILED_INIT;<br />
    }<br />
<br />
    /* init size */<br />
    fetch-&gt;size = 0;<br />
<br />
    /* set url to fetch */<br />
    curl_easy_setopt(ch, CURLOPT_URL, url);<br />
<br />
    /* set calback function */<br />
    curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, curl_callback);<br />
<br />
    /* pass fetch struct pointer */<br />
    curl_easy_setopt(ch, CURLOPT_WRITEDATA, (void *) fetch);<br />
<br />
    /* set default user agent */<br />
    curl_easy_setopt(ch, CURLOPT_USERAGENT, "libcurl-agent/1.0");<br />
<br />
    /* set timeout */<br />
    curl_easy_setopt(ch, CURLOPT_TIMEOUT, 5);<br />
<br />
    /* enable location redirects */<br />
    curl_easy_setopt(ch, CURLOPT_FOLLOWLOCATION, 1);<br />
<br />
    /* set maximum allowed redirects */<br />
    curl_easy_setopt(ch, CURLOPT_MAXREDIRS, 1);<br />
<br />
    /* fetch the url */<br />
    rcode = curl_easy_perform(ch);<br />
<br />
    /* return */<br />
    return rcode;<br />
}<br />
<br />
int<br />
do_curl(const char *url, char **storage)<br />
{<br />
  CURL *curl_handle;<br />
  CURLcode curl_result;<br />
<br />
  struct curl_fetch_st curl_fetch;<br />
  struct curl_fetch_st *cf = &amp;curl_fetch;<br />
<br />
  curl_handle = curl_easy_init();<br />
  curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, 20L);<br />
  curl_result = curl_fetch_url(curl_handle, url, cf);<br />
  curl_easy_cleanup(curl_handle);<br />
<br />
  /* check return code */<br />
  if (curl_result != CURLE_OK || cf-&gt;size &lt; 1)<br />
  {<br />
    fprintf(stderr, "do_curl(): Error grabbing '%s': %s", url, curl_easy_strerror(curl_result));<br />
    return(1);<br />
  }<br />
<br />
  /* check payload */<br />
  if (cf-&gt;payload != NULL) {<br />
    *storage = cf-&gt;payload;<br />
    return(SUCCESS);<br />
  } else {<br />
    fprintf(stderr, "do_curl(): Error storing payload from '%s'&#92;n",url);<br />
    return(FAIL);<br />
  }<br />
}<br />
<br />
void<br />
add_currency(char *currency)<br />
{<br />
  int x = 0;<br />
  for(;x &lt; total_currencies &amp;&amp; x &lt; MAX_CURRENCIES;x++)<br />
    if(!strcmp(currencies[x].currency, currency))<br />
      return;<br />
  total_currencies++;<br />
  strncpy(currencies[x].currency, currency, 10);<br />
}<br />
<br />
void<br />
add_asset(char *asset)<br />
{<br />
  int x = 0;<br />
  for(;x &lt; total_assets &amp;&amp; x &lt; MAX_ASSETS;x++)<br />
    if(!strcmp(assets[x].asset, asset))<br />
      return;<br />
  total_assets++;<br />
  strncpy(assets[x].asset, asset, 10);<br />
}<br />
<br />
int<br />
get_binance_info(void)<br />
{<br />
  char *data;<br />
  json_object *bjson;<br />
  enum json_tokener_error jerr = json_tokener_success;<br />
<br />
  printf("Connecting to %s ... ",BINANCE_URL); fflush(stdout);<br />
<br />
  if(do_curl(BINANCE_URL, &amp;data))<br />
  {<br />
    puts("failed");<br />
    return(FAIL);<br />
  }<br />
  puts("success");<br />
<br />
  bjson = json_tokener_parse_verbose(data, &amp;jerr);<br />
  free(data);<br />
<br />
  if(jerr == json_tokener_success)<br />
  {<br />
    json_object *symbols;<br />
<br />
    if((symbols = json_object_object_get(bjson, "symbols"))!=NULL)<br />
    {<br />
      int x;<br />
      <br />
      total_markets = json_object_array_length(symbols);<br />
<br />
      for(x = 0; x &lt; total_markets &amp;&amp; x &lt; MAX_MARKETS; x++)<br />
      {<br />
        json_object *tmpmkt = json_object_array_get_idx(symbols, x);<br />
        json_object *filters;<br />
<br />
        strncpy(markets[x].currency, json_object_get_string(json_object_object_get(tmpmkt, "quoteAsset")), 10);<br />
        markets[x].currency_precision = atoi(json_object_get_string(json_object_object_get(tmpmkt, "quotePrecision")));<br />
        add_currency(markets[x].currency);<br />
<br />
        strncpy(markets[x].asset, json_object_get_string(json_object_object_get(tmpmkt, "baseAsset")), 10);<br />
        markets[x].asset_precision = atoi(json_object_get_string(json_object_object_get(tmpmkt, "baseAssetPrecision")));<br />
        add_asset(markets[x].asset);<br />
<br />
        if((filters = json_object_object_get(tmpmkt, "filters"))!=NULL)<br />
        {<br />
          int y, numfilters = json_object_array_length(filters);<br />
<br />
          for(y = 0; y &lt; numfilters; y++)<br />
          {<br />
            json_object *tmpfilter = json_object_array_get_idx(filters, y);<br />
            const char *filter_type = json_object_get_string(json_object_object_get(tmpfilter, "filterType"));<br />
<br />
            if(!strcmp(filter_type, "PRICE_FILTER"))<br />
              markets[x].min_price = atof(json_object_get_string(json_object_object_get(tmpfilter, "minPrice")));<br />
            else if(!strcmp(filter_type, "MIN_NOTIONAL"))<br />
              markets[x].min_notional = atof(json_object_get_string(json_object_object_get(tmpfilter, "minNotional")));<br />
            else if(!strcmp(filter_type, "LOT_SIZE"))<br />
            {<br />
              markets[x].min_qty = atof(json_object_get_string(json_object_object_get(tmpfilter, "minQty")));<br />
              markets[x].stepsize = atof(json_object_get_string(json_object_object_get(tmpfilter, "stepSize")));<br />
            }<br />
          }<br />
        }<br />
      }<br />
      printf("Loaded %d markets&#92;n",total_markets);<br />
    }<br />
  }<br />
  json_object_put(bjson);<br />
  return(SUCCESS);<br />
}<br />
<br />
void<br />
gen_gekko_markets(const char *output)<br />
{<br />
  int x = 0;<br />
  FILE *fp = fopen(OUTPUT_FILE, "w");<br />
<br />
  fprintf(fp, "{&#92;n  &#92;"currencies&#92;": [");<br />
  for(; x &lt; total_currencies; x++)<br />
  {<br />
    if(x)<br />
      fprintf(fp, ",");<br />
    fprintf(fp, " &#92;"%s&#92;"", currencies[x].currency);<br />
  }<br />
<br />
  fprintf(fp, " ],&#92;n  &#92;"assets&#92;": [");<br />
  for(x = 0; x &lt; total_assets; x++)<br />
  {<br />
    if(x)<br />
      fprintf(fp, ",");<br />
    fprintf(fp, " &#92;"%s&#92;"", assets[x].asset);<br />
  }<br />
  fprintf(fp, " ],&#92;n  &#92;"markets&#92;": [&#92;n");<br />
<br />
  for(x = 0; x &lt; total_markets; x++)<br />
  {<br />
    char fmt[500], temp[100];<br />
<br />
    if(x)<br />
      fprintf(fp, ",&#92;n");<br />
<br />
    strcpy(fmt, "    {&#92;n      &#92;"pair&#92;": [&#92;n        &#92;"%s&#92;",&#92;n        &#92;"%s&#92;"&#92;n      ],&#92;n      &#92;"minimalOrder&#92;": {&#92;n        &#92;"amount&#92;": %f,&#92;n        &#92;"price&#92;": %");<br />
    sprintf(temp, "0.%df", markets[x].asset_precision);<br />
    strcat(fmt, temp);<br />
    strcat(fmt, ",&#92;n        &#92;"order&#92;": %f&#92;n      }&#92;n    }");<br />
    fprintf(fp, fmt, markets[x].currency, markets[x].asset, markets[x].min_qty, markets[x].min_price, markets[x].min_notional);<br />
  }<br />
<br />
  fprintf(fp, "&#92;n  ]&#92;n}&#92;n");<br />
  fclose(fp);<br />
}<br />
<br />
int<br />
main(int argc, char *argv[])<br />
{<br />
  memset((void *)markets, 0, sizeof(struct market) * MAX_MARKETS);<br />
  memset((void *)currencies, 0, sizeof(struct currency) * MAX_CURRENCIES);<br />
  memset((void *)assets, 0, sizeof(struct asset) * MAX_ASSETS);<br />
<br />
  if(get_binance_info() == SUCCESS)<br />
  {<br />
    printf("Generating gekko file &#92;"%s&#92;" ...", OUTPUT_FILE); fflush(stdout);<br />
    gen_gekko_markets(OUTPUT_FILE);<br />
    puts("done");<br />
    exit(SUCCESS);<br />
  }<br />
  exit(FAIL);<br />
}</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Google Form Gekko Pluggin]]></title>
			<link>https://forum.gekko.wizb.it/thread-57200.html</link>
			<pubDate>Tue, 22 May 2018 14:51:27 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57200.html</guid>
			<description><![CDATA[Is anyone using XFFFs Google pluggin. I am stuck at the part where you link them together.<br />
<br />
<a href="https://github.com/xFFFFF/google-forms-gekko-plugin.git" target="_blank" rel="noopener" class="mycode_url">https://github.com/xFFFFF/google-forms-gekko-plugin.git</a><br />
<br />
[url=https://github.com/xFFFFF/google-forms-gekko-plugin#link-the-two][/url]Link the two!<ul class="mycode_list">
</li>
<li>Go back to the google form edit screen. In the three dot menu, select Get Pre-filled link.<br />
</li>
<li>A new form will open. Fill in each field with the name of the question above it so we can identify it in the next steps.<br />
</li>
<li>Click Get Link, then Copy link in the bottom left popup.<br />
</li>
<li>Paste this link as a comment in your CLI settings file. Copy the form ID and each question ID into the gforms.config object in your command line config file. It should look something like this:<br />
</li></ul>
]]></description>
			<content:encoded><![CDATA[Is anyone using XFFFs Google pluggin. I am stuck at the part where you link them together.<br />
<br />
<a href="https://github.com/xFFFFF/google-forms-gekko-plugin.git" target="_blank" rel="noopener" class="mycode_url">https://github.com/xFFFFF/google-forms-gekko-plugin.git</a><br />
<br />
[url=https://github.com/xFFFFF/google-forms-gekko-plugin#link-the-two][/url]Link the two!<ul class="mycode_list">
</li>
<li>Go back to the google form edit screen. In the three dot menu, select Get Pre-filled link.<br />
</li>
<li>A new form will open. Fill in each field with the name of the question above it so we can identify it in the next steps.<br />
</li>
<li>Click Get Link, then Copy link in the bottom left popup.<br />
</li>
<li>Paste this link as a comment in your CLI settings file. Copy the form ID and each question ID into the gforms.config object in your command line config file. It should look something like this:<br />
</li></ul>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[multi-gekko, trade multi assets with gekko]]></title>
			<link>https://forum.gekko.wizb.it/thread-57163.html</link>
			<pubDate>Mon, 14 May 2018 18:20:39 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57163.html</guid>
			<description><![CDATA[Just published multi-gekko. Generate multiple config files and monitor multiple currencies and exchanges using gekko.<br />
<br />
<a href="https://github.com/bettimms/multi-gekko" target="_blank" rel="noopener" class="mycode_url">https://github.com/bettimms/multi-gekko</a>]]></description>
			<content:encoded><![CDATA[Just published multi-gekko. Generate multiple config files and monitor multiple currencies and exchanges using gekko.<br />
<br />
<a href="https://github.com/bettimms/multi-gekko" target="_blank" rel="noopener" class="mycode_url">https://github.com/bettimms/multi-gekko</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Telegram bot - auto notification]]></title>
			<link>https://forum.gekko.wizb.it/thread-57147.html</link>
			<pubDate>Fri, 11 May 2018 11:45:53 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57147.html</guid>
			<description><![CDATA[Hey guys,<br />
<br />
I just want to find out, if there is a way that bot will send me info on his own.<br />
<br />
I mean, now he only reply on my command I send (etc /price, /advice ,.. )<br />
<br />
I want to configure him to watch some price, and if the price appears he will notifimy. Is that possible?? Cannot find the way to do it. <br />
<br />
PLEEEAAASEE <img src="https://forum.gekko.wizb.it/images/smilies/huh.png" alt="Huh" title="Huh" class="smilie smilie_17" /><br />
<br />
Detail: I found the way how to include those prices into config, and can get reply from bot if the price is or not. but want to make bot send me message when that happens, don't want to ask him all day <img src="https://forum.gekko.wizb.it/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /> Hope you got me guys..]]></description>
			<content:encoded><![CDATA[Hey guys,<br />
<br />
I just want to find out, if there is a way that bot will send me info on his own.<br />
<br />
I mean, now he only reply on my command I send (etc /price, /advice ,.. )<br />
<br />
I want to configure him to watch some price, and if the price appears he will notifimy. Is that possible?? Cannot find the way to do it. <br />
<br />
PLEEEAAASEE <img src="https://forum.gekko.wizb.it/images/smilies/huh.png" alt="Huh" title="Huh" class="smilie smilie_17" /><br />
<br />
Detail: I found the way how to include those prices into config, and can get reply from bot if the price is or not. but want to make bot send me message when that happens, don't want to ask him all day <img src="https://forum.gekko.wizb.it/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /> Hope you got me guys..]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[My personal helper-script]]></title>
			<link>https://forum.gekko.wizb.it/thread-57119.html</link>
			<pubDate>Tue, 08 May 2018 04:30:22 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57119.html</guid>
			<description><![CDATA[Hey all,<br />
<br />
I made this for myself, because I found I had done these steps all manually so many times that it just made sense to automate them; I took an old script I had written that just copies in my preferred .vimrc and .bashrc and installs  syntax-highlighting stuff for vim, and I added a section that installs node, npm, gekko and gekkoga and all the stuff needed for them and pulls in some strategies and extra indicators and stuff from other people in the commnuity.<br />
<br />
If you use debian, it may be helpful for you. <br />
<br />
It is, however, I understand, not the right way to set it up, because once it is set up, it is not protected by password. I never could figure out how to set up nginx to make it password-protected. Maybe one of y'all can help with that. I'd love it if this script automated that too. I'd really love just to hear input, or maybe even get my first pull request! <img src="https://forum.gekko.wizb.it/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
<a href="https://github.com/151henry151/workspace-clone-utility" target="_blank" rel="noopener" class="mycode_url">https://github.com/151henry151/workspace-clone-utility</a>]]></description>
			<content:encoded><![CDATA[Hey all,<br />
<br />
I made this for myself, because I found I had done these steps all manually so many times that it just made sense to automate them; I took an old script I had written that just copies in my preferred .vimrc and .bashrc and installs  syntax-highlighting stuff for vim, and I added a section that installs node, npm, gekko and gekkoga and all the stuff needed for them and pulls in some strategies and extra indicators and stuff from other people in the commnuity.<br />
<br />
If you use debian, it may be helpful for you. <br />
<br />
It is, however, I understand, not the right way to set it up, because once it is set up, it is not protected by password. I never could figure out how to set up nginx to make it password-protected. Maybe one of y'all can help with that. I'd love it if this script automated that too. I'd really love just to hear input, or maybe even get my first pull request! <img src="https://forum.gekko.wizb.it/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<br />
<a href="https://github.com/151henry151/workspace-clone-utility" target="_blank" rel="noopener" class="mycode_url">https://github.com/151henry151/workspace-clone-utility</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Gab0's Japonicus error]]></title>
			<link>https://forum.gekko.wizb.it/thread-57118.html</link>
			<pubDate>Mon, 07 May 2018 23:29:37 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57118.html</guid>
			<description><![CDATA[Hi all,<br />
<br />
Just wondering if anyone have success with Gab0's Japonicus genetic algorithmic backtest tool. I'm getting this error message:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>crypto49er@crypto49er:~/gekko&#36; cd ..<br />
crypto49er@crypto49er:~&#36; cd japonicus<br />
crypto49er@crypto49er:~/japonicus&#36; ls<br />
chart.py                  japonicus_options.py  sqlite_scanner.py<br />
chart_web.py              japonicus.py          statistics.py<br />
configIndicators.py       LICENSE               stratego<br />
configStrategies.py       logs                  strategy_parameters<br />
Dockerfile                promoterz             TOMLutils.py<br />
evaluation                __pycache__           utilities<br />
evolution_bayes.py        README.md             version.py<br />
evolution_generations.py  requirements.txt      web.py<br />
gekko_evolution.yml       resultInterface.py<br />
interface.py              Settings.py<br />
crypto49er@crypto49er:~/japonicus&#36; python3.6 japonicus.py -gcw --strat PPO<br />
WEBSERVER MODE<br />
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)<br />
&nbsp;&nbsp;&nbsp;&nbsp;GEKKO<br />
        ██╗ █████╗ ██████╗  ██████╗ ███╗   ██╗██╗ ██████╗██╗   ██╗███████╗<br />
        ██║██╔══██╗██╔══██╗██╔═══██╗████╗  ██║██║██╔════╝██║   ██║██╔════╝<br />
        ██║███████║██████╔╝██║   ██║██╔██╗ ██║██║██║     ██║   ██║███████╗<br />
   ██   ██║██╔══██║██╔═══╝ ██║   ██║██║╚██╗██║██║██║     ██║   ██║╚════██║<br />
   ╚█████╔╝██║  ██║██║     ╚██████╔╝██║ ╚████║██║╚██████╗╚██████╔╝███████║<br />
    ╚════╝ ╚═╝  ╚═╝╚═╝      ╚═════╝ ╚═╝  ╚═══╝╚═╝ ╚═════╝ ╚═════╝ ╚══════╝<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v0.58<br />
<br />
The profits reported here depends on backtest interpreter function; <br />
&nbsp;&nbsp;&nbsp;&nbsp;interpreter v3: <br />
if &lt;backtest profit&gt; &gt; 0: &lt;shown profit&gt; = &lt;backtest profit&gt; - &lt;market profit&gt; <br />
else &lt;shown profit&gt; = &lt;backtest profit&gt; <br />
japonicus.py -gcw --strat PPO<br />
Evolving PPO strategy;<br />
<br />
evaluated parameters ranges:<br />
short                         (6, 18)<br />
<br />
long                          (13, 39)<br />
<br />
signal                        (1, 18)<br />
<br />
thresholds.down               (-0.5, 0.0)<br />
<br />
thresholds.up                 (0.0, 0.5)<br />
<br />
thresholds.persistence        (2, 10)<br />
<br />
<br />
<br />
evolution candlestick dataset 2014-12-01 05:33:00 to 2018-05-03 07:11:00<br />
BTC/USD @gdax<br />
<br />
<br />
<br />
evaluation candlestick dataset 2016-05-18 00:14:00 to 2018-05-03 07:11:00<br />
ETH/USD @gdax<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;======  EPOCH 0/800  ======<br />
Locale1<br />
first unevaluated: 30<br />
0 individues removed due to equality<br />
[30]<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'down': -0.1515151515151515, 'persistence': 5.636363636363637, 'up': 0.36363636363636365}, 'long': 29.939393939393938, 'signal': 5.378787878787879, 'short': 13.818181818181818}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'up': 0.16666666666666666, 'persistence': 4.181818181818182, 'down': -0.26515151515151514}, 'long': 27.575757575757578, 'signal': 3.3181818181818183, 'short': 15.090909090909092}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'down': -0.3181818181818182, 'persistence': 8.424242424242424, 'up': 0.4015151515151515}, 'short': 11.454545454545453, 'long': 20.09090909090909, 'signal': 10.015151515151516}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'down': -0.17424242424242425, 'up': 0.21212121212121213, 'persistence': 6.242424242424242}, 'signal': 17.484848484848484, 'long': 16.939393939393938, 'short': 10.727272727272727}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'persistence': 7.090909090909091, 'up': 0.2878787878787879, 'down': -0.25}, 'signal': 6.409090909090909, 'long': 25.21212121212121, 'short': 16.363636363636363}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'persistence': 4.424242424242424, 'down': -0.32575757575757575, 'up': 0.3712121212121212}, 'long': 35.06060606060606, 'short': 15.454545454545455, 'signal': 8.984848484848484}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'signal': 15.424242424242424, 'long': 23.242424242424242, 'short': 13.272727272727273, 'thresholds': {'up': 0.4015151515151515, 'persistence': 7.212121212121212, 'down': -0.38636363636363635}}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'signal': 14.393939393939394, 'long': 27.96969696969697, 'thresholds': {'up': 0.16666666666666666, 'down': -0.3939393939393939, 'persistence': 5.03030303030303}, 'short': 15.818181818181818}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'signal': 4.090909090909091, 'long': 33.09090909090909, 'thresholds': {'persistence': 2.7272727272727275, 'up': 0.45454545454545453, 'down': -0.36363636363636365}, 'short': 8.727272727272727}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'persistence': 6.0, 'down': -0.26515151515151514, 'up': 0.2878787878787879}, 'short': 8.90909090909091, 'signal': 6.409090909090909, 'long': 28.757575757575758}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'long': 27.575757575757578, 'thresholds': {'up': 0.06060606060606061, 'persistence': 4.424242424242424, 'down': -0.24242424242424243}, 'short': 13.636363636363637, 'signal': 13.878787878787879}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'up': 0.19696969696969696, 'down': -0.40909090909090906, 'persistence': 8.06060606060606}, 'signal': 8.469696969696969, 'short': 11.636363636363637, 'long': 28.363636363636363}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'persistence': 2.606060606060606, 'down': -0.25757575757575757, 'up': 0.23484848484848486}, 'long': 19.303030303030305, 'signal': 4.6060606060606055, 'short': 12.545454545454547}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'down': -0.25757575757575757, 'up': 0.2803030303030303, 'persistence': 6.848484848484849}, 'long': 24.424242424242422, 'short': 14.909090909090908, 'signal': 4.090909090909091}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'persistence': 3.8181818181818183, 'up': 0.3560606060606061, 'down': -0.26515151515151514}, 'long': 23.636363636363637, 'signal': 10.530303030303031, 'short': 9.818181818181818}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
multiprocessing.pool.RemoteTraceback: <br />
"""<br />
Traceback (most recent call last):<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 353, in _make_request<br />
    httplib_response = conn.getresponse(buffering=True)<br />
TypeError: getresponse() got an unexpected keyword argument 'buffering'<br />
<br />
During handling of the above exception, another exception occurred:<br />
<br />
Traceback (most recent call last):<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 518, in urlopen<br />
    body=body, headers=headers)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 355, in _make_request<br />
    httplib_response = conn.getresponse()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 1331, in getresponse<br />
    response.begin()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 297, in begin<br />
    version, status, reason = self._read_status()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 266, in _read_status<br />
    raise RemoteDisconnected("Remote end closed connection without"<br />
http.client.RemoteDisconnected: Remote end closed connection without response<br />
<br />
During handling of the above exception, another exception occurred:<br />
<br />
Traceback (most recent call last):<br />
  File "/usr/local/lib/python3.6/site-packages/requests/adapters.py", line 370, in send<br />
    timeout=timeout<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 564, in urlopen<br />
    _pool=self, _stacktrace=stacktrace)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/util/retry.py", line 245, in increment<br />
    raise six.reraise(type(error), error, _stacktrace)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/packages/six.py", line 309, in reraise<br />
    raise value.with_traceback(tb)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 518, in urlopen<br />
    body=body, headers=headers)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 355, in _make_request<br />
    httplib_response = conn.getresponse()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 1331, in getresponse<br />
    response.begin()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 297, in begin<br />
    version, status, reason = self._read_status()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 266, in _read_status<br />
    raise RemoteDisconnected("Remote end closed connection without"<br />
requests.packages.urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))<br />
<br />
During handling of the above exception, another exception occurred:<br />
<br />
Traceback (most recent call last):<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 119, in worker<br />
    result = (True, func(*args, **kwds))<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 47, in starmapstar<br />
    return list(itertools.starmap(args[0], args[1]))<br />
  File "/home/crypto49er/japonicus/evolution_generations.py", line 53, in bEvaluate<br />
    genconf, Datasets, phenotype, gekkoUrl<br />
  File "/home/crypto49er/japonicus/evaluation/gekko/backtest.py", line 69, in Evaluate<br />
    for Dataset in Datasets<br />
  File "/home/crypto49er/japonicus/evaluation/gekko/backtest.py", line 69, in &lt;listcomp&gt;<br />
    for Dataset in Datasets<br />
  File "/home/crypto49er/japonicus/evaluation/gekko/backtest.py", line 42, in runBacktest<br />
    result = httpPost(url, gekko_config)<br />
  File "/home/crypto49er/japonicus/evaluation/gekko/API.py", line 24, in httpPost<br />
    raise e<br />
  File "/home/crypto49er/japonicus/evaluation/gekko/API.py", line 15, in httpPost<br />
    Request = requests.post(URL, json=data)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 99, in post<br />
    return request('post', url, data=data, json=json, **kwargs)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 49, in request<br />
    response = session.request(method=method, url=url, **kwargs)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 461, in request<br />
    resp = self.send(prep, **send_kwargs)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 573, in send<br />
    r = adapter.send(request, **kwargs)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/adapters.py", line 415, in send<br />
    raise ConnectionError(err, request=request)<br />
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))<br />
"""<br />
<br />
The above exception was the direct cause of the following exception:<br />
<br />
Traceback (most recent call last):<br />
  File "japonicus.py", line 171, in &lt;module&gt;<br />
    launchJaponicus(parser)<br />
  File "japonicus.py", line 156, in launchJaponicus<br />
    EvaluationMode, settings, options, web=web_server<br />
  File "/home/crypto49er/japonicus/evolution_generations.py", line 185, in gekko_generations<br />
    World.runEPOCH()<br />
  File "/home/crypto49er/japonicus/promoterz/sequence/parallel_world.py", line 13, in world_EPOCH<br />
    LOCALE.run()<br />
  File "/home/crypto49er/japonicus/promoterz/locale.py", line 39, in run<br />
    self.loop(self.World, self)<br />
  File "/home/crypto49er/japonicus/promoterz/sequence/standard_loop.py", line 34, in standard_loop<br />
    locale<br />
  File "/home/crypto49er/japonicus/promoterz/evaluationPool.py", line 77, in evaluatePopulation<br />
    results[A] = results[A].get(timeout=timeout)<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 644, in get<br />
    raise self._value<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 119, in worker<br />
    result = (True, func(*args, **kwds))<br />
  File "/home/crypto49er/japonicus/promoterz/evaluationPool.py", line 46, in evaluateBackend<br />
    fitnesses = P.starmap(self.EvaluationTool, Q)<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 274, in starmap<br />
    return self._map_async(func, iterable, starmapstar, chunksize).get()<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 644, in get<br />
    raise self._value<br />
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))</code></div></div>]]></description>
			<content:encoded><![CDATA[Hi all,<br />
<br />
Just wondering if anyone have success with Gab0's Japonicus genetic algorithmic backtest tool. I'm getting this error message:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>crypto49er@crypto49er:~/gekko&#36; cd ..<br />
crypto49er@crypto49er:~&#36; cd japonicus<br />
crypto49er@crypto49er:~/japonicus&#36; ls<br />
chart.py                  japonicus_options.py  sqlite_scanner.py<br />
chart_web.py              japonicus.py          statistics.py<br />
configIndicators.py       LICENSE               stratego<br />
configStrategies.py       logs                  strategy_parameters<br />
Dockerfile                promoterz             TOMLutils.py<br />
evaluation                __pycache__           utilities<br />
evolution_bayes.py        README.md             version.py<br />
evolution_generations.py  requirements.txt      web.py<br />
gekko_evolution.yml       resultInterface.py<br />
interface.py              Settings.py<br />
crypto49er@crypto49er:~/japonicus&#36; python3.6 japonicus.py -gcw --strat PPO<br />
WEBSERVER MODE<br />
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)<br />
&nbsp;&nbsp;&nbsp;&nbsp;GEKKO<br />
        ██╗ █████╗ ██████╗  ██████╗ ███╗   ██╗██╗ ██████╗██╗   ██╗███████╗<br />
        ██║██╔══██╗██╔══██╗██╔═══██╗████╗  ██║██║██╔════╝██║   ██║██╔════╝<br />
        ██║███████║██████╔╝██║   ██║██╔██╗ ██║██║██║     ██║   ██║███████╗<br />
   ██   ██║██╔══██║██╔═══╝ ██║   ██║██║╚██╗██║██║██║     ██║   ██║╚════██║<br />
   ╚█████╔╝██║  ██║██║     ╚██████╔╝██║ ╚████║██║╚██████╗╚██████╔╝███████║<br />
    ╚════╝ ╚═╝  ╚═╝╚═╝      ╚═════╝ ╚═╝  ╚═══╝╚═╝ ╚═════╝ ╚═════╝ ╚══════╝<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v0.58<br />
<br />
The profits reported here depends on backtest interpreter function; <br />
&nbsp;&nbsp;&nbsp;&nbsp;interpreter v3: <br />
if &lt;backtest profit&gt; &gt; 0: &lt;shown profit&gt; = &lt;backtest profit&gt; - &lt;market profit&gt; <br />
else &lt;shown profit&gt; = &lt;backtest profit&gt; <br />
japonicus.py -gcw --strat PPO<br />
Evolving PPO strategy;<br />
<br />
evaluated parameters ranges:<br />
short                         (6, 18)<br />
<br />
long                          (13, 39)<br />
<br />
signal                        (1, 18)<br />
<br />
thresholds.down               (-0.5, 0.0)<br />
<br />
thresholds.up                 (0.0, 0.5)<br />
<br />
thresholds.persistence        (2, 10)<br />
<br />
<br />
<br />
evolution candlestick dataset 2014-12-01 05:33:00 to 2018-05-03 07:11:00<br />
BTC/USD @gdax<br />
<br />
<br />
<br />
evaluation candlestick dataset 2016-05-18 00:14:00 to 2018-05-03 07:11:00<br />
ETH/USD @gdax<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;======  EPOCH 0/800  ======<br />
Locale1<br />
first unevaluated: 30<br />
0 individues removed due to equality<br />
[30]<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'down': -0.1515151515151515, 'persistence': 5.636363636363637, 'up': 0.36363636363636365}, 'long': 29.939393939393938, 'signal': 5.378787878787879, 'short': 13.818181818181818}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'up': 0.16666666666666666, 'persistence': 4.181818181818182, 'down': -0.26515151515151514}, 'long': 27.575757575757578, 'signal': 3.3181818181818183, 'short': 15.090909090909092}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'down': -0.3181818181818182, 'persistence': 8.424242424242424, 'up': 0.4015151515151515}, 'short': 11.454545454545453, 'long': 20.09090909090909, 'signal': 10.015151515151516}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'down': -0.17424242424242425, 'up': 0.21212121212121213, 'persistence': 6.242424242424242}, 'signal': 17.484848484848484, 'long': 16.939393939393938, 'short': 10.727272727272727}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'persistence': 7.090909090909091, 'up': 0.2878787878787879, 'down': -0.25}, 'signal': 6.409090909090909, 'long': 25.21212121212121, 'short': 16.363636363636363}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'persistence': 4.424242424242424, 'down': -0.32575757575757575, 'up': 0.3712121212121212}, 'long': 35.06060606060606, 'short': 15.454545454545455, 'signal': 8.984848484848484}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'signal': 15.424242424242424, 'long': 23.242424242424242, 'short': 13.272727272727273, 'thresholds': {'up': 0.4015151515151515, 'persistence': 7.212121212121212, 'down': -0.38636363636363635}}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'signal': 14.393939393939394, 'long': 27.96969696969697, 'thresholds': {'up': 0.16666666666666666, 'down': -0.3939393939393939, 'persistence': 5.03030303030303}, 'short': 15.818181818181818}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'signal': 4.090909090909091, 'long': 33.09090909090909, 'thresholds': {'persistence': 2.7272727272727275, 'up': 0.45454545454545453, 'down': -0.36363636363636365}, 'short': 8.727272727272727}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'persistence': 6.0, 'down': -0.26515151515151514, 'up': 0.2878787878787879}, 'short': 8.90909090909091, 'signal': 6.409090909090909, 'long': 28.757575757575758}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'long': 27.575757575757578, 'thresholds': {'up': 0.06060606060606061, 'persistence': 4.424242424242424, 'down': -0.24242424242424243}, 'short': 13.636363636363637, 'signal': 13.878787878787879}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'up': 0.19696969696969696, 'down': -0.40909090909090906, 'persistence': 8.06060606060606}, 'signal': 8.469696969696969, 'short': 11.636363636363637, 'long': 28.363636363636363}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'persistence': 2.606060606060606, 'down': -0.25757575757575757, 'up': 0.23484848484848486}, 'long': 19.303030303030305, 'signal': 4.6060606060606055, 'short': 12.545454545454547}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'down': -0.25757575757575757, 'up': 0.2803030303030303, 'persistence': 6.848484848484849}, 'long': 24.424242424242422, 'short': 14.909090909090908, 'signal': 4.090909090909091}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
Error: config failure<br />
http://localhost:3000/api/backtest<br />
{'gekkoConfig': {'debug': True, 'info': True, 'watch': {'exchange': 'gdax', 'currency': 'USD', 'asset': 'BTC'}, 'paperTrader': {'fee': 0.25, 'feeMaker': 0.15, 'feeTaker': 0.25, 'feeUsing': 'maker', 'slippage': 0.05, 'simulationBalance': {'asset': 1, 'currency': 100}, 'reportRoundtrips': True, 'enabled': True}, 'tradingAdvisor': {'enabled': True, 'method': 'PPO', 'candleSize': 10, 'historySize': 10}, 'PPO': {'thresholds': {'persistence': 3.8181818181818183, 'up': 0.3560606060606061, 'down': -0.26515151515151514}, 'long': 23.636363636363637, 'signal': 10.530303030303031, 'short': 9.818181818181818}, 'backtest': {'daterange': {'from': '2016-04-10 12:12:42', 'to': '2016-07-09 12:12:42'}}, 'performanceAnalyzer': {'riskFreeReturn': 2, 'enabled': True}, 'valid': True}, 'data': {'candleProps': ['id', 'start', 'open', 'high', 'low', 'close', 'vwp', 'volume', 'trades'], 'indicatorResults': True, 'report': True, 'roundtrips': False, 'trades': True}}<br />
multiprocessing.pool.RemoteTraceback: <br />
"""<br />
Traceback (most recent call last):<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 353, in _make_request<br />
    httplib_response = conn.getresponse(buffering=True)<br />
TypeError: getresponse() got an unexpected keyword argument 'buffering'<br />
<br />
During handling of the above exception, another exception occurred:<br />
<br />
Traceback (most recent call last):<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 518, in urlopen<br />
    body=body, headers=headers)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 355, in _make_request<br />
    httplib_response = conn.getresponse()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 1331, in getresponse<br />
    response.begin()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 297, in begin<br />
    version, status, reason = self._read_status()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 266, in _read_status<br />
    raise RemoteDisconnected("Remote end closed connection without"<br />
http.client.RemoteDisconnected: Remote end closed connection without response<br />
<br />
During handling of the above exception, another exception occurred:<br />
<br />
Traceback (most recent call last):<br />
  File "/usr/local/lib/python3.6/site-packages/requests/adapters.py", line 370, in send<br />
    timeout=timeout<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 564, in urlopen<br />
    _pool=self, _stacktrace=stacktrace)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/util/retry.py", line 245, in increment<br />
    raise six.reraise(type(error), error, _stacktrace)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/packages/six.py", line 309, in reraise<br />
    raise value.with_traceback(tb)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 518, in urlopen<br />
    body=body, headers=headers)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 355, in _make_request<br />
    httplib_response = conn.getresponse()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 1331, in getresponse<br />
    response.begin()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 297, in begin<br />
    version, status, reason = self._read_status()<br />
  File "/usr/local/lib/python3.6/http/client.py", line 266, in _read_status<br />
    raise RemoteDisconnected("Remote end closed connection without"<br />
requests.packages.urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))<br />
<br />
During handling of the above exception, another exception occurred:<br />
<br />
Traceback (most recent call last):<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 119, in worker<br />
    result = (True, func(*args, **kwds))<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 47, in starmapstar<br />
    return list(itertools.starmap(args[0], args[1]))<br />
  File "/home/crypto49er/japonicus/evolution_generations.py", line 53, in bEvaluate<br />
    genconf, Datasets, phenotype, gekkoUrl<br />
  File "/home/crypto49er/japonicus/evaluation/gekko/backtest.py", line 69, in Evaluate<br />
    for Dataset in Datasets<br />
  File "/home/crypto49er/japonicus/evaluation/gekko/backtest.py", line 69, in &lt;listcomp&gt;<br />
    for Dataset in Datasets<br />
  File "/home/crypto49er/japonicus/evaluation/gekko/backtest.py", line 42, in runBacktest<br />
    result = httpPost(url, gekko_config)<br />
  File "/home/crypto49er/japonicus/evaluation/gekko/API.py", line 24, in httpPost<br />
    raise e<br />
  File "/home/crypto49er/japonicus/evaluation/gekko/API.py", line 15, in httpPost<br />
    Request = requests.post(URL, json=data)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 99, in post<br />
    return request('post', url, data=data, json=json, **kwargs)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 49, in request<br />
    response = session.request(method=method, url=url, **kwargs)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 461, in request<br />
    resp = self.send(prep, **send_kwargs)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 573, in send<br />
    r = adapter.send(request, **kwargs)<br />
  File "/usr/local/lib/python3.6/site-packages/requests/adapters.py", line 415, in send<br />
    raise ConnectionError(err, request=request)<br />
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))<br />
"""<br />
<br />
The above exception was the direct cause of the following exception:<br />
<br />
Traceback (most recent call last):<br />
  File "japonicus.py", line 171, in &lt;module&gt;<br />
    launchJaponicus(parser)<br />
  File "japonicus.py", line 156, in launchJaponicus<br />
    EvaluationMode, settings, options, web=web_server<br />
  File "/home/crypto49er/japonicus/evolution_generations.py", line 185, in gekko_generations<br />
    World.runEPOCH()<br />
  File "/home/crypto49er/japonicus/promoterz/sequence/parallel_world.py", line 13, in world_EPOCH<br />
    LOCALE.run()<br />
  File "/home/crypto49er/japonicus/promoterz/locale.py", line 39, in run<br />
    self.loop(self.World, self)<br />
  File "/home/crypto49er/japonicus/promoterz/sequence/standard_loop.py", line 34, in standard_loop<br />
    locale<br />
  File "/home/crypto49er/japonicus/promoterz/evaluationPool.py", line 77, in evaluatePopulation<br />
    results[A] = results[A].get(timeout=timeout)<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 644, in get<br />
    raise self._value<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 119, in worker<br />
    result = (True, func(*args, **kwds))<br />
  File "/home/crypto49er/japonicus/promoterz/evaluationPool.py", line 46, in evaluateBackend<br />
    fitnesses = P.starmap(self.EvaluationTool, Q)<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 274, in starmap<br />
    return self._map_async(func, iterable, starmapstar, chunksize).get()<br />
  File "/usr/local/lib/python3.6/multiprocessing/pool.py", line 644, in get<br />
    raise self._value<br />
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Bulk TOML to JSON config converter]]></title>
			<link>https://forum.gekko.wizb.it/thread-57107.html</link>
			<pubDate>Sat, 05 May 2018 10:19:10 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57107.html</guid>
			<description><![CDATA[I've knocked this up because frankly life is too short to change TOML files into JSON and copy/paste them into the gekko config. <br />
<a href="http://gekkowarez.com/gekko-cli-users-its-the-toml-to-json-translator-youve-all-be-waiting-for/" target="_blank" rel="noopener" class="mycode_url">Bulk TOML to JSON config converter</a>]]></description>
			<content:encoded><![CDATA[I've knocked this up because frankly life is too short to change TOML files into JSON and copy/paste them into the gekko config. <br />
<a href="http://gekkowarez.com/gekko-cli-users-its-the-toml-to-json-translator-youve-all-be-waiting-for/" target="_blank" rel="noopener" class="mycode_url">Bulk TOML to JSON config converter</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Bruteforce node app]]></title>
			<link>https://forum.gekko.wizb.it/thread-57099.html</link>
			<pubDate>Fri, 04 May 2018 16:56:53 +0000</pubDate>
			<guid isPermaLink="false">https://forum.gekko.wizb.it/thread-57099.html</guid>
			<description><![CDATA[I really liked the Perl tool xffffffff wrote but it uses sqlite for a few things which caused me issues so I wrote my own bruteforce backtester in node. It's not elegant but it's pretty powerful and runs backtests in parallel across the Gekko API.<br />
<br />
From the read.me:<br />
<br />
<span style="color: #24292e;" class="mycode_color"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">Gekko Warez Bruteforce Backtester</span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">A swiss army nodejs brute force backtester for Gekko trading bot. Saves time so you can spend more time looking good.</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">Here's what you can do:</span></span></span><br />
<ol type="1" class="mycode_list">
<br />
</li>
<li>Set multiple history periods<br />
<br />
</li>
<li>Set multiple candle sizes<br />
<br />
</li>
<li>Set multiple strategies<br />
<br />
</li>
<li>Set multiple exchange and trading pairs<br />
<br />
</li>
<li>Set random ranges for each strategy config<br />
<br />
</li>
<li>Writes all outputs and strategy configs out into a csv so you can review what strat and related settings are going to make you the most cold hard crypto<br />
</li></ol>
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">Installation: (You can install Bruteforce wherever you like)</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">git clone <a href="https://github.com/gekkowarez/bruteforce.git" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0366d6;" class="mycode_color">https://github.com/gekkowarez/bruteforce.git</span></a> cd bruteforce npm install</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">Setup: Open bruteforce.js and setup paths and configs from line 20. Instructions are in the doc. If you keep the resultCsv path the same make a "results" folder in the same place you installed the repo.</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">To run:</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">You must have the Gekko api server running so type the following into a console: node gekko --ui</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">Then type the following to run the bruteforce app: node bruteforce.js</span></span></span><br />
<br />
<br />
<a href="https://github.com/gekkowarez/bruteforce" target="_blank" rel="noopener" class="mycode_url">https://github.com/gekkowarez/bruteforce</a>]]></description>
			<content:encoded><![CDATA[I really liked the Perl tool xffffffff wrote but it uses sqlite for a few things which caused me issues so I wrote my own bruteforce backtester in node. It's not elegant but it's pretty powerful and runs backtests in parallel across the Gekko API.<br />
<br />
From the read.me:<br />
<br />
<span style="color: #24292e;" class="mycode_color"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">Gekko Warez Bruteforce Backtester</span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">A swiss army nodejs brute force backtester for Gekko trading bot. Saves time so you can spend more time looking good.</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">Here's what you can do:</span></span></span><br />
<ol type="1" class="mycode_list">
<br />
</li>
<li>Set multiple history periods<br />
<br />
</li>
<li>Set multiple candle sizes<br />
<br />
</li>
<li>Set multiple strategies<br />
<br />
</li>
<li>Set multiple exchange and trading pairs<br />
<br />
</li>
<li>Set random ranges for each strategy config<br />
<br />
</li>
<li>Writes all outputs and strategy configs out into a csv so you can review what strat and related settings are going to make you the most cold hard crypto<br />
</li></ol>
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">Installation: (You can install Bruteforce wherever you like)</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">git clone <a href="https://github.com/gekkowarez/bruteforce.git" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0366d6;" class="mycode_color">https://github.com/gekkowarez/bruteforce.git</span></a> cd bruteforce npm install</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">Setup: Open bruteforce.js and setup paths and configs from line 20. Instructions are in the doc. If you keep the resultCsv path the same make a "results" folder in the same place you installed the repo.</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">To run:</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">You must have the Gekko api server running so type the following into a console: node gekko --ui</span></span></span><br />
<span style="color: #24292e;" class="mycode_color"><span style="font-size: medium;" class="mycode_size"><span style="font-family: -apple-system, BlinkMacSystemFont,;" class="mycode_font">Then type the following to run the bruteforce app: node bruteforce.js</span></span></span><br />
<br />
<br />
<a href="https://github.com/gekkowarez/bruteforce" target="_blank" rel="noopener" class="mycode_url">https://github.com/gekkowarez/bruteforce</a>]]></content:encoded>
		</item>
	</channel>
</rss>