Skip to content

Commit df4f1e2

Browse files
committed
basic examples updated, matplotlib v.2.0.2 req. added
1 parent d6c8115 commit df4f1e2

File tree

13 files changed

+165
-1036
lines changed

13 files changed

+165
-1036
lines changed

README.md

Lines changed: 28 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,28 @@ I have no idea what kind of algorithm and setup will solve it [if any]. Explore
4242

4343
****
4444
### <a name="install"></a>[Installation](#contents)
45-
- Btgym requires: `gym[atari]`, `tensorflow`, `opencv-python`,
46-
`backtrader`, `pandas`, `numpy`, `scipy`, `pyzmq`,
47-
`matplotlib`,`pillow`, `ipython`, `psutil`.
48-
- Clone or copy btgym repository to local disk, cd to it and run: `pip install -e . `
49-
to install package and all dependencies:
50-
```
51-
git clone https://github.com/Kismuz/btgym.git
52-
cd btgym
53-
pip install -e .
54-
```
55-
- To update to latest version:
56-
```
57-
cd btgym
58-
git pull
59-
pip install --upgrade -e .
60-
```
45+
It is highly recommended to run BTGym in designated virtual environment.
46+
47+
Clone or copy btgym repository to local disk, cd to it and run: `pip install -e .` to install package and all dependencies:
48+
49+
git clone https://github.com/Kismuz/btgym.git
50+
51+
cd btgym
52+
53+
pip install -e .
54+
55+
To update to latest version::
56+
57+
cd btgym
58+
59+
git pull
60+
61+
pip install --upgrade -e .
62+
63+
###### Note:
64+
BTGym requres Matplotlib version 2.0.2, downgrade your installation if you have version 2.1:
65+
66+
pip install matplotlib==2.0.2
6167

6268
****
6369
### <a name="start"></a>[Quickstart](#contents)
@@ -71,75 +77,19 @@ MyEnvironment = BTgymEnv(filename='../examples/data/DAT_ASCII_EURUSD_M1_2016.csv
7177
Adding more controls may look like:
7278
```python
7379
from btgym import BTgymEnv
74-
80+
7581
MyEnvironment = BTgymEnv(filename='../examples/data/DAT_ASCII_EURUSD_M1_2016.csv',
76-
episode_len_days=2,
77-
episode_len_hours=23,
78-
episode_len_minutes=55,
82+
episode_duration={'days': 2, 'hours': 23, 'minutes': 55},
7983
drawdown_call=50,
8084
state_shape=(4,20),
8185
port=5555,
8286
verbose=1,
8387
)
84-
85-
```
86-
Same one but registering environment in Gym preferred way:
87-
```python
88-
import gym
89-
from btgym import BTgymEnv
90-
91-
env_params = dict(filename='../examples/data/DAT_ASCII_EURUSD_M1_2016.csv',
92-
episode_len_days=2,
93-
episode_len_hours=23,
94-
episode_len_minutes=55,
95-
drawdown_call=50,
96-
state_shape=(20,4),
97-
port=5555,
98-
verbose=1,
99-
)
100-
101-
gym.envs.register(id='backtrader-v5555', entry_point='btgym:BTgymEnv', kwargs=env_params,)
102-
103-
MyEnvironment = gym.make('backtrader-v5555')
10488
```
10589

106-
Maximum environment flexibility is achieved by explicitly defining and passing `Dataset` and `Cerebro` instances:
107-
```python
108-
from gym import spaces
109-
import backtrader as bt
110-
from btgym import BTgymDataset, BTgymBaseStrategy, BTgymEnv
111-
112-
MyCerebro = bt.Cerebro()
113-
MyCerebro.addstrategy(BTgymBaseStrategy,
114-
state_shape={'raw_state': spaces.Box(low=0,high=1,shape=(20,4))},
115-
skip_frame=5,
116-
state_low=None,
117-
state_high=None,
118-
drawdown_call=50,
119-
)
120-
121-
MyCerebro.broker.setcash(100.0)
122-
MyCerebro.broker.setcommission(commission=0.001)
123-
MyCerebro.addsizer(bt.sizers.SizerFix, stake=10)
124-
MyCerebro.addanalyzer(bt.analyzers.DrawDown)
125-
126-
MyDataset = BTgymDataset(filename='../examples/data/DAT_ASCII_EURUSD_M1_2016.csv',
127-
start_weekdays=[0, 1, 2, 4],
128-
start_00=True,
129-
episode_len_days=0,
130-
episode_len_hours=23,
131-
episode_len_minutes=55,
132-
time_gap_days=0,
133-
time_gap_hours=5,
134-
)
135-
136-
MyEnvironment = BTgymEnv(dataset=MyDataset,
137-
engine=MyCerebro,
138-
port=5555,
139-
verbose=1,
140-
)
141-
```
142-
###### See how-to's in [`examples`](./examples) directory.
90+
###### See more options at [Documentation: Quickstart >>](https://kismuz.github.io/btgym/intro.html#quickstart)
91+
92+
###### and how-to's in [Examples directory >>](./examples).
14393
****
14494
### <a name="description"></a> [General description](#contents)
14595
#### <a name="problem"></a> Problem setting
@@ -227,7 +177,7 @@ Consider a discrete-time finite-horizon partially observable Markov decision pro
227177
****
228178

229179

230-
### <a name="reference"></a> [DOCs and API Reference](https://kismuz.github.io/btgym/)
180+
### <a name="reference"></a> [Documentation and API Reference >>](https://kismuz.github.io/btgym/)
231181

232182
****
233183
### <a name="issues"></a> [Current issues and limitations:](#title)

btgym/rendering/plotter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def run(self):
7272
iplot=False,
7373
figfilename='_tmp_btgym_render.png',
7474
)[0][0]
75-
75+
#fig.canvas.draw()
7676
rgb_string = fig.canvas.tostring_rgb()
7777
rgb_shape = fig.canvas.get_width_height()[::-1] + (3,)
7878
rgb_array = np.fromstring(rgb_string, dtype=np.uint8, sep='')

