Code Monkey home page Code Monkey logo

Comments (5)

sadimoodi avatar sadimoodi commented on May 31, 2024 2

Apologies, I was confused, this is not what i wanted to suggest, here is my action space:

 # spaces
        self.action_space = spaces.Box(
            low=-np.inf, high=np.inf,
            shape=(len(self.trading_symbols) * (self.symbol_max_orders + 3),)
        )  # symbol -> [close_order_i(logit), hold(logit), volume]

the third dimension here will be reserved for the leverage and i can deal with it the same way you deal with the volume (take abs then use np.clip to keep the values within a specific range([1-10])
observation space:

self.observation_space = spaces.Dict({
            'balance': spaces.Box(low=-np.inf, high=np.inf, shape=(1,)),
            'equity': spaces.Box(low=-np.inf, high=np.inf, shape=(1,)),
            'margin': spaces.Box(low=-np.inf, high=np.inf, shape=(1,)),
            'features': spaces.Box(low=-np.inf, high=np.inf, shape=self.features_shape),
            'orders': spaces.Box(
                low=-np.inf, high=np.inf,
                shape=(len(self.trading_symbols), self.symbol_max_orders, 4)
            )  # symbol, order_i -> [entry_price, volume, profit]
        })
The 4th dimension here is used to represent leverage on the order level (in addition to entry price, volume and profit).

I have my reservations on the above approach, i will try to come up with another one which includes using Discrete action space instead of Box

from gym-mtsim.

AminHP avatar AminHP commented on May 31, 2024

Hi @sadimoodi,
Before I released this project, I implemented order-level leverage. But then I realized that MetaTrader does not allow it. So I removed it. Anyway, your idea sounds interesting and I think it is worth trying.

from gym-mtsim.

sadimoodi avatar sadimoodi commented on May 31, 2024

Hello @AminHP ,
thank you for your answer, many of the other platforms allow specifying leverage on the order level, which i think is a HUGE advantage and would surely result in a more profitable agent.
Going towards this goal, I included another dimension inside the action space, (say leverage was allowed up to 10x), to be Discrete(10) as follows:

self.observation_space = spaces.Dict({
            'balance': spaces.Box(low=-np.inf, high=np.inf, shape=(1,)),
            'equity': spaces.Box(low=-np.inf, high=np.inf, shape=(1,)),
            'margin': spaces.Box(low=-np.inf, high=np.inf, shape=(1,)),
            'features': spaces.Box(low=-np.inf, high=np.inf, shape=self.features_shape),
            'leverage': spaces.Discrete(10),
            'orders': spaces.Box(
                low=-np.inf, high=np.inf,
                shape=(len(self.trading_symbols), self.symbol_max_orders, 3)
            )  # symbol, order_i -> [entry_price, volume, profit]
        })

from gym-mtsim.

AminHP avatar AminHP commented on May 31, 2024

I don't understand why leverage should be part of the observation space. Every order has its own leverage. So, I think it should only be part of the action space. The effect of leverage is implicitly considered by equity and margin.

from gym-mtsim.

andydoc avatar andydoc commented on May 31, 2024

Some prop firms implement different leverage for different asset classes eg 100 for Forex, 30 for Indices etc so it is probably right to implement it at the order level... Perhaps as a dict at the environment to look up when placing a trade, against the asset class...

from gym-mtsim.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.