- Notifications
You must be signed in to change notification settings - Fork24
mymusise/Trading-Gym
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Trading-Gym is a trading environment base on Gym. For those who want to custom everything.
$ pip install trading-gym
Creating features withta-lib
is suggested, that will improve the performance of agent and make it easy to learn. You should installta-lib
before it. Take Ubuntu x64 for example.
$ wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz $ tar -zxvf ta-lib-0.4.0-src.tar.gz$ cd ta-lib/$ ./configure --prefix=$PREFIX$ make install$ export TA_LIBRARY_PATH=$PREFIX/lib$ export TA_INCLUDE_PATH=$PREFIX/include$ pip install TA-Lib
from trading_gym.env import TradeEnvimport randomenv = TradeEnv(data_path='./data/test_exchange.json')done = Falseobs = env.reset()for i in range(500): action = random.sample([0, 1, 2], 1)[0] obs, reward, done, info = env.step(action) env.render() if done: break
from trading_gym.env import TradeEnvfrom stable_baselines.common.vec_env import DummyVecEnvfrom stable_baselines import DQNfrom stable_baselines.deepq.policies import MlpPolicydata_path = './data/fake_sin_data.json'env = TradeEnv(data_path=data_path, unit=50000, data_kwargs={'use_ta': True})env = DummyVecEnv([lambda: env])model = DQN(MlpPolicy, env, verbose=2, learning_rate=1e-5)model.learn(200000)obs = env.reset()for i in range(8000): action, _states = model.predict(obs) obs, rewards, done, info = env.step(action) env.render() if done: break
[ { "open": 10.0, "close": 10.0, "high": 10.0, "low": 10.0, "volume": 10.0, "date": "2019-01-01 09:59" }, { "open": 10.1, "close": 10.1, "high": 10.1, "low": 10.1, "volume": 10.1, "date": "2019-01-01 10:00" }]
Action | Value |
---|---|
PUT | 0 |
HOLD | 1 |
PUSH | 2 |
- native obs: shape=(*, 51, 6), return 51 history data with OCHL
env = TradeEnv(data_path=data_path)
- obs with ta: shape=(*, 10), return obs using talib.
- default feature:
['ema', 'wma', 'sma', 'sar', 'apo', 'macd', 'macdsignal', 'macdhist', 'adosc', 'obv']
- default feature:
env = TradeEnv(data_path=data_path, data_kwargs={'use_ta': True})
def custom_obs_features_func(history, info): close = [obs.close for obs in history] return closeenv = TradeEnv(data_path=data_path, get_obs_features_func=custom_obs_features_func, ops_shape=(1))
def custom_reward_func(exchange): return exchange.profitenv = TradeEnv(data_path=data_path, get_reward_func=custom_reward_func)
Paramexchange
is entity ofExchange
- reward = fixed_profit
- profit = fixed_profit + floating_profit
- floating_profit = (latest_price - avg_price) * unit
- unit = int(nav / buy_in_price)
- avg_price = ((buy_in_price * unit) + charge) / unit
- fixed_profit = SUM([every floating_profit after close position])
About
A Trading environment base on Gym
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published
Uh oh!
There was an error while loading.Please reload this page.
Contributors2
Uh oh!
There was an error while loading.Please reload this page.