Automatice su trading
Su lenguaje
Sus normas

Haga realidad sus ideas de trading con la API de GMI Edge: codifique y automatice sus bots de trading en cualquier lenguaje de programación, incluido Python, C, C++ a C# y más.

Beneficios de los Bots de trading vs. Trading manual

Acción de mercado 24/7

Los bots nunca duermen: capture las oportunidades día y noche, también cuando todos están descansando.

Trading libre de emociones

Elimine el miedo y la codicia; los bots ejecutan su plan sin dudas.

Reacción instantánea a los eventos del mercado

Responda de manera automática a los movimientos de precios, las noticias o a la volatilidad, más rápido que cualquier humano.

Escalabilidad

Gestione estrategias complejas o operaciones de alta frecuencia a una escala que sería imposible realizar de manera manual.

Cómo funciona

Regístrese o inicie sesión en el Área de miembros de GMI

Consiga sus credenciales de la cuenta de trading GMI EDGE

Lea la documentación y comience a escribir su estrategia de trading

Inicie su bot de trading y véalo operar en su nombre

Funciones

Libertad de lenguaje

Desarrolle su bot de trading en cualquier lenguaje de programación: Python, C++, C#, Java, JavaScript, Go y más. Sin restricciones.

Potencial de automatización sin límites

No hay límites en la cantidad ni en la complejidad de los bots: escale desde los bots simples a estrategias avanzadas de múltiples activos y múltiples cuentas.

Compatibilidad en diversas plataformas

Utilice la API de Windows, Mac, Linux, o incluso servidores en la nube: ejecute sus bots donde quiera.

Arquitectura transparente y moderna

Sin capas ocultas ni lenguajes de script propietarios. Su código se comunica directamente con nuestra API para una total transparencia y flexibilidad.

FAQ

¿Qué es la API de GMI EDGE?
La API de GMI Edge es una potente herramienta que le permite automatizar sus operaciones mediante la creación de bots en cualquier lenguaje de programación. Conéctese directamente a su cuenta de GMI, recibe datos del mercado en tiempo real y realice operaciones de manera programada.
¿Qué lenguajes de programación puedo utilizer con la API de GMI Edge?
Puede usar cualquier lenguaje de programación. Ya sea que utilice Python, C++, C#, Java, JavaScript u otro lenguaje, la API de GMI Edge se adapta a su flujo de trabajo.
¿Cómo de Segura es la conexión API?
Todas las comunicaciones API están cifradas por su seguridad. Próximamente, implementaremos la autenticación con clave API para mayor seguridad y control.
¿Con qué soporte cuentan los usuarios de API?
Tendrá acceso a soporte técnico dedicado, documentación detallada, ejemplos de código y una comunidad de desarrolladores activa. El soporte prioritario está disponible para usuarios avanzados.
¿Hay algún límite de uso o tasas para la API?
La API de GMI Edge es completamente gratuita para los clientes de GMI Edge, sin tasas o cobros ocultos.
¿Puedo probar mis bots de trading sin arriesgar dinero real?
Sí, GMI Edge ofrece cuentas demo, lo que le permite experimentar y ajustar sus estrategias de forma segura sin poner en riesgo fondos reales.

Ejemplo de código para el bot de trading

import yaml

import httpx

import sys

import ssl

from datetime import datetime, timedelta

import time



def read_config(filename):

with open(filename, "r") as file:

return yaml.safe_load(file)



def check_response(response):

if response.status_code == httpx.codes.OK:

return

error_body = response.json()

error_code = error_body["Code"]

error_message = error_body["Error"]

print(f"[{error_code}] {error_message}")

sys.exit(-1)



def report_position(position):

order_id = position["OrderId"]

amount = position["Amount"]

symbol = position["Symbol"]

order_side = position["OrderSide"]

order_status = position["OrderStatus"]

print(f"#{order_id} {symbol} {amount} {order_side} {order_status}")



def time_to_seconds(time_text):

t = datetime.strptime(time_text, "%M:%S")

delta = timedelta(minutes=t.minute, seconds=t.second)

return delta.total_seconds()



def find_position_profit(orders_state, order_id):

pos_state = next(

order for order in orders_state if order["OrderId"] == order_id

)

return pos_state["Profit"]



if __name__ == "__main__":

print("Reading bot configuration...")

config = read_config("bot-config.yaml")

api_url = config["api-url"]

account = config["account"]

password = config["password"]

symbols = config["symbols"]

pause1 = config["pause1"]

pause1_sec = time_to_seconds(pause1)

pause2 = config["pause2"]

pause2_sec = time_to_seconds(pause2)

print("Done.")


print(f"Connecting to account {account} via {api_url}...")

ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)

ssl_context.load_default_certs()

http = httpx.Client(verify=ssl_context)

login_response = http.post(

api_url + "/login", json={"BotId": account, "Password": password}

)

check_response(login_response)


print("Connected.")

access_token = login_response.json()["AccessToken"]

auth_headers = {"Authorization": "Bearer " + access_token}


try:

while True:

print("Checking my open positions...")

open_pos_response = http.get(

api_url + "/positionlist", headers=auth_headers

)

check_response(open_pos_response)

all_positions = open_pos_response.json()["Orders"]

my_positions = [

p for p in all_positions if p["OrderSource"] == "TRADING_API"

]


if len(my_positions) == 0:

print("No open positions.")

else:

for position in my_positions:

report_position(position)


print("Closing my open positions...")

for position in my_positions:

order_id = position["OrderId"]

close_pos_response = http.post(

api_url + "/closeposition",

json={"OrderId": order_id},

headers=auth_headers,

)

check_response(close_pos_response)


print("Closed.")


for symbol in symbols:

print(f"Checking symbol {symbol}...")

syminfo_response = http.post(

api_url + "/symbolinfo",

json={"Symbol": symbol},

headers=auth_headers,

)

check_response(syminfo_response)

min_lots = syminfo_response.json()["MinTradeAmount"]

lot_size = syminfo_response.json()["ContractSize"]

min_amount = min_lots * lot_size


print(f"Minimum tradable amount for {symbol}: {min_amount}")


print("Opening positions")

pos_ids = []

for symbol in symbols:

buy_pos_response = http.post(

api_url + "/sendorder",

json={

"Symbol": symbol,

"OrderSide": "BUY",

"OrderType": "MARKET",

"Amount": min_amount,

},

headers=auth_headers,

)

check_response(buy_pos_response)

report_position(buy_pos_response.json())

buy_pos_id = buy_pos_response.json()["OrderId"]


sell_pos_response = http.post(

api_url + "/sendorder",

json={

"Symbol": symbol,

"OrderSide": "SELL",

"OrderType": "MARKET",

"Amount": min_amount,

},

headers=auth_headers,

)

check_response(sell_pos_response)

report_position(sell_pos_response.json())

sell_pos_id = sell_pos_response.json()["OrderId"]

pos_ids.append((buy_pos_id, sell_pos_id))


print(f"Wait {pause1}...")

time.sleep(pause1_sec)

print("Checking profit and loss...")

account_state_response = http.get(

api_url + "/accountstate", headers=auth_headers

)

check_response(account_state_response)

balance = account_state_response.json()["AccountState"]["Balance"]

print(f"Account balance: {balance}")

orders_state = account_state_response.json()["OrderStates"]


to_close = []

for buy_pos_id, sell_pos_id in pos_ids:

buy_pos_profit = find_position_profit(orders_state, buy_pos_id)

sell_pos_profit = find_position_profit(

orders_state, sell_pos_id

)

print(f"#{buy_pos_id} PROFIT {buy_pos_profit}")

print(f"#{sell_pos_id} PROFIT {sell_pos_profit}")


if buy_pos_profit <= sell_pos_profit:

to_close.append(buy_pos_id)

else:

to_close.append(sell_pos_id)


print("Close less profitable position in each pair...")


for order_id in to_close:

print(f"Closing #{order_id}...")

close_response = http.post(

api_url + "/closeposition",

json={"OrderId": order_id},

headers=auth_headers,

)

check_response(close_response)

print("Done.")

Explicación

El Código descrito define la secuencia de acciones para el bot de trading:


  • 1. Conectarse a la API de trading de una cuenta específica.
  • 2. Seleccionar los símbolos objetivo.
  • 3. Identificar todas las posiciones abiertas por el bot para estos símbolos.
  • 4. Cerrar todas las posiciones existentes iniciadas por el bot en los símbolos seleccionados.
  • 5. Abrir dos posiciones opuestas para un símbolo:
    • Posición de COMPRA.
    • Posición de VENTA.
  • 6. Después de 1 minuto: cerrar la posición perdedora (según los ByP actuales).
  • 7. Después de 1 minuto: repetir el ciclo completo desde el paso 1.

¡Nuestra nueva plataforma de Comercio GMI Edge!

Diseñada para potenciar su experiencia en el trading, la plataforma de Comercio Edge trae una nueva era de posibilidades al mundo del trading de Forex.

Automatice su trading. Su lenguaje. Sus normas.

Haga realidad sus ideas de trading con la API de GMI Edge: codifique y automatice sus bots de trading en cualquier lenguaje de programación, incluido Python, C, C++ a C# y más.