docs/.doctrees/environment.pickle

1.13 KB
Binary file not shown.

docs/.doctrees/intro.doctree

845 Bytes
Binary file not shown.

docs/_modules/btgym/rendering/plotter.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ <h1>Source code for btgym.rendering.plotter</h1><div class="highlight"><pre>
245245
<span class="n">iplot</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
246246
<span class="n">figfilename</span><span class="o">=</span><span class="s1">&#39;_tmp_btgym_render.png&#39;</span><span class="p">,</span>
247247
<span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
248-
248+
<span class="c1">#fig.canvas.draw()</span>
249249
<span class="n">rgb_string</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">tostring_rgb</span><span class="p">()</span>
250250
<span class="n">rgb_shape</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">get_width_height</span><span class="p">()[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="p">(</span><span class="mi">3</span><span class="p">,)</span>
251251
<span class="n">rgb_array</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">rgb_string</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">uint8</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>

docs/_sources/intro.rst.txt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ I have no idea what kind of algorithm and setup will solve it [if any]. Explore
3030
Installation
3131
------------
3232

33+
It is highly recommended to run BTGym in designated virtual environment.
34+
3335
Clone or copy btgym repository to local disk, cd to it and run: `pip install -e .` to install package and all dependencies::
3436

3537
git clone https://github.com/Kismuz/btgym.git
@@ -46,6 +48,11 @@ To update to latest version::
4648

4749
pip install --upgrade -e .
4850

51+
Note:
52+
BTGym requres Matplotlib version 2.0.2, downgrade your installation if you have version 2.1::
53+
54+
pip install matplotlib==2.0.2
55+
4956
Quickstart
5057
----------
5158

@@ -60,9 +67,7 @@ Adding more controls may look like::
6067
from btgym import BTgymEnv
6168

6269
MyEnvironment = BTgymEnv(filename='../examples/data/DAT_ASCII_EURUSD_M1_2016.csv',
63-
episode_len_days=2,
64-
episode_len_hours=23,
65-
episode_len_minutes=55,
70+
episode_duration={'days': 2, 'hours': 23, 'minutes': 55},
6671
drawdown_call=50,
6772
state_shape=(4,20),
6873
port=5555,
@@ -76,9 +81,7 @@ Same one but registering environment in Gym preferred way::
7681
from btgym import BTgymEnv
7782

7883
env_params = dict(filename='../examples/data/DAT_ASCII_EURUSD_M1_2016.csv',
79-
episode_len_days=2,
80-
episode_len_hours=23,
81-
episode_len_minutes=55,
84+
episode_duration={'days': 2, 'hours': 23, 'minutes': 55},
8285
drawdown_call=50,
8386
state_shape=(20,4),
8487
port=5555,
@@ -94,7 +97,7 @@ Maximum environment flexibility is achieved by explicitly defining and passing `
9497

9598
from gym import spaces
9699
import backtrader as bt
97-
from btgym import BTgymDataset, BTgymStrategy, BTgymEnv
100+
from btgym import BTgymDataset, BTgymBaseStrategy, BTgymEnv
98101

99102
MyCerebro = bt.Cerebro()
100103
MyCerebro.addstrategy(BTgymStrategy,
@@ -113,11 +116,8 @@ Maximum environment flexibility is achieved by explicitly defining and passing `
113116
MyDataset = BTgymDataset(filename='../examples/data/DAT_ASCII_EURUSD_M1_2016.csv',
114117
start_weekdays=[0, 1, 2, 4],
115118
start_00=True,
116-
episode_len_days=0,
117-
episode_len_hours=23,
118-
episode_len_minutes=55,
119-
time_gap_days=0,
120-
time_gap_hours=5,
119+
episode_duration={'days': 0, 'hours': 23, 'minutes': 55},
120+
time_gap={'hours': 5},
121121
)
122122

123123
MyEnvironment = BTgymEnv(dataset=MyDataset,

docs/intro.html

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@
102102
<li class="toctree-l1"><a class="reference internal" href="btgym.html#module-btgym.dataserver">btgym.dataserver module</a></li>
103103
<li class="toctree-l1"><a class="reference internal" href="btgym.html#module-btgym.server">btgym.server module</a></li>
104104
<li class="toctree-l1"><a class="reference internal" href="btgym.html#module-btgym.spaces">btgym.spaces module</a></li>
105-
<li class="toctree-l1"><a class="reference internal" href="btgym.html#module-btgym.strategy">btgym.strategy module</a></li>
105+
<li class="toctree-l1"><a class="reference internal" href="btgym.strategy.html">btgym.strategy package</a></li>
106106
<li class="toctree-l1"><a class="reference internal" href="btgym.monitor.html">btgym.monitor package</a></li>
107107
<li class="toctree-l1"><a class="reference internal" href="btgym.rendering.html">btgym.rendering package</a></li>
108108
</ul>
@@ -196,6 +196,7 @@ <h1>Package Description<a class="headerlink" href="#package-description" title="
196196
</div>
197197
<div class="section" id="installation">
198198
<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1>
199+
<p>It is highly recommended to run BTGym in designated virtual environment.</p>
199200
<p>Clone or copy btgym repository to local disk, cd to it and run: <cite>pip install -e .</cite> to install package and all dependencies:</p>
200201
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">Kismuz</span><span class="o">/</span><span class="n">btgym</span><span class="o">.</span><span class="n">git</span>
201202

@@ -212,6 +213,14 @@ <h1>Installation<a class="headerlink" href="#installation" title="Permalink to t
212213
<span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="o">-</span><span class="n">e</span> <span class="o">.</span>
213214
</pre></div>
214215
</div>
216+
<dl class="docutils">
217+
<dt>Note:</dt>
218+
<dd><p class="first">BTGym requres Matplotlib version 2.0.2, downgrade your installation if you have version 2.1:</p>
219+
<div class="last highlight-default"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">matplotlib</span><span class="o">==</span><span class="mf">2.0</span><span class="o">.</span><span class="mi">2</span>
220+
</pre></div>
221+
</div>
222+
</dd>
223+
</dl>
215224
</div>
216225
<div class="section" id="quickstart">
217226
<h1>Quickstart<a class="headerlink" href="#quickstart" title="Permalink to this headline"></a></h1>
@@ -225,9 +234,7 @@ <h1>Quickstart<a class="headerlink" href="#quickstart" title="Permalink to this
225234
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">btgym</span> <span class="k">import</span> <span class="n">BTgymEnv</span>
226235

227236
<span class="n">MyEnvironment</span> <span class="o">=</span> <span class="n">BTgymEnv</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s1">&#39;../examples/data/DAT_ASCII_EURUSD_M1_2016.csv&#39;</span><span class="p">,</span>
228-
<span class="n">episode_len_days</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
229-
<span class="n">episode_len_hours</span><span class="o">=</span><span class="mi">23</span><span class="p">,</span>
230-
<span class="n">episode_len_minutes</span><span class="o">=</span><span class="mi">55</span><span class="p">,</span>
237+
<span class="n">episode_duration</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;days&#39;</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> <span class="s1">&#39;hours&#39;</span><span class="p">:</span> <span class="mi">23</span><span class="p">,</span> <span class="s1">&#39;minutes&#39;</span><span class="p">:</span> <span class="mi">55</span><span class="p">},</span>
231238
<span class="n">drawdown_call</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span>
232239
<span class="n">state_shape</span><span class="o">=</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">20</span><span class="p">),</span>
233240
<span class="n">port</span><span class="o">=</span><span class="mi">5555</span><span class="p">,</span>
@@ -240,9 +247,7 @@ <h1>Quickstart<a class="headerlink" href="#quickstart" title="Permalink to this
240247
<span class="kn">from</span> <span class="nn">btgym</span> <span class="k">import</span> <span class="n">BTgymEnv</span>
241248

242249
<span class="n">env_params</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s1">&#39;../examples/data/DAT_ASCII_EURUSD_M1_2016.csv&#39;</span><span class="p">,</span>
243-
<span class="n">episode_len_days</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
244-
<span class="n">episode_len_hours</span><span class="o">=</span><span class="mi">23</span><span class="p">,</span>
245-
<span class="n">episode_len_minutes</span><span class="o">=</span><span class="mi">55</span><span class="p">,</span>
250+
<span class="n">episode_duration</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;days&#39;</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> <span class="s1">&#39;hours&#39;</span><span class="p">:</span> <span class="mi">23</span><span class="p">,</span> <span class="s1">&#39;minutes&#39;</span><span class="p">:</span> <span class="mi">55</span><span class="p">},</span>
246251
<span class="n">drawdown_call</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span>
247252
<span class="n">state_shape</span><span class="o">=</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span><span class="mi">4</span><span class="p">),</span>
248253
<span class="n">port</span><span class="o">=</span><span class="mi">5555</span><span class="p">,</span>
@@ -257,7 +262,7 @@ <h1>Quickstart<a class="headerlink" href="#quickstart" title="Permalink to this
257262
<p>Maximum environment flexibility is achieved by explicitly defining and passing <cite>Dataset</cite> and <cite>Cerebro</cite> instances:</p>
258263
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">gym</span> <span class="k">import</span> <span class="n">spaces</span>
259264
<span class="kn">import</span> <span class="nn">backtrader</span> <span class="k">as</span> <span class="nn">bt</span>
260-
<span class="kn">from</span> <span class="nn">btgym</span> <span class="k">import</span> <span class="n">BTgymDataset</span><span class="p">,</span> <span class="n">BTgymStrategy</span><span class="p">,</span> <span class="n">BTgymEnv</span>
265+
<span class="kn">from</span> <span class="nn">btgym</span> <span class="k">import</span> <span class="n">BTgymDataset</span><span class="p">,</span> <span class="n">BTgymBaseStrategy</span><span class="p">,</span> <span class="n">BTgymEnv</span>
261266

262267
<span class="n">MyCerebro</span> <span class="o">=</span> <span class="n">bt</span><span class="o">.</span><span class="n">Cerebro</span><span class="p">()</span>
263268
<span class="n">MyCerebro</span><span class="o">.</span><span class="n">addstrategy</span><span class="p">(</span><span class="n">BTgymStrategy</span><span class="p">,</span>
@@ -276,11 +281,8 @@ <h1>Quickstart<a class="headerlink" href="#quickstart" title="Permalink to this
276281
<span class="n">MyDataset</span> <span class="o">=</span> <span class="n">BTgymDataset</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s1">&#39;../examples/data/DAT_ASCII_EURUSD_M1_2016.csv&#39;</span><span class="p">,</span>
277282
<span class="n">start_weekdays</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span>
278283
<span class="n">start_00</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
279-
<span class="n">episode_len_days</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
280-
<span class="n">episode_len_hours</span><span class="o">=</span><span class="mi">23</span><span class="p">,</span>
281-
<span class="n">episode_len_minutes</span><span class="o">=</span><span class="mi">55</span><span class="p">,</span>
282-
<span class="n">time_gap_days</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
283-
<span class="n">time_gap_hours</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
284+
<span class="n">episode_duration</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;days&#39;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="s1">&#39;hours&#39;</span><span class="p">:</span> <span class="mi">23</span><span class="p">,</span> <span class="s1">&#39;minutes&#39;</span><span class="p">:</span> <span class="mi">55</span><span class="p">},</span>
285+
<span class="n">time_gap</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;hours&#39;</span><span class="p">:</span> <span class="mi">5</span><span class="p">},</span>
284286
<span class="p">)</span>
285287

286288
<span class="n">MyEnvironment</span> <span class="o">=</span> <span class="n">BTgymEnv</span><span class="p">(</span><span class="n">dataset</span><span class="o">=</span><span class="n">MyDataset</span><span class="p">,</span>

docs/searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)