¿Cómo hacer en python el mismo tamaño de lote de dinero para todos los pares?

 

Hola

Tengo un bot que comercia con todos los pares y me gustaría gastar la misma cantidad de dinero en cada par para el tamaño del lote. ¿Cómo hago esto?

 
Javier Santiago Gaston De Iriarte Cabrera:

hi

I have a bot that trades over all pairs, and would like to spend the same ammount of money over each pair for the lot size. How do I do this?

Este es el foro en español.
Respecto a su pregunta, muestre sus intentos para que le ayudemos a corregir el código
 

hola,

me está dando resultados muy extraños ... unos los abre bien, y en otros usa todo el lotaje ... y no se porqué ... ¿que está mal? (deja muy poco (o nada) nivel de margen)

como ejemplo:


dentro de las definiciones de las ordenes, he añadido esto:


from forex_python.converter import CurrencyRates
            def get_pip_value(symbol, account_currency):
                symbol_1 = symbol[0:3]
                symbol_2 = symbol[3:6]
                c = CurrencyRates()
                return c.convert(symbol_2, account_currency, c.convert(symbol_1, symbol_2, 1))
            def calc_position_size(symbol,stopLoss):
                print("Calculating position size for: ", symbol)
                account = mt5.account_info()
                balance = float(account.balance)
                pip_value = get_pip_value(symbol, account_currency)
                lot_size = (float(balance) * (float(risk)/100)) / (pip_value * stopLoss)
                lot_size = round(lot_size, 2)
                return lot_size

stopLoss=lasttick.bid - tp
calc_position_size(symbol,stopLoss)
lot_size=calc_position_size(symbol,stopLoss)
print("lot_size",lot_size)

como puedo editar esto para que siempre deje nivel de margen para abrir más ordenes?
 
Javier Santiago Gaston De Iriarte Cabrera #:

hola,

me está dando resultados muy extraños ... unos los abre bien, y en otros usa todo el lotaje ... y no se porqué ... ¿que está mal? (deja muy poco (o nada) nivel de margen)

como ejemplo:


dentro de las definiciones de las ordenes, he añadido esto:


como puedo editar esto para que siempre deje nivel de margen para abrir más ordenes?

El problema era que estaba mezclando pips con precio... así que para solucionar esto usé esto:


def pip_calc(open, close):
                if str(open).index('.') >= 3:  # JPY pair
                    multiplier = 0.01
                else:
                    multiplier = 0.0001

                pips = round((open - close) / multiplier)
                print("pips",pips)
                return int(pips)
 
Javier Santiago Gaston De Iriarte Cabrera #:

El problema era que estaba mezclando pips con precio... así que para solucionar esto usé esto:


Justo estaba buscando esto, buen aporte!!

Razón de la queja: