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






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.