An open API service indexing awesome lists of open source software.

https://github.com/aminhp/gym-mtsim

A general-purpose, flexible, and easy-to-use simulator alongside an OpenAI Gym trading environment for MetaTrader 5 trading platform (Approved by OpenAI Gym)
https://github.com/aminhp/gym-mtsim

backtesting crypto forex gym-environment metatrader5 openai-gym reinforcement-learning simulator stocks trading trading-algorithm trading-environment

Last synced: about 1 year ago
JSON representation

A general-purpose, flexible, and easy-to-use simulator alongside an OpenAI Gym trading environment for MetaTrader 5 trading platform (Approved by OpenAI Gym)

Awesome Lists containing this project

README

          

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# gym-mtsim: OpenAI Gym - MetaTrader 5 Simulator\n",
"\n",
"`MtSim` is a simulator for the [MetaTrader 5](https://www.metatrader5.com) trading platform alongside an [OpenAI Gym](https://github.com/openai/gym) environment for reinforcement learning-based trading algorithms. `MetaTrader 5` is a **multi-asset** platform that allows trading **Forex**, **Stocks**, **Crypto**, and Futures. It is one of the most popular trading platforms and supports numerous useful features, such as opening demo accounts on various brokers.\n",
"\n",
"The simulator is separated from the Gym environment and can work independently. Although the Gym environment is designed to be suitable for RL frameworks, it is also proper for backtesting and classic analysis.\n",
"\n",
"The goal of this project was to provide a *general-purpose*, *flexible*, and *easy-to-use* library with a focus on *code readability* that enables users to do all parts of the trading process through it from 0 to 100. So, `gym-mtsim` is not just a testing tool or a Gym environment. It is a combination of a **real-world** simulator, a **backtesting** tool with *high detail visualization*, and a **Gym environment** appropriate for RL/classic algorithms.\n",
"\n",
"**Note:** For beginners, it is recommended to check out the [gym-anytrading](https://github.com/AminHP/gym-anytrading) project."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Prerequisites\n",
"\n",
"### Install MetaTrader 5\n",
"Download and install MetaTrader 5 software from [here](https://www.metatrader5.com/en/download).\n",
"\n",
"Open a demo account on any broker. By default, the software opens a demo account automatically after installation.\n",
"\n",
"Explore the software and try to get familiar with it by trading different symbols in both **hedged** and **unhedged** accounts.\n",
"\n",
"### Install gym-mtsim\n",
"\n",
"#### Via PIP\n",
"```bash\n",
"pip install gym-mtsim\n",
"```\n",
"\n",
"#### From Repository\n",
"```bash\n",
"git clone https://github.com/AminHP/gym-mtsim\n",
"cd gym-mtsim\n",
"pip install -e .\n",
"\n",
"## or\n",
"\n",
"pip install --upgrade --no-deps --force-reinstall https://github.com/AminHP/gym-mtsim/archive/main.zip\n",
"```\n",
"\n",
"### Install stable-baselines3\n",
"This package is required to run some examples. Install it from [here](https://github.com/DLR-RM/stable-baselines3#installation)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Components"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1. SymbolInfo\n",
"\n",
"This is a data class that contains the essential properties of a symbol. Try to get fully acquainted with [these properties](https://github.com/AminHP/gym-mtsim/blob/main/gym_mtsim/metatrader/symbol.py) in case they are unfamiliar. There are plenty of resources that provide good explanations."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2. Order\n",
"\n",
"This is another data class that consists of information of an order. Each order has the following properties:\n",
"\n",
"> `id`: A unique number that helps with tracking orders.\n",
">\n",
"> `type`: An enum that specifies the type of the order. It can be either **Buy** or **Sell**.\n",
">\n",
"> `symbol`: The symbol selected for the order.\n",
">\n",
"> `volume`: The volume chose for the order. It can be a multiple of *volume_step* between *volume_min* and *volume_max*. \n",
">\n",
"> `fee`: It is a tricky property. In MetaTrader, there is *no* such concept called fee. Each symbol has bid and ask prices, the difference between which represents the **fee**. Although MetaTrader API provides these bid/ask prices for the recent past, it is not possible to access them for the distant past. Therefore, the **fee** property helps to manage the mentioned difference.\n",
">\n",
"> `entry_time`: The time when the order was placed.\n",
">\n",
"> `entry_price`: The **close** price when the order was placed.\n",
">\n",
"> `exit_time`: The time when the order was closed.\n",
">\n",
"> `exit_price`: The **close** price when the order was closed.\n",
">\n",
"> `profit`: The amount of profit earned by this order so far.\n",
">\n",
"> `margin`: The required amount of margin for this order.\n",
">\n",
"> `closed`: A boolean that specifies whether this order is closed or not."
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3. MtSimulator\n",
"\n",
"This is the core class that simulates the main parts of MetaTrader. Most of its public properties and methods are explained here. But feel free to take a look at the complete [source code](https://github.com/AminHP/gym-mtsim/blob/main/gym_mtsim/simulator/mt_simulator.py).\n",
"\n",
"* Properties:\n",
"\n",
" > `unit`: The unit currency. It is usually *USD*, but it can be anything the broker allows, such as *EUR*.\n",
" >\n",
" > `balance`: The amount of money before taking into account any open positions.\n",
" >\n",
" > `equity`: The amount of money, including the value of any open positions.\n",
" >\n",
" > `margin`: The amount of money which is required for having positions opened.\n",
" >\n",
" > `leverage`: The leverage ratio.\n",
" >\n",
" > `free_margin`: The amount of money that is available to open new positions.\n",
" >\n",
" > `margin_level`: The ratio between **equity** and **margin**.\n",
" >\n",
" > `stop_out_level`: If the **margin_level** drops below **stop_out_level**, the most unprofitable position will be closed automatically by the broker.\n",
" >\n",
" > `hedge`: A boolean that specifies whether hedging is enabled or not.\n",
" >\n",
" > `symbols_info`: A dictionary that contains symbols' information.\n",
" >\n",
" > `symbols_data`: A dictionary that contains symbols' OHLCV data.\n",
" >\n",
" > `orders`: The list of open orders.\n",
" >\n",
" > `closed_orders`: The list of closed orders.\n",
" >\n",
" > `current_time`: The current time of the system.\n",
"\n",
"* Methods:\n",
"\n",
" > `download_data`: Downloads required data from MetaTrader for a list of symbols in a time range. This method can be overridden in order to download data from servers other than MetaTrader. *Note that this method only works on Windows, as the MetaTrader5 Python package is not available on other platforms.*\n",
" >\n",
" > `save_symbols`: Saves the downloaded symbols' data to a file.\n",
" >\n",
" > `load_symbols`: Loads the symbols' data from a file.\n",
" >\n",
" > `tick`: Moves forward in time (by a delta time) and updates orders and other related properties.\n",
" >\n",
" > `create_order`: Creates a **Buy** or **Sell** order and updates related properties.\n",
" >\n",
" > `close_order`: Closes an order and updates related properties.\n",
" >\n",
" > `get_state`: Returns the state of the system. The result is similar to the *Trading tab* and *History tab* of the *Toolbox window* in MetaTrader software."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4. MtEnv\n",
"\n",
"This is the Gym environment that works on top of the *MtSim*. Most of its public properties and methods are explained here. But feel free to take a look at the complete [source code](https://github.com/AminHP/gym-mtsim/blob/main/gym_mtsim/envs/mt_env.py).\n",
"\n",
"* Properties:\n",
"\n",
" > `original_simulator`: An instance of **MtSim** class as a baseline for simulating the system.\n",
" >\n",
" > `simulator`: The current simulator in use. It is a copy of the **original_simulator**.\n",
" >\n",
" > `trading_symbols`: The list of symbols to trade.\n",
" >\n",
" > `time_points`: A list of time points based on which the simulator moves time. The default value is taken from the *pandas DataFrame.Index* of the first symbol in the **trading_symbols** list.\n",
" >\n",
" > `hold_threshold`: A probability threshold that controls holding or placing a new order.\n",
" >\n",
" > `close_threshold`: A probability threshold that controls closing an order.\n",
" >\n",
" > `fee`: A constant number or a callable that takes a *symbol* as input and returns the **fee** based on that.\n",
" >\n",
" > `symbol_max_orders`: Specifies the maximum number of open positions per symbol in hedge trading. \n",
" >\n",
" > `multiprocessing_processes`: Specifies the maximum number of processes used for parallel processing.\n",
" >\n",
" > `prices`: The symbol prices over time. It is used to calculate signal features and render the environment.\n",
" >\n",
" > `signal_features`: The extracted features over time. It is used to generate *Gym observations*.\n",
" >\n",
" > `window_size`: The number of time points (current and previous points) as the length of each observation's features. \n",
" >\n",
" > `features_shape`: The shape of a single observation's features.\n",
" >\n",
" > `action_space`: The *Gym action_space* property. It has a complex structure since **stable-baselines** does not support *Dict* or *2D Box* action spaces. The action space is a 1D vector of size `count(trading_symbols) * (symbol_max_orders + 2)`. For each symbol, two types of actions can be performed, closing previous orders and placing a new order. The former is controlled by the first *symbol_max_orders* elements and the latter is controlled by the last two elements. Therefore, the action for each symbol is ***[probability of closing order 1, probability of closing order 2, ..., probability of closing order symbol_max_orders, probability of holding or creating a new order, volume of the new order]***. The last two elements specify whether to hold or place a new order and the volume of the new order (positive volume indicates buy and negative volume indicates sell). These elements are a number in range (-∞, ∞), but the probability values must be in the range [0, 1]. This is a problem with **stable-baselines** as mentioned earlier. To overcome this problem, it is assumed that the probability values belong to the [logit](https://en.wikipedia.org/wiki/Logit) function. So, applying the [expit](https://en.wikipedia.org/wiki/Expit) function on them gives the desired probability values in the range [0, 1]. This function is applied in the **step** method of the environment.\n",
" >\n",
" > `observation_space`: The *Gym observation_space* property. Each observation contains information about *balance*, *equity*, *margin*, *features*, and *orders*. The **features** is a window on the *signal_features* from index *current_tick - window_size + 1* to *current_tick*. The **orders** is a 3D array. Its first dimension specifies the symbol index in the *trading_symbols* list. The second dimension specifies the order number (each symbol can have more than one open order at the same time in hedge trading). The last dimension has three elements, *entry_price*, *volume*, and *profit* of corresponding order.\n",
" >\n",
" > `history`: Stores the information of all steps.\n",
"\n",
"* Methods:\n",
"\n",
" > `seed`: The typical *Gym seed* method.\n",
" >\n",
" > `reset`: The typical *Gym reset* method.\n",
" >\n",
" > `step`: The typical *Gym step* method.\n",
" >\n",
" > `render`: The typical *Gym render* method. It can render in three modes, **human**, **simple_figure**, and **advanced_figure**.\n",
" >\n",
" > `close`: The typical *Gym close* method.\n",
"\n",
"* Virtual Methods:\n",
"\n",
" > `_get_prices`: It is called in the constructor and calculates symbol **prices**.\n",
" >\n",
" > `_process_data`: It is called in the constructor and calculates **signal_features**.\n",
" >\n",
" > `_calculate_reward`: The reward function for the RL agent."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A Simple Example"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### MtSim"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Create a simulator with custom parameters"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pytz\n",
"from datetime import datetime, timedelta\n",
"from gym_mtsim import MtSimulator, OrderType, Timeframe, FOREX_DATA_PATH\n",
"\n",
"\n",
"sim = MtSimulator(\n",
" unit='USD',\n",
" balance=10000.,\n",
" leverage=100.,\n",
" stop_out_level=0.2,\n",
" hedge=False,\n",
")\n",
"\n",
"if not sim.load_symbols(FOREX_DATA_PATH):\n",
" sim.download_data(\n",
" symbols=['EURUSD', 'GBPCAD', 'GBPUSD', 'USDCAD', 'USDCHF', 'GBPJPY', 'USDJPY'],\n",
" time_range=(\n",
" datetime(2021, 5, 5, tzinfo=pytz.UTC),\n",
" datetime(2021, 9, 5, tzinfo=pytz.UTC)\n",
" ),\n",
" timeframe=Timeframe.D1\n",
" )\n",
" sim.save_symbols(FOREX_DATA_PATH)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Place some orders"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"balance: 10000.0, equity: 10717.58118589908, margin: 3375.480933228619\n",
"free_margin: 7342.1002526704615, margin_level: 3.1751271592500743\n",
"\n"
]
},
{
"data": {
"text/html": [
"

\n",
"\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" Id\n",
" Symbol\n",
" Type\n",
" Volume\n",
" Entry Time\n",
" Entry Price\n",
" Exit Time\n",
" Exit Price\n",
" Exit Balance\n",
" Exit Equity\n",
" Profit\n",
" Margin\n",
" Fee\n",
" Closed\n",
" \n",
" \n",
" \n",
" \n",
" 0\n",
" 2\n",
" USDJPY\n",
" Sell\n",
" 2.0\n",
" 2021-09-01 00:17:52+00:00\n",
" 110.02500\n",
" 2021-09-06 00:17:52+00:00\n",
" 109.71200\n",
" NaN\n",
" NaN\n",
" 552.355257\n",
" 2000.000000\n",
" 0.0100\n",
" False\n",
" \n",
" \n",
" 1\n",
" 1\n",
" GBPCAD\n",
" Buy\n",
" 1.0\n",
" 2021-08-30 00:17:52+00:00\n",
" 1.73389\n",
" 2021-09-06 00:17:52+00:00\n",
" 1.73626\n",
" NaN\n",
" NaN\n",
" 165.225928\n",
" 1375.480933\n",
" 0.0003\n",
" False\n",
" \n",
" \n",
"\n",
"
"
],
"text/plain": [
" Id Symbol Type Volume Entry Time Entry Price \\\n",
"0 2 USDJPY Sell 2.0 2021-09-01 00:17:52+00:00 110.02500 \n",
"1 1 GBPCAD Buy 1.0 2021-08-30 00:17:52+00:00 1.73389 \n",
"\n",
" Exit Time Exit Price Exit Balance Exit Equity \\\n",
"0 2021-09-06 00:17:52+00:00 109.71200 NaN NaN \n",
"1 2021-09-06 00:17:52+00:00 1.73626 NaN NaN \n",
"\n",
" Profit Margin Fee Closed \n",
"0 552.355257 2000.000000 0.0100 False \n",
"1 165.225928 1375.480933 0.0003 False "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sim.current_time = datetime(2021, 8, 30, 0, 17, 52, tzinfo=pytz.UTC)\n",
"\n",
"order1 = sim.create_order(\n",
" order_type=OrderType.Buy,\n",
" symbol='GBPCAD',\n",
" volume=1.,\n",
" fee=0.0003,\n",
")\n",
"\n",
"sim.tick(timedelta(days=2))\n",
"\n",
"order2 = sim.create_order(\n",
" order_type=OrderType.Sell,\n",
" symbol='USDJPY',\n",
" volume=2.,\n",
" fee=0.01,\n",
")\n",
"\n",
"sim.tick(timedelta(days=5))\n",
"\n",
"state = sim.get_state()\n",
"\n",
"print(\n",
" f\"balance: {state['balance']}, equity: {state['equity']}, margin: {state['margin']}\\n\"\n",
" f\"free_margin: {state['free_margin']}, margin_level: {state['margin_level']}\\n\"\n",
")\n",
"state['orders']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Close all orders"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"balance: 10717.58118589908, equity: 10717.58118589908, margin: 0.0\n",
"free_margin: 10717.58118589908, margin_level: inf\n",
"\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" Id\n",
" Symbol\n",
" Type\n",
" Volume\n",
" Entry Time\n",
" Entry Price\n",
" Exit Time\n",
" Exit Price\n",
" Exit Balance\n",
" Exit Equity\n",
" Profit\n",
" Margin\n",
" Fee\n",
" Closed\n",
" \n",
" \n",
" \n",
" \n",
" 0\n",
" 2\n",
" USDJPY\n",
" Sell\n",
" 2.0\n",
" 2021-09-01 00:17:52+00:00\n",
" 110.02500\n",
" 2021-09-06 00:17:52+00:00\n",
" 109.71200\n",
" 10717.581186\n",
" 10717.581186\n",
" 552.355257\n",
" 2000.000000\n",
" 0.0100\n",
" True\n",
" \n",
" \n",
" 1\n",
" 1\n",
" GBPCAD\n",
" Buy\n",
" 1.0\n",
" 2021-08-30 00:17:52+00:00\n",
" 1.73389\n",
" 2021-09-06 00:17:52+00:00\n",
" 1.73626\n",
" 10165.225928\n",
" 10717.581186\n",
" 165.225928\n",
" 1375.480933\n",
" 0.0003\n",
" True\n",
" \n",
" \n",
"\n",
"
"
],
"text/plain": [
" Id Symbol Type Volume Entry Time Entry Price \\\n",
"0 2 USDJPY Sell 2.0 2021-09-01 00:17:52+00:00 110.02500 \n",
"1 1 GBPCAD Buy 1.0 2021-08-30 00:17:52+00:00 1.73389 \n",
"\n",
" Exit Time Exit Price Exit Balance Exit Equity \\\n",
"0 2021-09-06 00:17:52+00:00 109.71200 10717.581186 10717.581186 \n",
"1 2021-09-06 00:17:52+00:00 1.73626 10165.225928 10717.581186 \n",
"\n",
" Profit Margin Fee Closed \n",
"0 552.355257 2000.000000 0.0100 True \n",
"1 165.225928 1375.480933 0.0003 True "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"order1_profit = sim.close_order(order1)\n",
"order2_profit = sim.close_order(order2)\n",
"\n",
"# alternatively:\n",
"# for order in sim.orders:\n",
"# sim.close_order(order)\n",
"\n",
"state = sim.get_state()\n",
"\n",
"print(\n",
" f\"balance: {state['balance']}, equity: {state['equity']}, margin: {state['margin']}\\n\"\n",
" f\"free_margin: {state['free_margin']}, margin_level: {state['margin_level']}\\n\"\n",
")\n",
"state['orders']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### MtEnv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Create an environment"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import gymnasium as gym\n",
"import gym_mtsim\n",
"\n",
"env = gym.make('forex-hedge-v0')\n",
"# env = gym.make('stocks-hedge-v0')\n",
"# env = gym.make('crypto-hedge-v0')\n",
"# env = gym.make('mixed-hedge-v0')\n",
"\n",
"# env = gym.make('forex-unhedge-v0')\n",
"# env = gym.make('stocks-unhedge-v0')\n",
"# env = gym.make('crypto-unhedge-v0')\n",
"# env = gym.make('mixed-unhedge-v0')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* This will create a default environment. There are eight default environments, but it is also possible to create environments with custom parameters."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Create an environment with custom parameters"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import pytz\n",
"from datetime import datetime, timedelta\n",
"import numpy as np\n",
"from gym_mtsim import MtEnv, MtSimulator, FOREX_DATA_PATH\n",
"\n",
"\n",
"sim = MtSimulator(\n",
" unit='USD',\n",
" balance=10000.,\n",
" leverage=100.,\n",
" stop_out_level=0.2,\n",
" hedge=True,\n",
" symbols_filename=FOREX_DATA_PATH\n",
")\n",
"\n",
"env = MtEnv(\n",
" original_simulator=sim,\n",
" trading_symbols=['GBPCAD', 'EURUSD', 'USDJPY'],\n",
" window_size=10,\n",
" # time_points=[desired time points ...],\n",
" hold_threshold=0.5,\n",
" close_threshold=0.5,\n",
" fee=lambda symbol: {\n",
" 'GBPCAD': max(0., np.random.normal(0.0007, 0.00005)),\n",
" 'EURUSD': max(0., np.random.normal(0.0002, 0.00003)),\n",
" 'USDJPY': max(0., np.random.normal(0.02, 0.003)),\n",
" }[symbol],\n",
" symbol_max_orders=2,\n",
" multiprocessing_processes=2\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Print some information"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"env information:\n",
"> prices[GBPCAD].shape: (88, 2)\n",
"> prices[EURUSD].shape: (88, 2)\n",
"> prices[USDJPY].shape: (88, 2)\n",
"> signal_features.shape: (88, 6)\n",
"> features_shape: (10, 6)\n"
]
}
],
"source": [
"print(\"env information:\")\n",
"\n",
"for symbol in env.prices:\n",
" print(f\"> prices[{symbol}].shape:\", env.prices[symbol].shape)\n",
"\n",
"print(\"> signal_features.shape:\", env.signal_features.shape)\n",
"print(\"> features_shape:\", env.features_shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Trade randomly"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"balance: 18179.65219519348, equity: 18179.65219519348, margin: 0.0\n",
"free_margin: 18179.65219519348, margin_level: inf\n",
"step_reward: 0.0\n"
]
}
],
"source": [
"observation = env.reset()\n",
"\n",
"while True:\n",
" action = env.action_space.sample()\n",
" observation, reward, terminated, truncated, info = env.step(action)\n",
" done = terminated or truncated\n",
"\n",
" if done:\n",
" # print(info)\n",
" print(\n",
" f\"balance: {info['balance']}, equity: {info['equity']}, margin: {info['margin']}\\n\"\n",
" f\"free_margin: {info['free_margin']}, margin_level: {info['margin_level']}\\n\"\n",
" f\"step_reward: {info['step_reward']}\"\n",
" )\n",
" break"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Render in *human* mode"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"balance: 18179.65219519348, equity: 18179.65219519348, margin: 0.0\n",
"free_margin: 18179.65219519348, margin_level: inf\n",
"\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" Id\n",
" Symbol\n",
" Type\n",
" Volume\n",
" Entry Time\n",
" Entry Price\n",
" Exit Time\n",
" Exit Price\n",
" Exit Balance\n",
" Exit Equity\n",
" Profit\n",
" Margin\n",
" Fee\n",
" Closed\n",
" \n",
" \n",
" \n",
" \n",
" 0\n",
" 14\n",
" EURUSD\n",
" Buy\n",
" 9.95\n",
" 2021-08-27 00:00:00+00:00\n",
" 1.17955\n",
" 2021-08-31 00:00:00+00:00\n",
" 1.18083\n",
" 18179.652195\n",
" 18179.652195\n",
" 1052.554631\n",
" 11736.522500\n",
" 0.000222\n",
" True\n",
" \n",
" \n",
" 1\n",
" 13\n",
" EURUSD\n",
" Buy\n",
" 0.22\n",
" 2021-08-26 00:00:00+00:00\n",
" 1.17515\n",
" 2021-08-31 00:00:00+00:00\n",
" 1.18083\n",
" 17127.097565\n",
" 18179.652195\n",
" 120.009649\n",
" 258.533000\n",
" 0.000225\n",
" True\n",
" \n",
" \n",
" 2\n",
" 12\n",
" GBPCAD\n",
" Buy\n",
" 7.10\n",
" 2021-08-24 00:00:00+00:00\n",
" 1.72784\n",
" 2021-08-26 00:00:00+00:00\n",
" 1.73770\n",
" 17007.087916\n",
" 17007.087916\n",
" 5140.996853\n",
" 9746.529273\n",
" 0.000675\n",
" True\n",
" \n",
" \n",
" 3\n",
" 11\n",
" EURUSD\n",
" Sell\n",
" 3.33\n",
" 2021-08-20 00:00:00+00:00\n",
" 1.16996\n",
" 2021-08-23 00:00:00+00:00\n",
" 1.17457\n",
" 11866.091062\n",
" 11866.091062\n",
" -1610.650324\n",
" 3895.966800\n",
" 0.000227\n",
" True\n",
" \n",
" \n",
" 4\n",
" 10\n",
" GBPCAD\n",
" Buy\n",
" 6.65\n",
" 2021-07-30 00:00:00+00:00\n",
" 1.73335\n",
" 2021-08-02 00:00:00+00:00\n",
" 1.73577\n",
" 13476.741387\n",
" 13476.741387\n",
" 868.941338\n",
" 9248.130601\n",
" 0.000786\n",
" True\n",
" \n",
" \n",
" 5\n",
" 9\n",
" EURUSD\n",
" Sell\n",
" 0.26\n",
" 2021-07-21 00:00:00+00:00\n",
" 1.17946\n",
" 2021-07-22 00:00:00+00:00\n",
" 1.17707\n",
" 12607.800048\n",
" 12607.800048\n",
" 56.809064\n",
" 306.659600\n",
" 0.000205\n",
" True\n",
" \n",
" \n",
" 6\n",
" 8\n",
" USDJPY\n",
" Buy\n",
" 7.11\n",
" 2021-07-12 00:00:00+00:00\n",
" 110.34900\n",
" 2021-07-16 00:00:00+00:00\n",
" 110.08100\n",
" 12550.990984\n",
" 12550.990984\n",
" -1850.301309\n",
" 7110.000000\n",
" 0.018474\n",
" True\n",
" \n",
" \n",
" 7\n",
" 7\n",
" EURUSD\n",
" Buy\n",
" 4.23\n",
" 2021-07-07 00:00:00+00:00\n",
" 1.17903\n",
" 2021-07-09 00:00:00+00:00\n",
" 1.18774\n",
" 14401.292293\n",
" 14401.292293\n",
" 3618.699910\n",
" 4987.296900\n",
" 0.000155\n",
" True\n",
" \n",
" \n",
" 8\n",
" 6\n",
" GBPCAD\n",
" Sell\n",
" 2.77\n",
" 2021-07-02 00:00:00+00:00\n",
" 1.70511\n",
" 2021-07-05 00:00:00+00:00\n",
" 1.70716\n",
" 10782.592383\n",
" 10782.592383\n",
" -612.337927\n",
" 3831.428119\n",
" 0.000678\n",
" True\n",
" \n",
" \n",
" 9\n",
" 5\n",
" EURUSD\n",
" Sell\n",
" 6.07\n",
" 2021-06-21 00:00:00+00:00\n",
" 1.19185\n",
" 2021-06-22 00:00:00+00:00\n",
" 1.19413\n",
" 11394.930310\n",
" 11394.930310\n",
" -1512.813611\n",
" 7234.529500\n",
" 0.000212\n",
" True\n",
" \n",
" \n",
" 10\n",
" 4\n",
" USDJPY\n",
" Buy\n",
" 4.18\n",
" 2021-06-11 00:00:00+00:00\n",
" 109.68200\n",
" 2021-06-17 00:00:00+00:00\n",
" 110.22100\n",
" 12907.743921\n",
" 12907.743921\n",
" 1980.439673\n",
" 4180.000000\n",
" 0.016785\n",
" True\n",
" \n",
" \n",
" 11\n",
" 3\n",
" GBPCAD\n",
" Buy\n",
" 5.58\n",
" 2021-06-01 00:00:00+00:00\n",
" 1.70755\n",
" 2021-06-02 00:00:00+00:00\n",
" 1.70462\n",
" 10927.304248\n",
" 10927.304248\n",
" -1678.531017\n",
" 7894.516666\n",
" 0.000689\n",
" True\n",
" \n",
" \n",
" 12\n",
" 2\n",
" EURUSD\n",
" Buy\n",
" 2.65\n",
" 2021-05-26 00:00:00+00:00\n",
" 1.21922\n",
" 2021-05-28 00:00:00+00:00\n",
" 1.21896\n",
" 12605.835265\n",
" 12605.835265\n",
" -130.546444\n",
" 3230.933000\n",
" 0.000233\n",
" True\n",
" \n",
" \n",
" 13\n",
" 1\n",
" USDJPY\n",
" Sell\n",
" 6.73\n",
" 2021-05-19 00:00:00+00:00\n",
" 109.22700\n",
" 2021-05-20 00:00:00+00:00\n",
" 108.76700\n",
" 12736.381709\n",
" 12736.381709\n",
" 2736.381709\n",
" 6730.000000\n",
" 0.017759\n",
" True\n",
" \n",
" \n",
"\n",
"
"
],
"text/plain": [
" Id Symbol Type Volume Entry Time Entry Price \\\n",
"0 14 EURUSD Buy 9.95 2021-08-27 00:00:00+00:00 1.17955 \n",
"1 13 EURUSD Buy 0.22 2021-08-26 00:00:00+00:00 1.17515 \n",
"2 12 GBPCAD Buy 7.10 2021-08-24 00:00:00+00:00 1.72784 \n",
"3 11 EURUSD Sell 3.33 2021-08-20 00:00:00+00:00 1.16996 \n",
"4 10 GBPCAD Buy 6.65 2021-07-30 00:00:00+00:00 1.73335 \n",
"5 9 EURUSD Sell 0.26 2021-07-21 00:00:00+00:00 1.17946 \n",
"6 8 USDJPY Buy 7.11 2021-07-12 00:00:00+00:00 110.34900 \n",
"7 7 EURUSD Buy 4.23 2021-07-07 00:00:00+00:00 1.17903 \n",
"8 6 GBPCAD Sell 2.77 2021-07-02 00:00:00+00:00 1.70511 \n",
"9 5 EURUSD Sell 6.07 2021-06-21 00:00:00+00:00 1.19185 \n",
"10 4 USDJPY Buy 4.18 2021-06-11 00:00:00+00:00 109.68200 \n",
"11 3 GBPCAD Buy 5.58 2021-06-01 00:00:00+00:00 1.70755 \n",
"12 2 EURUSD Buy 2.65 2021-05-26 00:00:00+00:00 1.21922 \n",
"13 1 USDJPY Sell 6.73 2021-05-19 00:00:00+00:00 109.22700 \n",
"\n",
" Exit Time Exit Price Exit Balance Exit Equity \\\n",
"0 2021-08-31 00:00:00+00:00 1.18083 18179.652195 18179.652195 \n",
"1 2021-08-31 00:00:00+00:00 1.18083 17127.097565 18179.652195 \n",
"2 2021-08-26 00:00:00+00:00 1.73770 17007.087916 17007.087916 \n",
"3 2021-08-23 00:00:00+00:00 1.17457 11866.091062 11866.091062 \n",
"4 2021-08-02 00:00:00+00:00 1.73577 13476.741387 13476.741387 \n",
"5 2021-07-22 00:00:00+00:00 1.17707 12607.800048 12607.800048 \n",
"6 2021-07-16 00:00:00+00:00 110.08100 12550.990984 12550.990984 \n",
"7 2021-07-09 00:00:00+00:00 1.18774 14401.292293 14401.292293 \n",
"8 2021-07-05 00:00:00+00:00 1.70716 10782.592383 10782.592383 \n",
"9 2021-06-22 00:00:00+00:00 1.19413 11394.930310 11394.930310 \n",
"10 2021-06-17 00:00:00+00:00 110.22100 12907.743921 12907.743921 \n",
"11 2021-06-02 00:00:00+00:00 1.70462 10927.304248 10927.304248 \n",
"12 2021-05-28 00:00:00+00:00 1.21896 12605.835265 12605.835265 \n",
"13 2021-05-20 00:00:00+00:00 108.76700 12736.381709 12736.381709 \n",
"\n",
" Profit Margin Fee Closed \n",
"0 1052.554631 11736.522500 0.000222 True \n",
"1 120.009649 258.533000 0.000225 True \n",
"2 5140.996853 9746.529273 0.000675 True \n",
"3 -1610.650324 3895.966800 0.000227 True \n",
"4 868.941338 9248.130601 0.000786 True \n",
"5 56.809064 306.659600 0.000205 True \n",
"6 -1850.301309 7110.000000 0.018474 True \n",
"7 3618.699910 4987.296900 0.000155 True \n",
"8 -612.337927 3831.428119 0.000678 True \n",
"9 -1512.813611 7234.529500 0.000212 True \n",
"10 1980.439673 4180.000000 0.016785 True \n",
"11 -1678.531017 7894.516666 0.000689 True \n",
"12 -130.546444 3230.933000 0.000233 True \n",
"13 2736.381709 6730.000000 0.017759 True "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"state = env.render()\n",
"\n",
"print(\n",
" f\"balance: {state['balance']}, equity: {state['equity']}, margin: {state['margin']}\\n\"\n",
" f\"free_margin: {state['free_margin']}, margin_level: {state['margin_level']}\\n\"\n",
")\n",
"state['orders']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Render in *simple_figure* mode\n",
"\n",
"* Each *symbol* is illustrated with a separate color.\n",
"* The **green**/**red** triangles show successful **buy**/**sell** actions.\n",
"* The **gray** triangles indicate that the **buy**/**sell** action has encountered an **error**.\n",
"* The **black** vertical bars specify **close** actions."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABQcAAAI1CAYAAABrKEweAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hS9/4H8PeBBMiC7L3jSlxx1q1xxL1btdplx6+37e21e9ne7nU7btftslZbq63a1lbrXlVbbd0jahwxe09CEgIBvr8/yCEhQEISCCT5vJ4nz6OHw+FLAhz48BkcY4yBEEIIIYQQQgghhBDS7QgcvQBCCCGEEEIIIYQQQohjUHCQEEIIIYQQQgghhJBuioKDhBBCCCGEEEIIIYR0UxQcJIQQQgghhBBCCCGkm6LgICGEEEIIIYQQQggh3RQFBwkhhBBCCCGEEEII6aYoOEgIIYQQQgghhBBCSDdFwUFCCCGEEEIIIYQQQropCg4SQgghhBBCCCGEENJNUXCwg0RHR+Ouu+5y9DIIIZ3U77//Do7j8Pvvvzt6KYR0WRkZGeA4DmvXrnX0Ugjp9O666y5ER0c7ehmEdBnd7Ry1du1acByHjIyMNl1/woQJmDBhQptvf926dejTpw9cXV3h7e3d5uMQ0llQcLAJ/kWo8U9gYCCSkpKwc+dORy/Pab3++uuYM2cOgoKCwHEcXnrpJYv77tu3D0lJSfD394e3tzeGDx+OdevWmez32Wef4ZZbbkFkZCQ4jrMYXJ0wYYLJ34z/cXV1Ndq3qqoKjzzyCMLDwyEWixEfH4/PPvusVfc1LS0NS5cuRWBgINzc3NCzZ0+sXLnSaJ+77rrL7Hr69OljtF9qaiqeeuopJCYmwsvLCyEhIZg5cyZOnjxpcrtXrlzBo48+ilGjRkEikTR7srT2fpp7vPM/BQUFLf4uoqOjMWvWLLOXnTx50uwbmD/++APTp09HWFgYJBIJIiMjMXv2bGzYsMFov8ZrcXFxga+vL4YMGYIVK1bg0qVLLa7NHiz9XTmOg0Qi6fD1bNiwAR988IHdbyc/Px/PPPMMkpKS4OXl1WyQUqfT4fPPP0diYiI8PT0RFBSE6dOn4+jRo0b7VVVV4cUXX8S0adPg6+vb7JtdS79zjuMwZcoUo32vX7+Om2++GT4+PnB3d8eYMWNw8ODBVt3fffv2YeLEiZDJZPDy8sKQIUOwceNGo32io6PNrucf//iH0X779+/H3XffjV69esHd3R2xsbG49957kZ+fb3K7e/bswT333IN+/fpBKBQ2+6Ha2vtp7WtRR+Bfq3v27Gn28r179xrW9+OPP3bw6hxj69atGDx4sOG18MUXX4RGo7HqujqdDv/5z38QExMDiUSCAQMG4Pvvvze77+XLlzFt2jR4enrC19cXt99+O4qLizvtMe2tufcVqampHb6epvgviziOw3fffWd2n9GjR4PjOPTr16+DV9fx6BxF5yhb6K7nqAkTJnSL14nWSk1NxV133YW4uDisWrUKX375paOXRIjduTh6Ac7qlVdeQUxMDBhjKCwsxNq1azFjxgxs27bNYjCkO3v++ecRHByMQYMGYffu3Rb327p1K+bNm4eRI0fipZdeAsdx2LRpE+644w6UlJTg0UcfNez79ttvQ6FQYPjw4WbfpPBWrlyJe++912hbdXU1/vGPfyA5OdmwTavVYurUqTh58iQeeugh9OzZE7t378aDDz6I8vJyPPfccy3ez7Nnz2LChAkICwvD448/Dj8/P2RlZSE7O9tkX7FYjK+++spom0wmM/r/V199hdWrV2PhwoV48MEHIZfL8cUXX2DEiBHYtWsXJk+ebNj32LFj+Oijj5CQkID4+HicPXvW7Brbcj/5x3tj9viGbPPmzVi8eDESExOxYsUK+Pj4ID09HYcPH8aqVauwdOlSo/2nTJmCO+64A4wxyOVynDt3Dt988w0+/fRTvP3223jsscdsvsaWmPu7AoBQKLTr7Y4bNw5KpRIikciwbcOGDUhJScEjjzxi19u+cuUK3n77bfTs2RP9+/fHsWPHLO775JNP4v3338dtt92GBx98EBUVFfjiiy8wfvx4/Pnnnxg+fDgAoKSkBK+88goiIyMxcODAZjMizX15cPLkSXz44YdGz/Hs7GyMHDkSQqEQTz75JDw8PLBmzRokJydj//79GDduXIv3dc2aNbjnnnswZcoUvPHGGxAKhbhy5YrZ53hiYiIef/xxo229evUy+v/TTz+NsrIy3HLLLejZsydu3LiBTz75BL/99hvOnj2L4OBgw74bNmzAxo0bMXjwYISGhlpcY2vvpzWvRR1FIpHg+vXrOH78uOGxwFu/fj0kEglqa2sdsjYAiIqKglKpNPliyR527tyJefPmYcKECfj4449x4cIFvPbaaygqKrLqS6uVK1firbfewn333Ydhw4bh119/xdKlS8FxHJYsWWLYLycnB+PGjYNMJsMbb7yBqqoqvPvuu7hw4QKOHz9u9JrSWY7ZEcLDw/Hmm2+abG/uudnRJBIJNmzYgNtuu81oe0ZGBo4ePeqQL60aW7VqFXQ6nd1vh85RdI6yFTpHdS179uxp83V///136HQ6fPjhh+jRo4cNV0WIE2PEyJo1axgAduLECaPtZWVlzNXVlS1durRNx42KimJ33nmnDVbonNLT0xljjBUXFzMA7MUXXzS735QpU1hoaCirra01bKurq2NxcXFswIABRvtmZGQwnU7HGGPMw8OjVb+/devWMQBs/fr1hm2bNm1iANjq1auN9l24cCGTSCSssLCw2WNqtVrWr18/dtNNN7Gamppm973zzjuZh4dHi+s8efIkUygURttKSkpYQEAAGz16tNH20tJSVllZyRhj7J133mEADL/3xlpzPy093q0VFRXFZs6cafayEydOMABszZo1hm0JCQmsb9++TKVSmezf9PcPgD300EMm+5WUlLCRI0cyAGz79u1tWndbWft37SgzZ85kUVFRdr+dyspKVlpayhhjbPPmzQwAO3jwoMl+dXV1zM3Njd18881G22/cuMEAsH/961+GbbW1tSw/P58xZv6x0pJ77rmHcRzHsrOzDdsefPBB5uLiwlJTUw3bqqurWUREBBs8eHCLx0xPT2dubm5G67Skucd+Y4cOHWJardZkGwC2cuVKo+25ublMrVYzxpr/27bmfjrTY3b8+PGsb9++rHfv3uyRRx4xukypVDKpVMoWLlzIALDNmzfb5Darqqpschx7SEhIYAMHDmR1dXWGbStXrmQcx7HLly83e92cnBzm6upq9Bqp0+nY2LFjWXh4ONNoNIbtDzzwAHNzc2OZmZmGbXv37mUA2BdffNHpjtkR+Mdqa3TkY+3gwYMMAFuwYAFzcXFhxcXFRpe//vrrLCgoiI0ZM6bV98MSnU7X4nsfR6FzlCk6R7Vedz1HteX1rqPwn1PMfd6xt5dffpkBMHl9JaQro7JiK3l7e8PNzQ0uLsbJlu+++y5GjRoFPz8/uLm5YciQIValmpeVleGJJ55A//794enpCalUiunTp+PcuXNG+/GlI5s2bcLrr7+O8PBwSCQSTJo0CdevXzc57t9//40Z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